-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
110 lines (88 loc) · 3.58 KB
/
CMakeLists.txt
File metadata and controls
110 lines (88 loc) · 3.58 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
cmake_minimum_required(VERSION 3.9)
project(ProjectEuler)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/install/")
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/install/")
set(Boost_USE_STATIC_LIBS ON) # only find static libs
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME ON)
set(Boost_DEBUG ON)
find_package(Boost 1.80.0 REQUIRED)
find_package(GMP 2.6 REQUIRED)
find_package(MPFR 4.0 REQUIRED)
# find_package(LLVM 20.1.2 REQUIRED CONFIG)
# find_package(Gperftools)
# Check for standard to use
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_C_COMPILER clang-20)
set(CMAKE_CXX_COMPILER clang++-20)
IF (WIN32)
# set stuff for windows
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Zi")
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ox")
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Zi")
add_compile_options(/std:c++20)
ELSE ()
# set stuff for other systems
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
add_compile_options(-std=c++20)
add_compile_options(-Werror -Wall -Wextra -Wpedantic -Weverything
-Wno-c++98-compat
-Wno-c++98-compat-pedantic
-Wno-global-constructors
-Wno-unused-but-set-variable
-Wno-unsafe-buffer-usage
-Wno-deprecated-declarations
)
add_compile_definitions(PARALLEL)
#add_compile_definitions(__GLIBCXX_BITSIZE_INT_N_0=128)
#add_compile_definitions(__GLIBCXX_TYPE_INT_N_0=__int128)
#add_compile_definitions(__GLIBCXX_BITSIZE_INT_N_1=128)
#add_compile_definitions(__GLIBCXX_TYPE_INT_N_1=__uint128)
ENDIF ()
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
# add_definitions(${LLVM_DEFINITIONS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${GMP_INCLUDE_DIR})
include_directories(${MPFR_INCLUDES})
include_directories(${Boost_INCLUDE_DIR})
# include_directories(${LLVM_INCLUDE_DIRS})
# include_directories(${GPERFTOOLS_INCLUDE_DIR})
include(CheckCXXCompilerFlag)
file(COPY data DESTINATION .)
message("Boost_LIBRARIES = " ${Boost_LIBRARIES})
message("Boost_UNIT_TEST_FRAMEWORK_LIBRARY = " ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
message("Boost_DATE_TIME_LIBRARY = " ${Boost_DATE_TIME_LIBRARY})
message("GMP_LIBRARIES = " ${GMP_LIBRARIES})
message("GMP_INCLUDE_DIR = " ${GMP_INCLUDE_DIR})
message("MPFR_FOUND = " ${MPFR_FOUND})
message("MPFR_INCLUDES = " ${MPFR_INCLUDES})
message("MPFR_LIBRARIES = " ${MPFR_LIBRARIES})
message("MPFR_VERSION = " ${MPFR_VERSION})
add_subdirectory(utils)
add_subdirectory(maths)
add_subdirectory(tests)
add_subdirectory(problemes)
add_executable(ProjectEuler euler.cpp)
target_link_libraries(ProjectEuler utils)
target_link_libraries(ProjectEuler maths)
target_link_libraries(ProjectEuler problemes)
target_link_libraries(ProjectEuler ${GMP_LIBRARIES})
target_link_libraries(ProjectEuler ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
target_link_libraries(ProjectEuler ${Boost_DATE_TIME_LIBRARY})
target_link_libraries(ProjectEuler ${MPFR_LIBRARIES})
target_link_libraries(ProjectEuler ${GPERFTOOLS_LIBRARIES})
add_executable(ProjectEulerTest test.cpp)
target_link_libraries(ProjectEulerTest utils)
target_link_libraries(ProjectEulerTest maths)
target_link_libraries(ProjectEulerTest tests)
target_link_libraries(ProjectEulerTest ${GMP_LIBRARIES})
target_link_libraries(ProjectEulerTest ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
target_link_libraries(ProjectEulerTest ${MPFR_LIBRARIES})
target_link_libraries(ProjectEulerTest ${GPERFTOOLS_LIBRARIES})