The source code and dockerfile for the GSW2024 AI Lab.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

185 lines
5.0 KiB

include(ExternalProject)
set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/resources)
add_custom_target(resources)
###############
##### Generic resource configuration
###############
if("${CMAKE_GENERATOR}" MATCHES "Make")
set(CMAKE_MAKE_PROGRAM "$(MAKE)")
endif()
# Make sure that libraries from /usr/lib et al are found before OSX frameworks
set(CMAKE_FIND_FRAMEWORK "LAST")
function(print_resource_info name target version)
if(TARGET ${target})
get_target_property(TYPE ${target} TYPE)
if(TYPE STREQUAL "EXECUTABLE")
get_target_property(PATH1 ${target} IMPORTED_LOCATION)
elseif(TYPE STREQUAL "SHARED_LIBRARY")
get_target_property(PATH1 ${target} INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(PATH2 ${target} IMPORTED_LOCATION)
elseif(TYPE STREQUAL "STATIC_LIBRARY")
get_target_property(PATH1 ${target} INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(PATH2 ${target} IMPORTED_LOCATION)
elseif(TYPE STREQUAL "INTERFACE_LIBRARY")
get_target_property(PATH1 ${target} INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(PATH2 ${target} INTERFACE_LINK_LIBRARIES)
endif()
if(PATH1 AND PATH2)
message(STATUS "${name} ${version} was found at ${PATH1} and ${PATH2}")
else()
message(STATUS "${name} ${version} was found at ${PATH1}")
endif()
else()
message(STATUS "${name} was not found.")
endif()
endfunction(print_resource_info)
###############
##### Process resource dependencies
###############
if(USE_GINAC)
set(USE_CLN_NUMBERS ON)
endif()
###############
##### Load resources
#####
##### Note that the resources may have dependencies among each other.
###############
##### GMP / GMPXX
if((NOT FORCE_SHIPPED_RESOURCES) AND (NOT FORCE_SHIPPED_GMP))
load_library(carl GMP 6.1)
load_library(carl GMPXX 6.1)
endif()
if(NOT GMP_FOUND)
set(GMP_VERSION "6.1.2")
include(resources/gmp.cmake)
endif()
print_resource_info("GMP / GMPXX" GMP_SHARED ${GMP_VERSION})
##### Boost
set(BOOST_COMPONENTS "filesystem;system;program_options;regex;unit_test_framework")
set(Boost_USE_DEBUG_RUNTIME OFF)
set(Boost_NO_BOOST_CMAKE ON)
if(NOT FORCE_SHIPPED_RESOURCES)
load_library(carl Boost 1.58 COMPONENTS ${BOOST_COMPONENTS})
endif()
if(NOT Boost_FOUND)
set(Boost_VERSION "1.64.0")
set(Boost_ZIPHASH "36093e4018aecd5b0e31e80457ac5fc1")
include(resources/boost.cmake)
unset(Boost_ZIPHASH)
endif()
print_resource_info("Boost" Boost_SHARED ${Boost_VERSION})
##### Eigen3
if(NOT FORCE_SHIPPED_RESOURCES)
load_library(carl EIGEN3 3.3)
endif()
if(NOT EIGEN3_FOUND)
set(EIGEN3_VERSION "3.3.4")
set(EIGEN3_ZIPHASH "e337acc279874bc6a56da4d973a723fb")
include(resources/eigen3.cmake)
unset(EIGEN3_ZIPHASH)
endif()
print_resource_info("Eigen3" EIGEN3 ${EIGEN3_VERSION})
##### bliss
if(USE_BLISS)
if(NOT FORCE_SHIPPED_RESOURCES)
load_library(carl BLISS 0.73)
endif()
if(NOT BLISS_FOUND)
set(BLISS_VERSION "0.73")
include(resources/bliss.cmake)
endif()
print_resource_info("Bliss" BLISS_SHARED ${BLISS_VERSION})
else()
message(STATUS "Bliss is disabled")
endif()
##### CLN
if(USE_CLN_NUMBERS)
if(NOT FORCE_SHIPPED_RESOURCES)
load_library(carl CLN 1.3)
endif()
if(NOT CLN_FOUND)
set(CLN_VERSION "1.3.4")
include(resources/cln.cmake)
endif()
set_target_properties(CLN_STATIC PROPERTIES LINK_INTERFACE_LIBRARIES "GMP_STATIC")
print_resource_info("CLN" CLN_SHARED ${CLN_VERSION})
else()
message(STATUS "CLN is disabled")
endif()
##### CoCoALib
if(USE_COCOA)
if(NOT FORCE_SHIPPED_RESOURCES)
load_library(carl CoCoA 0.99564)
endif()
if(NOT COCOA_FOUND)
set(COCOA_VERSION "0.99564")
set(COCOA_TGZHASH "1cfc3b6ff549ea01e1bffaf3bc9600a8")
include(resources/cocoa.cmake)
unset(COCOA_TGZHASH)
endif()
print_resource_info("CoCoA" COCOA_SHARED ${COCOA_VERSION})
else()
message(STATUS "CoCoA is disabled")
endif()
##### GiNaC
if(USE_GINAC)
if(NOT FORCE_SHIPPED_RESOURCES)
load_library(carl GINAC 1.6.2)
endif()
if(NOT GINAC_FOUND)
set(GINAC_VERSION "1.7.2")
include(resources/ginac.cmake)
endif()
print_resource_info("GiNaC" GINAC_SHARED ${GINAC_VERSION})
else()
message(STATUS "GiNaC is disabled")
endif()
##### GTest
if(NOT GTEST_FOUND)
set(GTEST_VERSION "1.8.0")
set(GTEST_ZIPHASH "adfafc8512ab65fd3cf7955ef0100ff5")
include(resources/gtest.cmake)
unset(GTEST_ZIPHASH)
endif()
print_resource_info("GTest" GTESTMAIN_STATIC ${GTEST_VERSION})
##### MPFR
IF(USE_MPFR_FLOAT)
load_library(carl MPFR 0.0 REQUIRED)
endif()
##### Z3
if(COMPARE_WITH_Z3)
load_library(carl Z3 4.0)
endif()
##### Doxygen
find_package(Doxygen 1.8.9 QUIET)
if(DOXYGEN_FOUND AND ${CMAKE_VERSION} VERSION_LESS "3.9.0")
add_executable(Doxygen::doxygen IMPORTED GLOBAL)
set_target_properties(Doxygen::doxygen PROPERTIES IMPORTED_LOCATION "${DOXYGEN_EXECUTABLE}")
endif()
if(NOT DOXYGEN_FOUND AND BUILD_DOXYGEN)
set(DOXYGEN_VERSION "1.8.14")
include(resources/doxygen.cmake)
add_custom_target(doxygen-build DEPENDS Doxygen::doxygen Doxygen-EP)
else()
add_custom_target(doxygen-build DEPENDS Doxygen::doxygen)
endif()
print_resource_info("Doxygen" Doxygen::doxygen "${DOXYGEN_VERSION}")