Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

563553 views
1
# Pre-requisites about cmake itself
2
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
3
4
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
5
6
if(COMMAND cmake_policy)
7
cmake_policy(SET CMP0005 NEW) # new in 2.6
8
cmake_policy(SET CMP0003 NEW) # new in 2.6
9
if(POLICY CMP0042) # new in 2.8.2
10
cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH enabled by default
11
endif(POLICY CMP0042)
12
endif(COMMAND cmake_policy)
13
set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
14
15
# The project name and the type of project
16
PROJECT(libnormaliz)
17
SET(VERSION_MAJOR 3)
18
SET(VERSION_MINOR 4)
19
SET(VERSION_PATCH 0)
20
SET(VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
21
SET(VERSION ${VERSION_STRING})
22
23
# automatically set lib suffix, disabled for now
24
#IF(UNIX AND NOT APPLE AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version")
25
# IF(CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT LIB_SUFFIX)
26
# SET(LIB_SUFFIX 64)
27
# ENDIF()
28
#ENDIF()
29
30
# PkgConfig
31
SET(prefix ${CMAKE_INSTALL_PREFIX})
32
SET(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
33
SET(includedir ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME})
34
35
IF(${UNIX})
36
SET(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
37
ENDIF(${UNIX})
38
IF(${WIN32})
39
SET(libdir ${CMAKE_INSTALL_PREFIX}/bin)
40
ENDIF(${WIN32})
41
42
#set default build type
43
#IF (NOT CMAKE_BUILD_TYPE) #or IF (NOT DEFINED CMAKE_BUILD_TYPE)
44
# SET(CMAKE_BUILD_TYPE Release)
45
#ENDIF (NOT CMAKE_BUILD_TYPE)
46
47
##### Always full RPATH #####
48
49
# use, i.e. don't skip the full RPATH for the build tree
50
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
51
52
# when building, don't use the install RPATH already
53
# (but later on when installing)
54
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
55
56
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
57
58
# add the automatically determined parts of the RPATH
59
# which point to directories outside the build tree to the install RPATH
60
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
61
62
63
# the RPATH to be used when installing, but only if it's not a system directory
64
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
65
IF("${isSystemDir}" STREQUAL "-1")
66
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
67
ENDIF("${isSystemDir}" STREQUAL "-1")
68
69
##############################
70
71
SET(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") #needed on mac
72
73
74
# compiler flags
75
IF (MSVC)
76
SET (CXX_WARNING_FLAGS "/Wall")
77
SET (CXX_OPTIMIZATION_FLAGS "/O2")
78
ELSE ()
79
SET (CXX_WARNING_FLAGS "-Wall -pedantic")
80
SET (CXX_OPTIMIZATION_FLAGS "-O3")
81
ENDIF ()
82
83
IF (NOT MSVC)
84
include(CheckCXXCompilerFlag)
85
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
86
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
87
if(COMPILER_SUPPORTS_CXX11)
88
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
89
elseif(COMPILER_SUPPORTS_CXX0X)
90
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
91
else()
92
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support.")
93
endif()
94
IF (${APPLE})
95
IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND (COMPILER_SUPPORTS_CXX11 OR COMPILER_SUPPORTS_CXX0X) )
96
# using clang with new c++11 library on Apple
97
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
98
ENDIF ()
99
ENDIF ()
100
ENDIF()
101
102
103
SET (NMZ_OPENMP "YES" CACHE BOOL "use openmp")
104
IF (NMZ_OPENMP)
105
FIND_PACKAGE(OpenMP)
106
IF (NOT OPENMP_FOUND)
107
MESSAGE(STATUS "Not using OpenMP, compiler does not support it")
108
SET (NMZ_OPENMP "NO" CACHE BOOL "use openmp" FORCE)
109
ENDIF(NOT OPENMP_FOUND)
110
ENDIF (NMZ_OPENMP)
111
IF (NMZ_OPENMP)
112
include("${CMAKE_SOURCE_DIR}/cmake/detect_features.cmake")
113
NMZ_CHECK_FOR_EXCEPTION_PTR()
114
IF (NOT HAVE_EXCEPTION_PTR)
115
MESSAGE(STATUS "Not using OpenMP, compiler does not support std::exception_ptr and std::rethrow")
116
SET (NMZ_OPENMP "NO" CACHE BOOL "use openmp" FORCE)
117
ENDIF (NOT HAVE_EXCEPTION_PTR)
118
ENDIF (NMZ_OPENMP)
119
IF (NMZ_OPENMP)
120
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
121
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
122
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
123
ELSE (NMZ_OPENMP)
124
SET (CXX_WARNING_FLAGS "${CXX_WARNING_FLAGS} -Wno-unknown-pragmas")
125
ENDIF (NMZ_OPENMP)
126
127
# add compiler flags
128
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS} ${CXX_OPTIMIZATION_FLAGS}")
129
130
INCLUDE_DIRECTORIES(.)
131
132
# handle static compilation
133
SET (NMZ_BUILD_STATIC "NO" CACHE BOOL "build normaliz statically")
134
IF (NMZ_BUILD_STATIC)
135
IF (${APPLE})
136
IF (CMAKE_COMPILER_IS_GNUCXX)
137
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")
138
ENDIF (CMAKE_COMPILER_IS_GNUCXX)
139
# make it compatible with older Mac versions
140
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7")
141
ELSEIF (${UNIX})
142
SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
143
ELSE ()
144
MESSAGE (FATAL_ERROR "Static linking not (yet) supported on this system")
145
ENDIF ()
146
ENDIF (NMZ_BUILD_STATIC)
147
148
149
# handle usage of SCIP
150
SET (NMZ_SCIP "YES" CACHE BOOL "Use SCIP")
151
FIND_PACKAGE(SCIP) # should always be defined
152
IF(SCIP_FOUND)
153
IF(NMZ_SCIP)
154
SET (NMZ_SCIP_FLAGS "-DNMZ_SCIP")
155
INCLUDE_DIRECTORIES(${SCIP_INCLUDE_DIR})
156
MESSAGE(STATUS "Adding to compiler flags NMZ_SCIP_FLAGS=${NMZ_SCIP_FLAGS}")
157
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NMZ_SCIP_FLAGS}")
158
ENDIF(NMZ_SCIP)
159
ELSE(SCIP_FOUND)
160
SET (SCIP_LIBRARY "")
161
ENDIF(SCIP_FOUND)
162
163
164
# handle use of CoCoALib
165
SET (NMZ_COCOA "YES" CACHE BOOL "Use CoCoALib")
166
FIND_PACKAGE(COCOA)
167
IF(COCOA_FOUND)
168
IF(NMZ_COCOA)
169
SET (NMZ_COCOA_FLAGS "-DNMZ_COCOA -DCoCoA_THREADSAFE_HACK")
170
INCLUDE_DIRECTORIES(${COCOA_INCLUDE_DIR})
171
MESSAGE(STATUS "Adding to compiler flags NMZ_COCOA_FLAGS=${NMZ_CoCOA_FLAGS}")
172
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NMZ_COCOA_FLAGS}")
173
ENDIF(NMZ_COCOA)
174
ELSE(COCOA_FOUND)
175
SET (COCOA_LIBRARY "")
176
ENDIF (COCOA_FOUND)
177
178
# find gmp
179
FIND_PACKAGE(GMP REQUIRED)
180
INCLUDE_DIRECTORIES(${GMP_INCLUDE_DIR})
181
IF (GMP_FOUND)
182
MESSAGE(STATUS "GMP found with include dir: ${GMP_INCLUDE_DIR}")
183
MESSAGE(STATUS "GMP found with lib dir: ${GMP_LIBRARIES_DIR}")
184
MESSAGE(STATUS "GMP found with lib : ${GMP_LIBRARIES}")
185
MESSAGE(STATUS "GMP found with static lib : ${GMP_STATIC_LIBRARIES}")
186
ENDIF()
187
188
FIND_PACKAGE(GMPXX REQUIRED)
189
INCLUDE_DIRECTORIES(${GMPXX_INCLUDE_DIR})
190
IF (GMPXX_FOUND)
191
MESSAGE(STATUS "GMPXX found with include dir: ${GMPXX_INCLUDE_DIR}")
192
MESSAGE(STATUS "GMPXX found with lib : ${GMPXX_LIBRARIES}")
193
MESSAGE(STATUS "GMPXX found with static lib : ${GMPXX_STATIC_LIBRARIES}")
194
ENDIF()
195
196
197
# handle offload to mic (intel xeon phi)
198
SET (NMZ_MIC_OFFLOAD "NO" CACHE BOOL "Use offload to mic (intel xeon phi)")
199
IF (NMZ_MIC_OFFLOAD)
200
IF ( NOT UNIX OR APPLE )
201
MESSAGE (FATAL_ERROR "Offload to mic only supported on Linux")
202
ENDIF()
203
IF ( NMZ_SCIP AND SCIP_FOUND )
204
MESSAGE (FATAL_ERROR "Simultaneous use of offload and scip not supported")
205
ENDIF()
206
207
# find gmp for mic
208
FIND_PACKAGE(MIC_GMP REQUIRED)
209
INCLUDE_DIRECTORIES(${MIC_GMP_INCLUDE_DIR}) #probably not the correct place
210
IF (MIC_GMP_FOUND)
211
MESSAGE(STATUS "MIC_GMP found with include dir: ${MIC_GMP_INCLUDE_DIR}")
212
MESSAGE(STATUS "MIC_GMP found with lib dir: ${MIC_GMP_LIBRARIES_DIR}")
213
MESSAGE(STATUS "MIC_GMP found with lib : ${MIC_GMP_LIBRARIES}")
214
MESSAGE(STATUS "MIC_GMP found with static lib : ${MIC_GMP_STATIC_LIBRARIES}")
215
ENDIF()
216
FIND_PACKAGE(MIC_GMPXX REQUIRED)
217
INCLUDE_DIRECTORIES(${MIC_GMPXX_INCLUDE_DIR}) #probably not the correct place
218
IF (MIC_GMPXX_FOUND)
219
MESSAGE(STATUS "MIC_GMPXX found with include dir: ${MIC_GMPXX_INCLUDE_DIR}")
220
MESSAGE(STATUS "MIC_GMPXX found with lib : ${MIC_GMPXX_LIBRARIES}")
221
MESSAGE(STATUS "MIC_GMPXX found with static lib : ${MIC_GMPXX_STATIC_LIBRARIES}")
222
ENDIF()
223
SET (NMZ_MIC_FLAGS "-offload-option,mic,compiler,\"-L${MIC_GMP_LIBRARIES_DIR} -lgmpxx -lgmp\" -DNMZ_MIC_OFFLOAD")
224
SET (NMZ_MIC_FLAGS "${NMZ_MIC_FLAGS} -wd3218")
225
MESSAGE(STATUS "Adding to compiler flags NMZ_MIC_FLAGS=${NMZ_MIC_FLAGS}")
226
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NMZ_MIC_FLAGS}")
227
ENDIF (NMZ_MIC_OFFLOAD)
228
229
230
ADD_SUBDIRECTORY(libnormaliz)
231
232
# add the normaliz executable
233
ADD_EXECUTABLE (normaliz normaliz.cpp)
234
235
IF (NMZ_BUILD_STATIC)
236
TARGET_LINK_LIBRARIES (normaliz normaliz-static)
237
TARGET_LINK_LIBRARIES (normaliz ${GMPXX_STATIC_LIBRARIES} ${GMP_STATIC_LIBRARIES})
238
#Static start and end
239
SET_TARGET_PROPERTIES(normaliz PROPERTIES LINK_SEARCH_START_STATIC 1)
240
SET_TARGET_PROPERTIES(normaliz PROPERTIES LINK_SEARCH_END_STATIC 1)
241
# Don't try to modify the RPATH
242
SET_TARGET_PROPERTIES(normaliz PROPERTIES INSTALL_RPATH "")
243
ELSE (NMZ_BUILD_STATIC)
244
TARGET_LINK_LIBRARIES (normaliz normaliz-shared)
245
TARGET_LINK_LIBRARIES (normaliz ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
246
ENDIF (NMZ_BUILD_STATIC)
247
248
#link optional libs
249
IF (NMZ_SCIP AND SCIP_FOUND)
250
MESSAGE(STATUS "Adding scip libraries to link ${SCIP_LIBRARY}")
251
TARGET_LINK_LIBRARIES (normaliz ${SCIP_LIBRARY})
252
ENDIF (NMZ_SCIP AND SCIP_FOUND)
253
254
IF (NMZ_COCOA AND COCOA_FOUND)
255
MESSAGE(STATUS "Adding CoCoA libraries to link ${COCOA_LIBRARY}")
256
TARGET_LINK_LIBRARIES (normaliz ${COCOA_LIBRARY})
257
ENDIF (NMZ_COCOA AND COCOA_FOUND)
258
259
INSTALL(TARGETS normaliz DESTINATION bin)
260
261
SET (NMZ_MAX "YES" CACHE BOOL "Compile with maxsimplex")
262
IF (NMZ_MAX)
263
ADD_SUBDIRECTORY(maxsimplex)
264
#TARGET_LINK_LIBRARIES (normaliz maxsimplex)
265
ENDIF (NMZ_MAX)
266
267
#custom make targets
268
ADD_CUSTOM_TARGET (uninstall @echo uninstall package)
269
IF (UNIX)
270
ADD_CUSTOM_COMMAND(
271
COMMENT "uninstall package"
272
COMMAND xargs ARGS rm < install_manifest.txt
273
TARGET uninstall
274
)
275
ELSE(UNIX)
276
ADD_CUSTOM_COMMAND(
277
COMMENT "uninstall only implemented in unix"
278
TARGET uninstall
279
)
280
ENDIF(UNIX)
281
282
ADD_CUSTOM_TARGET (dep @echo install package dependencies)
283
IF (UNIX)
284
ADD_CUSTOM_COMMAND(
285
COMMENT "make package dependencies"
286
COMMAND ./make_dep.sh ARGS -d ../dependencies
287
TARGET dep
288
)
289
ELSE(UNIX)
290
ADD_CUSTOM_COMMAND(
291
COMMENT "make package dependencies only implemented in unix"
292
TARGET dep
293
)
294
ENDIF(UNIX)
295
296
ADD_CUSTOM_TARGET (check)
297
IF (UNIX)
298
ADD_CUSTOM_COMMAND(
299
COMMENT "run tests"
300
COMMAND make --directory=../test/ -f Makefile.classic NORMALIZ=${CMAKE_CURRENT_BINARY_DIR}/normaliz
301
TARGET check
302
DEPENDS normaliz
303
)
304
IF(NMZ_COCOA AND COCOA_FOUND)
305
ADD_CUSTOM_COMMAND(
306
COMMENT "run Int tests"
307
COMMAND make --directory=../test/ -f Makefile.classic testInt NORMALIZ=${CMAKE_CURRENT_BINARY_DIR}/normaliz
308
TARGET check
309
DEPENDS normaliz
310
)
311
ENDIF(NMZ_COCOA AND COCOA_FOUND)
312
ELSE(UNIX)
313
ADD_CUSTOM_COMMAND(
314
COMMENT "check only implemented in unix"
315
TARGET check
316
)
317
ENDIF(UNIX)
318
319