Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 1 | project(injection) |
| 2 | cmake_minimum_required(VERSION 2.8) |
| 3 | |
Marco Poletti | eb92f9a | 2015-12-01 19:23:08 +0100 | [diff] [blame] | 4 | # CMake on OSX likes to see this set explicitly, otherwise it outputs a warning. |
| 5 | set(CMAKE_MACOSX_RPATH 1) |
| 6 | |
Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 7 | if(NOT CMAKE_BUILD_TYPE) |
| 8 | set(CMAKE_BUILD_TYPE "Release") |
| 9 | endif() |
| 10 | |
Marco Poletti | e769ce0 | 2015-12-07 17:02:00 +0000 | [diff] [blame] | 11 | set(FRUIT_COMPILE_FLAGS "-std=c++11 -W -Wall") |
| 12 | if((${CMAKE_BUILD_TYPE} STREQUAL "Debug")) |
| 13 | set(FRUIT_COMPILE_FLAGS "${FRUIT_COMPILE_FLAGS} -g -O0 -Werror -DFRUIT_EXTRA_DEBUG -D_GLIBCXX_DEBUG") |
| 14 | if((((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8.99")) |
Marco Poletti | 85dba84 | 2015-12-06 22:30:53 +0000 | [diff] [blame] | 15 | OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) |
Marco Poletti | e769ce0 | 2015-12-07 17:02:00 +0000 | [diff] [blame] | 16 | AND NOT ${RUN_TESTS_UNDER_VALGRIND}) |
| 17 | set(FRUIT_COMPILE_FLAGS "${FRUIT_COMPILE_FLAGS} -fsanitize=undefined,address") |
| 18 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined,address") |
| 19 | endif() |
Marco Poletti | 71c36de | 2014-11-01 10:51:07 +0000 | [diff] [blame] | 20 | endif() |
Marco Poletti | e769ce0 | 2015-12-07 17:02:00 +0000 | [diff] [blame] | 21 | add_definitions(${FRUIT_COMPILE_FLAGS}) |
Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 22 | |
Marco Poletti | 71c36de | 2014-11-01 10:51:07 +0000 | [diff] [blame] | 23 | include_directories(${CMAKE_SOURCE_DIR}/include) |
Marco Poletti | 06a1d1e | 2014-09-20 20:59:51 +0100 | [diff] [blame] | 24 | |
Marco Poletti | 81e03d5 | 2014-11-01 18:21:04 +0000 | [diff] [blame] | 25 | # Unsafe, only for debugging/benchmarking. |
Marco Poletti | 050d600 | 2014-11-09 18:18:40 +0000 | [diff] [blame] | 26 | #add_definitions(-DFRUIT_NO_LOOP_CHECK) |
Marco Poletti | 81e03d5 | 2014-11-01 18:21:04 +0000 | [diff] [blame] | 27 | |
Marco Poletti | b9aca3f | 2015-05-31 10:06:45 +0100 | [diff] [blame] | 28 | # (debug-only) compile switch to get deep template instantiation stacktraces for errors (instead |
| 29 | # of the user-friendly default that hides Fruit internals). |
| 30 | #add_definitions(-DFRUIT_DEEP_TEMPLATE_INSTANTIATION_STACKTRACES_FOR_ERRORS) |
| 31 | |
Marco Poletti | 81e03d5 | 2014-11-01 18:21:04 +0000 | [diff] [blame] | 32 | |
Marco Poletti | e66e1e7 | 2014-06-21 18:07:22 +0100 | [diff] [blame] | 33 | set(INSTALL_LIBRARY_DIR lib CACHE PATH "Installation directory for libraries") |
Marco Poletti | f86df38 | 2015-03-15 10:02:34 +0000 | [diff] [blame] | 34 | set(INSTALL_INCLUDE_DIR include/fruit CACHE PATH "Installation directory for headers") |
Marco Poletti | e66e1e7 | 2014-06-21 18:07:22 +0100 | [diff] [blame] | 35 | |
Marco Poletti | e267bc6 | 2015-02-28 19:34:13 +0000 | [diff] [blame] | 36 | set(FRUIT_VERSION "1.0.2") |
Marco Poletti | cc3a623 | 2014-07-27 16:23:11 +0100 | [diff] [blame] | 37 | |
Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 38 | enable_testing() |
Marco Poletti | 34f5048 | 2015-12-01 23:14:12 +0100 | [diff] [blame] | 39 | set(CTEST_TEST_TIMEOUT 20 CACHE STRING "Maximum test time, before CTest will kill the test." FORCE) |
Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 40 | |
| 41 | add_subdirectory(src) |
Marco Poletti | 1fb101f | 2014-10-12 16:18:17 +0100 | [diff] [blame] | 42 | |
| 43 | if(${CMAKE_BUILD_TYPE} STREQUAL "Debug") |
| 44 | # Do not exclude these from "make all" in debug mode, they must build. |
| 45 | add_subdirectory(extras) |
| 46 | add_subdirectory(examples) |
| 47 | add_subdirectory(tests) |
| 48 | else() |
| 49 | add_subdirectory(extras EXCLUDE_FROM_ALL) |
| 50 | add_subdirectory(examples EXCLUDE_FROM_ALL) |
| 51 | add_subdirectory(tests EXCLUDE_FROM_ALL) |
| 52 | endif() |
| 53 | |
Marco Poletti | d5dc2eb | 2014-07-05 17:07:57 +0100 | [diff] [blame] | 54 | add_subdirectory(doc EXCLUDE_FROM_ALL) |
Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 55 | |
Marco Poletti | f86df38 | 2015-03-15 10:02:34 +0000 | [diff] [blame] | 56 | install(DIRECTORY include/fruit/ |
| 57 | DESTINATION ${INSTALL_INCLUDE_DIR} |
Marco Poletti | cf798fa | 2014-06-21 15:05:15 +0100 | [diff] [blame] | 58 | FILES_MATCHING PATTERN "*.h") |