|
|
@@ -1,96 +0,0 @@
|
|
|
-if(TARGET gmp::gmp)
|
|
|
- return()
|
|
|
-endif()
|
|
|
-
|
|
|
-# Download precompiled .dll on Windows
|
|
|
-if(WIN32)
|
|
|
- include(gmp_mpfr)
|
|
|
- # Find_package will look for our downloaded lib on Windows, and system-wide on Linux/macOS
|
|
|
- find_package(GMP REQUIRED)
|
|
|
-else()
|
|
|
- message(STATUS "Third-party: creating target 'gmp::gmp'")
|
|
|
-
|
|
|
- # SERIOUSLY !?! CMAKE and configure use transposed definitions of "build" and
|
|
|
- # "host"?
|
|
|
- #
|
|
|
- # https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_NAME.html#variable:CMAKE_SYSTEM_NAME
|
|
|
- # https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html
|
|
|
- #
|
|
|
- # Seems these aren't to be trusted much
|
|
|
- # https://gitlab.kitware.com/cmake/cmake/-/issues/20989
|
|
|
- if(APPLE)
|
|
|
- # https://gmplib.org/list-archives/gmp-discuss/2020-November/006607.html
|
|
|
- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
|
|
- set(gmp_BUILD "x86_64-apple-darwin")
|
|
|
- set(gmp_HOST "arm64-apple-darwin")
|
|
|
- set(gmp_CFLAGS "--target=arm64-apple-darwin")
|
|
|
- set(gmp_LDFLAGS "-arch arm64")
|
|
|
- message(STATUS "GMP Recipe notices building on ${gmp_BUILD} for ${gmp_HOST}")
|
|
|
- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" AND CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
|
|
|
- set(gmp_HOST "x86_64-apple-darwin")
|
|
|
- set(gmp_BUILD "arm64-apple-darwin")
|
|
|
- set(gmp_CFLAGS "--target=x86_64-apple-darwin13.0.0")
|
|
|
- set(gmp_LDFLAGS "")
|
|
|
- message(STATUS "GMP Recipe notices building on ${gmp_HOST} for ${gmp_BUILD}")
|
|
|
- endif()
|
|
|
- endif()
|
|
|
-
|
|
|
- include(FetchContent)
|
|
|
- include(ProcessorCount)
|
|
|
- ProcessorCount(Ncpu)
|
|
|
- include(ExternalProject)
|
|
|
- set(prefix ${FETCHCONTENT_BASE_DIR}/gmp)
|
|
|
- set(gmp_INSTALL ${prefix}/install)
|
|
|
- set(gmp_LIB_DIR ${gmp_INSTALL}/lib)
|
|
|
- set(gmp_LIBRARY
|
|
|
- ${gmp_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmp${CMAKE_STATIC_LIBRARY_SUFFIX}
|
|
|
- ${gmp_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmpxx${CMAKE_STATIC_LIBRARY_SUFFIX}
|
|
|
- )
|
|
|
- set(gmp_INCLUDE_DIR ${gmp_INSTALL}/include)
|
|
|
-
|
|
|
- # Try to use CONFIGURE_HANDLED_BY_BUILD ON to avoid constantly reconfiguring
|
|
|
- if(${CMAKE_VERSION} VERSION_LESS 3.20)
|
|
|
- # CMake < 3.20, do not use any extra option
|
|
|
- set(gmp_ExternalProject_Add_extra_options)
|
|
|
- else()
|
|
|
- # CMake >= 3.20
|
|
|
- set(gmp_ExternalProject_Add_extra_options "CONFIGURE_HANDLED_BY_BUILD;ON")
|
|
|
- endif()
|
|
|
-
|
|
|
- ExternalProject_Add(gmp
|
|
|
- PREFIX ${prefix}
|
|
|
- URL https://github.com/alisw/GMP/archive/refs/tags/v6.2.1.tar.gz
|
|
|
- URL_MD5 f060ad4e762ae550d16f1bb477aadba5
|
|
|
- UPDATE_DISCONNECTED true # need this to avoid constant rebuild
|
|
|
- PATCH_COMMAND
|
|
|
- curl "https://gist.githubusercontent.com/alecjacobson/d34d9307c17d1b853571699b9786e9d1/raw/8d14fc21cb7654f51c2e8df4deb0f82f9d0e8355/gmp-patch" "|" git apply -v
|
|
|
- ${gmp_ExternalProject_Add_extra_options}
|
|
|
- CONFIGURE_COMMAND
|
|
|
- ${CMAKE_COMMAND} -E env
|
|
|
- CFLAGS=${gmp_CFLAGS}
|
|
|
- LDFLAGS=${gmp_LDFLAGS}
|
|
|
- ${prefix}/src/gmp/configure
|
|
|
- --disable-debug --disable-dependency-tracking --enable-cxx --with-pic
|
|
|
- --prefix=${gmp_INSTALL}
|
|
|
- --build=${gmp_BUILD}
|
|
|
- --host=${gmp_HOST}
|
|
|
- --disable-shared
|
|
|
- BUILD_COMMAND make -j${Ncpu}
|
|
|
- INSTALL_COMMAND make -j${Ncpu} install
|
|
|
- INSTALL_DIR ${gmp_INSTALL}
|
|
|
- TEST_COMMAND ""
|
|
|
- BUILD_BYPRODUCTS ${gmp_LIBRARY}
|
|
|
- )
|
|
|
- ExternalProject_Get_Property(gmp SOURCE_DIR)
|
|
|
- set(gmp_LIBRARIES ${gmp_LIBRARY})
|
|
|
- add_library(gmp::gmp INTERFACE IMPORTED GLOBAL)
|
|
|
- file(MAKE_DIRECTORY ${gmp_INCLUDE_DIR}) # avoid race condition
|
|
|
- target_include_directories(gmp::gmp INTERFACE ${gmp_INCLUDE_DIR})
|
|
|
- target_link_libraries(gmp::gmp INTERFACE "${gmp_LIBRARIES}") # need the quotes to expand list
|
|
|
- add_dependencies(gmp::gmp gmp)
|
|
|
-
|
|
|
-endif()
|
|
|
-
|
|
|
-if(NOT TARGET gmp::gmp)
|
|
|
- message(FATAL_ERROR "Creation of target 'gmp::gmp' failed")
|
|
|
-endif()
|