GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
# Pre-requisites about cmake itself1CMAKE_MINIMUM_REQUIRED(VERSION 2.6)23SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")45if(COMMAND cmake_policy)6cmake_policy(SET CMP0005 NEW) # new in 2.67cmake_policy(SET CMP0003 NEW) # new in 2.68if(POLICY CMP0042) # new in 2.8.29cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH enabled by default10endif(POLICY CMP0042)11endif(COMMAND cmake_policy)12set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required1314# The project name and the type of project15PROJECT(libnormaliz)16SET(VERSION_MAJOR 3)17SET(VERSION_MINOR 4)18SET(VERSION_PATCH 0)19SET(VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})20SET(VERSION ${VERSION_STRING})2122# automatically set lib suffix, disabled for now23#IF(UNIX AND NOT APPLE AND NOT CMAKE_CROSSCOMPILING AND NOT EXISTS "/etc/debian_version")24# IF(CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT LIB_SUFFIX)25# SET(LIB_SUFFIX 64)26# ENDIF()27#ENDIF()2829# PkgConfig30SET(prefix ${CMAKE_INSTALL_PREFIX})31SET(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)32SET(includedir ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME})3334IF(${UNIX})35SET(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})36ENDIF(${UNIX})37IF(${WIN32})38SET(libdir ${CMAKE_INSTALL_PREFIX}/bin)39ENDIF(${WIN32})4041#set default build type42#IF (NOT CMAKE_BUILD_TYPE) #or IF (NOT DEFINED CMAKE_BUILD_TYPE)43# SET(CMAKE_BUILD_TYPE Release)44#ENDIF (NOT CMAKE_BUILD_TYPE)4546##### Always full RPATH #####4748# use, i.e. don't skip the full RPATH for the build tree49SET(CMAKE_SKIP_BUILD_RPATH FALSE)5051# when building, don't use the install RPATH already52# (but later on when installing)53SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)5455SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")5657# add the automatically determined parts of the RPATH58# which point to directories outside the build tree to the install RPATH59SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)606162# the RPATH to be used when installing, but only if it's not a system directory63LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)64IF("${isSystemDir}" STREQUAL "-1")65SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")66ENDIF("${isSystemDir}" STREQUAL "-1")6768##############################6970SET(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") #needed on mac717273# compiler flags74IF (MSVC)75SET (CXX_WARNING_FLAGS "/Wall")76SET (CXX_OPTIMIZATION_FLAGS "/O2")77ELSE ()78SET (CXX_WARNING_FLAGS "-Wall -pedantic")79SET (CXX_OPTIMIZATION_FLAGS "-O3")80ENDIF ()8182IF (NOT MSVC)83include(CheckCXXCompilerFlag)84CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)85CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)86if(COMPILER_SUPPORTS_CXX11)87set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")88elseif(COMPILER_SUPPORTS_CXX0X)89set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")90else()91message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support.")92endif()93IF (${APPLE})94IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND (COMPILER_SUPPORTS_CXX11 OR COMPILER_SUPPORTS_CXX0X) )95# using clang with new c++11 library on Apple96set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")97ENDIF ()98ENDIF ()99ENDIF()100101102SET (NMZ_OPENMP "YES" CACHE BOOL "use openmp")103IF (NMZ_OPENMP)104FIND_PACKAGE(OpenMP)105IF (NOT OPENMP_FOUND)106MESSAGE(STATUS "Not using OpenMP, compiler does not support it")107SET (NMZ_OPENMP "NO" CACHE BOOL "use openmp" FORCE)108ENDIF(NOT OPENMP_FOUND)109ENDIF (NMZ_OPENMP)110IF (NMZ_OPENMP)111include("${CMAKE_SOURCE_DIR}/cmake/detect_features.cmake")112NMZ_CHECK_FOR_EXCEPTION_PTR()113IF (NOT HAVE_EXCEPTION_PTR)114MESSAGE(STATUS "Not using OpenMP, compiler does not support std::exception_ptr and std::rethrow")115SET (NMZ_OPENMP "NO" CACHE BOOL "use openmp" FORCE)116ENDIF (NOT HAVE_EXCEPTION_PTR)117ENDIF (NMZ_OPENMP)118IF (NMZ_OPENMP)119SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")120SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")121SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")122ELSE (NMZ_OPENMP)123SET (CXX_WARNING_FLAGS "${CXX_WARNING_FLAGS} -Wno-unknown-pragmas")124ENDIF (NMZ_OPENMP)125126# add compiler flags127SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARNING_FLAGS} ${CXX_OPTIMIZATION_FLAGS}")128129INCLUDE_DIRECTORIES(.)130131# handle static compilation132SET (NMZ_BUILD_STATIC "NO" CACHE BOOL "build normaliz statically")133IF (NMZ_BUILD_STATIC)134IF (${APPLE})135IF (CMAKE_COMPILER_IS_GNUCXX)136SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")137ENDIF (CMAKE_COMPILER_IS_GNUCXX)138# make it compatible with older Mac versions139SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7")140ELSEIF (${UNIX})141SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")142ELSE ()143MESSAGE (FATAL_ERROR "Static linking not (yet) supported on this system")144ENDIF ()145ENDIF (NMZ_BUILD_STATIC)146147148# handle usage of SCIP149SET (NMZ_SCIP "YES" CACHE BOOL "Use SCIP")150FIND_PACKAGE(SCIP) # should always be defined151IF(SCIP_FOUND)152IF(NMZ_SCIP)153SET (NMZ_SCIP_FLAGS "-DNMZ_SCIP")154INCLUDE_DIRECTORIES(${SCIP_INCLUDE_DIR})155MESSAGE(STATUS "Adding to compiler flags NMZ_SCIP_FLAGS=${NMZ_SCIP_FLAGS}")156SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NMZ_SCIP_FLAGS}")157ENDIF(NMZ_SCIP)158ELSE(SCIP_FOUND)159SET (SCIP_LIBRARY "")160ENDIF(SCIP_FOUND)161162163# handle use of CoCoALib164SET (NMZ_COCOA "YES" CACHE BOOL "Use CoCoALib")165FIND_PACKAGE(COCOA)166IF(COCOA_FOUND)167IF(NMZ_COCOA)168SET (NMZ_COCOA_FLAGS "-DNMZ_COCOA -DCoCoA_THREADSAFE_HACK")169INCLUDE_DIRECTORIES(${COCOA_INCLUDE_DIR})170MESSAGE(STATUS "Adding to compiler flags NMZ_COCOA_FLAGS=${NMZ_CoCOA_FLAGS}")171SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NMZ_COCOA_FLAGS}")172ENDIF(NMZ_COCOA)173ELSE(COCOA_FOUND)174SET (COCOA_LIBRARY "")175ENDIF (COCOA_FOUND)176177# find gmp178FIND_PACKAGE(GMP REQUIRED)179INCLUDE_DIRECTORIES(${GMP_INCLUDE_DIR})180IF (GMP_FOUND)181MESSAGE(STATUS "GMP found with include dir: ${GMP_INCLUDE_DIR}")182MESSAGE(STATUS "GMP found with lib dir: ${GMP_LIBRARIES_DIR}")183MESSAGE(STATUS "GMP found with lib : ${GMP_LIBRARIES}")184MESSAGE(STATUS "GMP found with static lib : ${GMP_STATIC_LIBRARIES}")185ENDIF()186187FIND_PACKAGE(GMPXX REQUIRED)188INCLUDE_DIRECTORIES(${GMPXX_INCLUDE_DIR})189IF (GMPXX_FOUND)190MESSAGE(STATUS "GMPXX found with include dir: ${GMPXX_INCLUDE_DIR}")191MESSAGE(STATUS "GMPXX found with lib : ${GMPXX_LIBRARIES}")192MESSAGE(STATUS "GMPXX found with static lib : ${GMPXX_STATIC_LIBRARIES}")193ENDIF()194195196# handle offload to mic (intel xeon phi)197SET (NMZ_MIC_OFFLOAD "NO" CACHE BOOL "Use offload to mic (intel xeon phi)")198IF (NMZ_MIC_OFFLOAD)199IF ( NOT UNIX OR APPLE )200MESSAGE (FATAL_ERROR "Offload to mic only supported on Linux")201ENDIF()202IF ( NMZ_SCIP AND SCIP_FOUND )203MESSAGE (FATAL_ERROR "Simultaneous use of offload and scip not supported")204ENDIF()205206# find gmp for mic207FIND_PACKAGE(MIC_GMP REQUIRED)208INCLUDE_DIRECTORIES(${MIC_GMP_INCLUDE_DIR}) #probably not the correct place209IF (MIC_GMP_FOUND)210MESSAGE(STATUS "MIC_GMP found with include dir: ${MIC_GMP_INCLUDE_DIR}")211MESSAGE(STATUS "MIC_GMP found with lib dir: ${MIC_GMP_LIBRARIES_DIR}")212MESSAGE(STATUS "MIC_GMP found with lib : ${MIC_GMP_LIBRARIES}")213MESSAGE(STATUS "MIC_GMP found with static lib : ${MIC_GMP_STATIC_LIBRARIES}")214ENDIF()215FIND_PACKAGE(MIC_GMPXX REQUIRED)216INCLUDE_DIRECTORIES(${MIC_GMPXX_INCLUDE_DIR}) #probably not the correct place217IF (MIC_GMPXX_FOUND)218MESSAGE(STATUS "MIC_GMPXX found with include dir: ${MIC_GMPXX_INCLUDE_DIR}")219MESSAGE(STATUS "MIC_GMPXX found with lib : ${MIC_GMPXX_LIBRARIES}")220MESSAGE(STATUS "MIC_GMPXX found with static lib : ${MIC_GMPXX_STATIC_LIBRARIES}")221ENDIF()222SET (NMZ_MIC_FLAGS "-offload-option,mic,compiler,\"-L${MIC_GMP_LIBRARIES_DIR} -lgmpxx -lgmp\" -DNMZ_MIC_OFFLOAD")223SET (NMZ_MIC_FLAGS "${NMZ_MIC_FLAGS} -wd3218")224MESSAGE(STATUS "Adding to compiler flags NMZ_MIC_FLAGS=${NMZ_MIC_FLAGS}")225SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NMZ_MIC_FLAGS}")226ENDIF (NMZ_MIC_OFFLOAD)227228229ADD_SUBDIRECTORY(libnormaliz)230231# add the normaliz executable232ADD_EXECUTABLE (normaliz normaliz.cpp)233234IF (NMZ_BUILD_STATIC)235TARGET_LINK_LIBRARIES (normaliz normaliz-static)236TARGET_LINK_LIBRARIES (normaliz ${GMPXX_STATIC_LIBRARIES} ${GMP_STATIC_LIBRARIES})237#Static start and end238SET_TARGET_PROPERTIES(normaliz PROPERTIES LINK_SEARCH_START_STATIC 1)239SET_TARGET_PROPERTIES(normaliz PROPERTIES LINK_SEARCH_END_STATIC 1)240# Don't try to modify the RPATH241SET_TARGET_PROPERTIES(normaliz PROPERTIES INSTALL_RPATH "")242ELSE (NMZ_BUILD_STATIC)243TARGET_LINK_LIBRARIES (normaliz normaliz-shared)244TARGET_LINK_LIBRARIES (normaliz ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})245ENDIF (NMZ_BUILD_STATIC)246247#link optional libs248IF (NMZ_SCIP AND SCIP_FOUND)249MESSAGE(STATUS "Adding scip libraries to link ${SCIP_LIBRARY}")250TARGET_LINK_LIBRARIES (normaliz ${SCIP_LIBRARY})251ENDIF (NMZ_SCIP AND SCIP_FOUND)252253IF (NMZ_COCOA AND COCOA_FOUND)254MESSAGE(STATUS "Adding CoCoA libraries to link ${COCOA_LIBRARY}")255TARGET_LINK_LIBRARIES (normaliz ${COCOA_LIBRARY})256ENDIF (NMZ_COCOA AND COCOA_FOUND)257258INSTALL(TARGETS normaliz DESTINATION bin)259260SET (NMZ_MAX "YES" CACHE BOOL "Compile with maxsimplex")261IF (NMZ_MAX)262ADD_SUBDIRECTORY(maxsimplex)263#TARGET_LINK_LIBRARIES (normaliz maxsimplex)264ENDIF (NMZ_MAX)265266#custom make targets267ADD_CUSTOM_TARGET (uninstall @echo uninstall package)268IF (UNIX)269ADD_CUSTOM_COMMAND(270COMMENT "uninstall package"271COMMAND xargs ARGS rm < install_manifest.txt272TARGET uninstall273)274ELSE(UNIX)275ADD_CUSTOM_COMMAND(276COMMENT "uninstall only implemented in unix"277TARGET uninstall278)279ENDIF(UNIX)280281ADD_CUSTOM_TARGET (dep @echo install package dependencies)282IF (UNIX)283ADD_CUSTOM_COMMAND(284COMMENT "make package dependencies"285COMMAND ./make_dep.sh ARGS -d ../dependencies286TARGET dep287)288ELSE(UNIX)289ADD_CUSTOM_COMMAND(290COMMENT "make package dependencies only implemented in unix"291TARGET dep292)293ENDIF(UNIX)294295ADD_CUSTOM_TARGET (check)296IF (UNIX)297ADD_CUSTOM_COMMAND(298COMMENT "run tests"299COMMAND make --directory=../test/ -f Makefile.classic NORMALIZ=${CMAKE_CURRENT_BINARY_DIR}/normaliz300TARGET check301DEPENDS normaliz302)303IF(NMZ_COCOA AND COCOA_FOUND)304ADD_CUSTOM_COMMAND(305COMMENT "run Int tests"306COMMAND make --directory=../test/ -f Makefile.classic testInt NORMALIZ=${CMAKE_CURRENT_BINARY_DIR}/normaliz307TARGET check308DEPENDS normaliz309)310ENDIF(NMZ_COCOA AND COCOA_FOUND)311ELSE(UNIX)312ADD_CUSTOM_COMMAND(313COMMENT "check only implemented in unix"314TARGET check315)316ENDIF(UNIX)317318319