cmake: Working build infrastructure.
[cvc5.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 3.0.1)
2
3 #-----------------------------------------------------------------------------#
4
5 project (cvc4)
6
7 #-----------------------------------------------------------------------------#
8
9 set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
10 set(CMAKE_C_STANDARD 99)
11 set(CMAKE_CXX_STANDARD 11)
12
13 #-----------------------------------------------------------------------------#
14
15 include(CheckCCompilerFlag)
16 include(CheckCXXCompilerFlag)
17
18 macro(add_c_flag flag)
19 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
20 endmacro()
21
22 macro(add_check_c_flag flag)
23 check_c_compiler_flag("${flag}" HAVE_FLAG_${flag})
24 if(HAVE_FLAG_${flag})
25 add_c_flag(${flag})
26 endif()
27 endmacro()
28
29 macro(add_cxx_flag flag)
30 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
31 endmacro()
32
33 macro(add_check_cxx_flag flag)
34 check_cxx_compiler_flag("${flag}" HAVE_FLAG_${flag})
35 if(HAVE_FLAG_${flag})
36 add_cxx_flag(${flag})
37 endif()
38 endmacro()
39
40 macro(add_c_cxx_flag flag)
41 add_c_flag(${flag})
42 add_cxx_flag(${flag})
43 message(STATUS "Configure with flag '${flag}'")
44 endmacro()
45
46 macro(add_check_c_cxx_flag flag)
47 add_check_c_flag(${flag})
48 add_check_cxx_flag(${flag})
49 message(STATUS "Configure with flag '${flag}'")
50 endmacro()
51
52 #-----------------------------------------------------------------------------#
53
54 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
55 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
56 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
57 message(STATUS "LIB directory is '${CMAKE_BINARY_DIR}/lib'")
58 message(STATUS "BIN directory is '${CMAKE_BINARY_DIR}/bin'")
59
60 #-----------------------------------------------------------------------------#
61
62 set(build_types Debug Production)
63 if(NOT CMAKE_BUILD_TYPE)
64 message(STATUS "No build type set, options are: ${build_types}")
65 set(CMAKE_BUILD_TYPE Production CACHE STRING "Options are: ${build_types}" FORCE)
66 # Provide drop down menu options in cmake-gui
67 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${build_types})
68 endif()
69 message(STATUS "Building ${CMAKE_BUILD_TYPE} build")
70
71 #-----------------------------------------------------------------------------#
72
73 find_package(PythonInterp REQUIRED)
74
75 find_package(GMP REQUIRED)
76 message(STATUS "Found GMP headers: ${GMP_INCLUDE_DIR}")
77 set(LIBRARIES ${LIBRARIES} ${GMP_LIBRARIES})
78 include_directories(${GMP_INCLUDE_DIR})
79
80 find_package(ANTLR REQUIRED)
81 message(STATUS "Found ANTLR headers: ${ANTLR_INCLUDE_DIR}")
82 set(LIBRARIES ${LIBRARIES} ${ANTLR_LIBRARIES})
83 include_directories(${ANTLR_INCLUDE_DIR})
84
85 #-----------------------------------------------------------------------------#
86
87 add_check_c_flag("-fexceptions")
88 add_check_c_cxx_flag("-Wno-deprecated")
89
90 #-----------------------------------------------------------------------------#
91
92 set(VERSION "1.6.0-prerelease")
93 string(TIMESTAMP MAN_DATE "%Y-%m-%d")
94
95 #-----------------------------------------------------------------------------#
96
97 include(GetGitRevisionDescription)
98 get_git_head_revision(GIT_REFSPEC GIT_SHA1)
99 git_local_changes(GIT_IS_DIRTY)
100 if(${GIT_IS_DIRTY} STREQUAL "DIRTY")
101 set(GIT_IS_DIRTY "true")
102 else()
103 set(GIT_IS_DIRTY "false")
104 endif()
105
106 execute_process(
107 COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD
108 OUTPUT_VARIABLE GIT_BRANCH
109 OUTPUT_STRIP_TRAILING_WHITESPACE
110 )
111
112 #-----------------------------------------------------------------------------#
113
114 # CONFIGURATION (for now manual)
115
116 # src/util/rational.h.in
117 # src/util/integer.h.in
118 set(CVC4_NEED_INT64_T_OVERLOADS 0)
119 set(CVC4_USE_CLN_IMP 0)
120 set(CVC4_USE_GMP_IMP 1)
121 set(CVC4_USE_SYMFPU 0)
122
123 #-----------------------------------------------------------------------------#
124
125 add_subdirectory(doc)
126 add_subdirectory(proofs/signatures)
127 add_subdirectory(src)