blob: 59262593ddd4a50920d0da54894969d9543d431d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#####################
## FindGMP.cmake
## Top contributors (to current version):
## Aina Niemetz, Mathias Preiner
## This file is part of the CVC4 project.
## Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
## in the top-level source directory and their institutional affiliations.
## All rights reserved. See the file COPYING in the top-level source
## directory for licensing information.
##
# Find GMP
# GMP_FOUND - should always be true
# GMP - target for the GMP library
include(deps-helper)
find_path(GMP_INCLUDE_DIR NAMES gmp.h gmpxx.h)
find_library(GMP_LIBRARIES NAMES gmp)
set(GMP_FOUND_SYSTEM FALSE)
if(GMP_INCLUDE_DIR AND GMP_LIBRARIES)
set(GMP_FOUND_SYSTEM TRUE)
function(getversionpart OUTPUT FILENAME DESC)
file(STRINGS ${FILENAME} RES REGEX "^#define __GNU_MP_${DESC}[ \\t]+.*")
string(REGEX MATCH "[0-9]+" RES "${RES}")
set(${OUTPUT}
"${RES}"
PARENT_SCOPE
)
endfunction()
getversionpart(MAJOR "${GMP_INCLUDE_DIR}/gmp.h" "VERSION")
getversionpart(MINOR "${GMP_INCLUDE_DIR}/gmp.h" "VERSION_MINOR")
getversionpart(PATCH "${GMP_INCLUDE_DIR}/gmp.h" "VERSION_PATCHLEVEL")
set(GMP_VERSION
"${MAJOR}.${MINOR}.${PATCH}"
)
check_system_version("GMP")
endif()
if(NOT GMP_FOUND_SYSTEM)
include(ExternalProject)
set(GMP_VERSION "6.2.1")
ExternalProject_Add(
GMP-EP
${COMMON_EP_CONFIG}
URL https://gmplib.org/download/gmp/gmp-${GMP_VERSION}.tar.bz2
URL_HASH SHA1=2dcf34d4a432dbe6cce1475a835d20fe44f75822
CONFIGURE_COMMAND
<SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --enable-cxx --with-pic
--disable-shared --enable-static --host=${TOOLCHAIN_PREFIX}
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libgmp.a
)
set(GMP_INCLUDE_DIR "${DEPS_BASE}/include/")
set(GMP_LIBRARIES "${DEPS_BASE}/lib/libgmp.a")
endif()
set(GMP_FOUND TRUE)
add_library(GMP STATIC IMPORTED GLOBAL)
set_target_properties(GMP PROPERTIES IMPORTED_LOCATION "${GMP_LIBRARIES}")
set_target_properties(
GMP PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GMP_INCLUDE_DIR}"
)
mark_as_advanced(GMP_FOUND)
mark_as_advanced(GMP_FOUND_SYSTEM)
mark_as_advanced(GMP_INCLUDE_DIR)
mark_as_advanced(GMP_LIBRARIES)
if(GMP_FOUND_SYSTEM)
message(STATUS "Found GMP ${GMP_VERSION}: ${GMP_LIBRARIES}")
else()
message(STATUS "Building GMP ${GMP_VERSION}: ${GMP_LIBRARIES}")
add_dependencies(GMP GMP-EP)
endif()
|