4
4
# integer (MPI) library written entirely in C.
5
5
#
6
6
7
- cmake_minimum_required (VERSION 3.7)
7
+ cmake_minimum_required (VERSION 3.10)
8
+
8
9
project (tommath VERSION 1.2.0)
9
10
11
+ # package release version
12
+ # bump if re-releasing the same VERSION + patches
13
+ # set to 1 if releasing a new version
14
+ set (PACKAGE_RELEASE_VERSION 1)
15
+
10
16
#-----------------------------------------------------------------------------
11
17
# Include cmake modules
12
18
#-----------------------------------------------------------------------------
@@ -26,74 +32,53 @@ option(BUILD_SHARED_LIBS "Build shared library and only the shared library if \"
26
32
# Basic set
27
33
set (LTM_C_FLAGS -Wall -Wsign-compare -Wextra -Wshadow)
28
34
set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align)
29
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wstrict-prototypes -Wpointer-arith)
30
-
31
- # Do we run the sanitizer?
32
- if (DEFINED ENV{SANITIZER})
33
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all -fno-sanitize=float-divide-by-zero)
34
- endif ()
35
+ set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wstrict-prototypes -Wpointer-arith -Wsystem-headers)
35
36
36
- if (DEFINED ENV{CONV_WARNINGS})
37
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -std=c89 -Wconversion -Wsign-conversion)
38
- if ($ENV{CONV_WARNINGS} EQUAL "strict" )
39
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wc++-compat)
40
- endif ()
41
- else ()
42
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wsystem-headers)
43
- endif ()
44
-
45
- if (DEFINED ENV{COMPILE_DEBUG})
37
+ if (COMPILE_DEBUG)
46
38
set (LTM_C_FLAGS ${LTM_C_FLAGS} -g3)
47
39
endif ()
48
40
49
- if (DEFINED ENV{ COMPILE_SIZE} )
41
+ if (COMPILE_SIZE)
50
42
set (LTM_C_FLAGS ${LTM_C_FLAGS} -Os)
51
43
else ()
52
- if (NOT DEFINED ENV{ IGNORE_SPEED} )
44
+ if (NOT IGNORE_SPEED)
53
45
set (LTM_C_FLAGS ${LTM_C_FLAGS} -O3 -funroll-loops)
54
46
#x86 optimizations [should be valid for any GCC install though]
55
47
set (LTM_C_FLAGS ${LTM_C_FLAGS} -fomit-frame-pointer)
56
48
endif ()
57
- # TODO:
58
- # if(DEFINED ENV{COMPILE_LTO})
59
- # set(LTM_C_FLAGS "${LTM_C_FLAGS} -flto")
60
- # set(LTM_LD_FLAGS "${LTM_LD_FLAGS} -flto")
61
- # #AR = $(subst clang,llvm-ar,$(subst gcc,gcc-ar,$(CC)))
62
- # endif()
49
+ if (COMPILE_LTO)
50
+ set (LTM_C_FLAGS ${LTM_C_FLAGS} -flto)
51
+ set (LTM_LD_FLAGS ${LTM_LD_FLAGS} -flto)
52
+ endif ()
63
53
endif ()
64
54
65
55
# TODO
66
56
# Are the coming three checks really the best way?
67
57
68
58
# What compiler do we have and what are their...uhm... peculiarities
69
59
# TODO: is the check for a C++ compiler necessary?
70
- if ( ( CMAKE_C_COMPILER_ID MATCHES "(C|c?)lang" ) OR (CMAKE_CXX_COMPILER_ID MATCHES "(C|c?)lang" ) )
60
+ if (CMAKE_C_COMPILER_ID MATCHES "(C|c?)lang" )
71
61
set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wno-typedef-redefinition -Wno-tautological-compare -Wno-builtin-requires-header)
72
62
endif ()
73
-
74
- if ( (CMAKE_C_COMPILER_ID MATCHES "mingw" ) OR (CMAKE_CXX_COMPILER_ID MATCHES "mingw" ))
63
+ if (CMAKE_C_COMPILER MATCHES "mingw" )
75
64
set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wno-shadow)
76
65
endif ()
77
66
78
- if (DEFINED ENV{PLATFORM})
79
- if ($ENV{PLATFORM} MATCHES "Darwin" )
80
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wno-nullability-completeness)
81
- endif ()
82
- if ($ENV{PLATFORM} MATCHES "CYGWIN" )
83
- set (LTM_C_FLAGS ${LTM_C_FLAGS} -no -undefined)
84
- endif ()
67
+ if (CMAKE_SYSTEM_NAME MATCHES "Darwin" )
68
+ set (LTM_C_FLAGS ${LTM_C_FLAGS} -Wno-nullability-completeness)
69
+ endif ()
70
+ if (CMAKE_SYSTEM_NAME MATCHES "CYGWIN" )
71
+ set (LTM_C_FLAGS ${LTM_C_FLAGS} -no -undefined)
85
72
endif ()
86
73
87
74
# TODO: coverage (lgcov)
88
75
89
76
# If the user set the environment variables at generate-time, append them
90
77
# in order to allow overriding our defaults.
91
- if (DEFINED ENV{LTM_CFLAGS})
92
- set (LTM_C_FLAGS ${LTM_C_FLAGS} $ENV{LTM_CFLAGS} )
93
- endif ()
94
- if (DEFINED ENV{LTM_LDFLAGS})
95
- set (LTM_LD_FLAGS ${LTM_LD_FLAGS} $ENV{LTM_LDFLAGS} )
96
- endif ()
78
+ # ${LTM_CFLAGS} means the user passed it via sth like:
79
+ # $ cmake -DLTM_CFLAGS="foo"
80
+ set (LTM_C_FLAGS ${LTM_C_FLAGS} ${LTM_CFLAGS} )
81
+ set (LTM_LD_FLAGS ${LTM_LD_FLAGS} ${LTM_LDFLAGS} )
97
82
98
83
#-----------------------------------------------------------------------------
99
84
# library target
@@ -200,8 +185,6 @@ export(PACKAGE ${PROJECT_NAME})
200
185
#---------------------------------------------------------------------------------------
201
186
# Create release packages
202
187
#---------------------------------------------------------------------------------------
203
- # package release version
204
- set (PACKAGE_RELEASE_VERSION 1)
205
188
206
189
# determine distribution and architecture
207
190
find_program (LSB_RELEASE lsb_release)
@@ -231,25 +214,37 @@ message(STATUS "CPack: packages will be generated under ${CPACK_PACKAGE_DIRECTOR
231
214
set (CPACK_PACKAGE_NAME "lib${PROJECT_NAME} " )
232
215
set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION} )
233
216
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "LibTomMath" )
234
- set (CPACK_PACKAGE_VENDOR "LibTomMath" )
217
+ set (CPACK_PACKAGE_DESCRIPTION "A free open source portable number theoretic multiple-precision integer (MPI) library written entirely in C." )
218
+ set (CPACK_PACKAGE_VENDOR "libtom projects" )
219
+ set (CPACK_PACKAGE_HOMEPAGE_URL "https://www.libtom.net/LibTomMath" )
235
220
set (CPACK_PACKAGE_CONTACT
"[email protected] " )
236
221
set (CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR} /LICENSE" )
237
- set (CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME} -${CPACK_PACKAGE_VERSION} -${PACKAGE_RELEASE_VERSION} _${LINUX_DISTRO} -${LINUX_DISTRO_VERSION} _${MACHINE_ARCH} )
222
+ set (PACKAGE_NAME_TRAILER ${CPACK_PACKAGE_VERSION} -${PACKAGE_RELEASE_VERSION} _${LINUX_DISTRO} -${LINUX_DISTRO_VERSION} _${MACHINE_ARCH} )
223
+ set (CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME} -${PACKAGE_NAME_TRAILER} )
238
224
set (CPACK_STRIP_FILES ON )
239
225
240
226
# deb specific CPack config
241
- set (CPACK_DEBIAN_PACKAGE_RELEASE ${PACKAGE_RELEASE_VERSION} )
242
227
set (CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
243
228
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON )
244
- set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://www.libtom.net/LibTomMath" )
245
- set (CPACK_DEBIAN_PACKAGE_SECTION "devel" )
229
+ if (BUILD_SHARED_LIBS )
230
+ set (CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME} 1" )
231
+ set (CPACK_DEBIAN_PACKAGE_SECTION "libs" )
232
+ else ()
233
+ set (CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME} -dev" )
234
+ set (CPACK_DEBIAN_PACKAGE_SECTION "devel" )
235
+ endif ()
236
+ set (CPACK_DEBIAN_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME} -${PACKAGE_NAME_TRAILER} .deb" )
246
237
247
238
# rpm specific CPack config
248
- set (CPACK_RPM_PACKAGE_URL "https://www.libtom.net/LibTomMath" )
249
239
set (CPACK_RPM_PACKAGE_RELEASE ${PACKAGE_RELEASE_VERSION} )
250
240
set (CPACK_RPM_PACKAGE_ARCHITECTURE ${MACHINE_ARCH} )
251
- set (CPACK_RPM_PACKAGE_NAME "lib${PROJECT_NAME} -${PROJECT_VERSION} " )
252
- set (CPACK_RPM_FILE_NAME "lib${PROJECT_NAME} _${PROJECT_VERSION} -${CPACK_RPM_PACKAGE_RELEASE} _${LINUX_DISTRO} -${LINUX_DISTRO_VERSION} _${CPACK_RPM_PACKAGE_ARCHITECTURE} .rpm" )
253
- set (CPACK_RPM_PACKAGE_LICENSE "WTFPL" )
241
+ set (CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME} -${PROJECT_VERSION} " )
242
+ set (CPACK_RPM_FILE_NAME "${CPACK_PACKAGE_NAME} _${PACKAGE_NAME_TRAILER} .rpm" )
243
+ set (CPACK_RPM_PACKAGE_LICENSE "The Unlicense" )
244
+
245
+ # FreeBSD specific CPack config
246
+ set (CPACK_FREEBSD_PACKAGE_MAINTAINER
"[email protected] " )
247
+ set (CPACK_FREEBSD_PACKAGE_ORIGIN "math/libtommath" )
248
+ set (CPACK_FREEBSD_PACKAGE_CATEGORIES "math" )
254
249
255
250
include (CPack)
0 commit comments