-
Notifications
You must be signed in to change notification settings - Fork 4
/
CMakeLists.txt
82 lines (66 loc) · 2.3 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.13)
project(LoAT)
set(CMAKE_CXX_STANDARD 20)
# non-static build by default
option(STATIC "static" ON)
option(SANITIZE "sanitize" OFF)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
set(CMAKE_LIBRARY_PATH $ENV{LD_LIBRARY_PATH})
add_link_options(-pthread)
if(${STATIC})
message(STATUS "Configuring static build")
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(BUILD_SHARED_LIBS OFF)
add_link_options(-ldl -static)
set(EXECUTABLE loat-static)
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
message(STATUS "Configuring non-static build")
set(EXECUTABLE loat)
endif()
if(${SANITIZE})
message(STATUS "Sanitizer enabled")
add_link_options(-fsanitize=undefined)
add_compile_options(-fsanitize=undefined)
endif()
add_compile_options(-Wall -Wextra -pedantic -Wno-unused-parameter)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -g")
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
message(STATUS "Compiler flags:" ${CMAKE_CXX_COMPILE_FLAGS})
message(STATUS "Compiler cxx debug flags:" ${CMAKE_CXX_FLAGS_DEBUG})
message(STATUS "Compiler cxx release flags:" ${CMAKE_CXX_FLAGS_RELEASE})
message(STATUS "Compiler cxx relwithdebinfo flags:" ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
message(STATUS "Compiler cxx min size flags:" ${CMAKE_CXX_FLAGS_MINSIZEREL})
message(STATUS "Compiler cxx flags:" ${CMAKE_CXX_FLAGS})
find_library(ANTLR4 antlr4-runtime)
message(STATUS "antlr4: ${ANTLR4}")
find_library(FAUDES faudes)
message(STATUS "faudes: ${FAUDES}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC SHA)
git_local_changes(DIRTY)
# generate version.cc
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.cpp.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/version.cpp" @ONLY)
add_executable(${EXECUTABLE} "")
add_subdirectory(src)
target_include_directories(${EXECUTABLE} PRIVATE
${loat_util_INCLUDE_DIRS}
${loat_expr_INCLUDE_DIRS}
${loat_rule_simplifications_INCLUDE_DIRS}
${loat_smt_INCLUDE_DIRS}
${loat_qe_INCLUDE_DIRS}
${loat_recurrence_INCLUDE_DIRS}
${loat_acceleration_INCLUDE_DIRS}
)
target_link_libraries(${EXECUTABLE}
loat_util
loat_expr
loat_rule_simplifications
loat_smt
loat_qe
loat_recurrence
loat_acceleration
${ANTLR4}
${FAUDES}
${LINKER_OPTIONS})