]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | cmake_minimum_required(VERSION 2.8.12) |
2 | ||
3 | project(arb C) | |
4 | ||
5 | set (DEPS mpir mpfr pthreads flint2 gettimeofday) | |
6 | set (mpir_lib gmp mpir) | |
7 | set (mpfr_lib mpfr) | |
8 | set (pthreads_lib pthreads pthread pthreadVC2 pthreadVC3) | |
9 | set (flint2_lib ${LIBRARY_TYPE}_flint flint) | |
10 | set (gettimeofday_lib gettimeofday) | |
11 | ||
12 | set (mpir_header gmp.h) | |
13 | set (mpfr_header mpfr.h) | |
14 | set (pthreads_header pthread.h) | |
15 | set (flint2_header flint/flint.h) | |
16 | set (gettimeofday_header gettimeofday.h) | |
17 | ||
18 | foreach (LIB ${DEPS}) | |
19 | string (TOUPPER ${LIB} LIB_UPPER) | |
20 | find_library(${LIB_UPPER}_LIBRARY NAMES ${${LIB}_lib}) | |
21 | if (NOT ${LIB_UPPER}_LIBRARY) | |
22 | message(FATAL_ERROR "${LIB} library not found.") | |
23 | endif() | |
24 | add_library(${LIB} UNKNOWN IMPORTED) | |
25 | set_property(TARGET ${LIB} PROPERTY IMPORTED_LOCATION ${${LIB_UPPER}_LIBRARY}) | |
26 | message("${LIB} found in ${${LIB_UPPER}_LIBRARY}") | |
27 | endforeach () | |
28 | ||
29 | foreach (LIB ${DEPS}) | |
30 | string(TOUPPER ${LIB} HEADER_PKG) | |
31 | set (HEADER ${${LIB}_header}) | |
32 | find_path(${HEADER_PKG}_INCLUDE_DIR NAMES ${HEADER}) | |
33 | if (NOT ${HEADER_PKG}_INCLUDE_DIR) | |
34 | message(FATAL_ERROR "${HEADER} header not found.") | |
35 | endif() | |
36 | message("${HEADER} found in ${${HEADER_PKG}_INCLUDE_DIR}") | |
37 | set (DEP_INCLUDE_DIRS ${DEP_INCLUDE_DIRS} ${${HEADER_PKG}_INCLUDE_DIR}) | |
38 | endforeach () | |
39 | ||
40 | file(GLOB TEMP "*.h") | |
41 | ||
42 | foreach (TEMP_H ${TEMP}) | |
43 | get_filename_component(FOLDER ${TEMP_H} NAME_WE) | |
44 | set(FOLDERS ${FOLDERS} ${FOLDER}) | |
45 | endforeach() | |
46 | ||
47 | foreach (FOLDER ${FOLDERS}) | |
48 | file(GLOB TEMP "${FOLDER}/*.c") | |
49 | set(SRC ${SRC} ${TEMP}) | |
50 | endforeach () | |
51 | ||
52 | include_directories(BEFORE ${arb_SOURCE_DIR}) | |
53 | include_directories(BEFORE ${DEP_INCLUDE_DIRS}) | |
54 | ||
55 | add_library(arb ${SRC}) | |
56 | ||
57 | target_compile_definitions(arb PRIVATE HAVE_TLS=1 FLINT_REENTRANT=0) | |
58 | target_compile_definitions(arb PRIVATE PTW32_STATIC_LIB) | |
59 | MESSAGE( STATUS "Building static libraries" ) | |
60 | target_compile_definitions(arb PRIVATE "ARB_BUILD_DLL") | |
61 | ||
62 | target_link_libraries(arb ${DEPS}) | |
63 | ||
64 | install(TARGETS arb | |
65 | RUNTIME DESTINATION bin | |
66 | ARCHIVE DESTINATION lib | |
67 | LIBRARY DESTINATION lib | |
68 | ) | |
69 | ||
70 | foreach (FOLDER ${FOLDERS}) | |
71 | set(HEADERS ${HEADERS} ${FOLDER}.h) | |
72 | endforeach () | |
73 | ||
74 | install(FILES ${HEADERS} DESTINATION include) | |
75 | ||
76 | if (BUILD_TESTS) | |
77 | enable_testing() | |
78 | foreach (FOLDER ${FOLDERS}) | |
79 | file(GLOB TEMP "${FOLDER}/test/*.c") | |
80 | foreach (TEST_SOURCE ${TEMP}) | |
81 | get_filename_component(TEST_NAME ${TEST_SOURCE} NAME_WE) | |
82 | add_executable(${FOLDER}-${TEST_NAME} ${TEST_SOURCE}) | |
83 | target_link_libraries(${FOLDER}-${TEST_NAME} arb) | |
84 | add_test(${FOLDER}-${TEST_NAME} ${FOLDER}-${TEST_NAME}) | |
85 | endforeach () | |
86 | endforeach () | |
87 | endif () |