summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-11-12 13:17:00 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-11-12 13:17:00 +0100
commit24ba78cf4b1e479c5e83c9e0695fc68a7b702cc9 (patch)
treec726b96f3cb7f8c8c2d1292d33af1580303b02fa /CMakeLists.txt
parentb7550550b04c3e6038f8dd1fb47f36ec7f699ff8 (diff)
downloadsink-24ba78cf4b1e479c5e83c9e0695fc68a7b702cc9.tar.gz
sink-24ba78cf4b1e479c5e83c9e0695fc68a7b702cc9.zip
Got rid of the AVOID_BINDING_REBUILD hack.
This new solution should provide decent rebuild times without special treatment.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt32
1 files changed, 14 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bf6e173..035fe32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,7 +7,6 @@ project(sink VERSION 0.5)
7 7
8option(BUILD_MAILDIR "BUILD_MAILDIR" ON) 8option(BUILD_MAILDIR "BUILD_MAILDIR" ON)
9option(BUILD_DAV "BUILD_DAV" ON) 9option(BUILD_DAV "BUILD_DAV" ON)
10option(AVOID_BINDING_REBUILD "AVOID_BINDING_REBUILD" OFF)
11option(CATCH_ERRORS "CATCH_ERRORS" OFF) 10option(CATCH_ERRORS "CATCH_ERRORS" OFF)
12option(ENABLE_MEMCHECK "Build valgrind tests" OFF) 11option(ENABLE_MEMCHECK "Build valgrind tests" OFF)
13option(ENABLE_ASAN "Enable the address sanitizer" OFF) 12option(ENABLE_ASAN "Enable the address sanitizer" OFF)
@@ -76,25 +75,22 @@ add_custom_command(
76) 75)
77add_custom_target(format DEPENDS format.dummy) 76add_custom_target(format DEPENDS format.dummy)
78 77
79#Generate flatbuffer bindings
80if (${AVOID_BINDING_REBUILD})
81 add_custom_target(generate_bindings)
82else()
83 add_custom_target(generate_bindings ALL)
84endif()
85
86function(generate_flatbuffers _target) 78function(generate_flatbuffers _target)
87 foreach(fbs ${ARGN}) 79 foreach(fbs ${ARGN})
88 message("making ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h from ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs") 80 #Necessary because we can get relative paths as name, e.g. commands/create_entity
89 add_custom_command( 81 get_filename_component(filename ${fbs} NAME)
90 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h 82 #We first generate into a temporary directory to avoid changing the timestamp of the actual dependency unnecessarily.
91 COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE} -c -b -o ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs 83 #Otherwise we'd end up unnecessarily rebuilding the target.
92 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs 84 add_custom_command(
93 ) 85 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h
94 set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h PROPERTIES GENERATED 1) 86 COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE} -c -b -o ${CMAKE_CURRENT_BINARY_DIR}/flatbufferstmp ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs
95 string(REGEX REPLACE "/" "_" target_name ${fbs}) 87 COMMAND ${CMAKE_COMMAND} -E copy_if_different
96 add_custom_target(${_target}-generate_bindings${target_name} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h) 88 ${CMAKE_CURRENT_BINARY_DIR}/flatbufferstmp/${filename}_generated.h
97 add_dependencies(generate_bindings ${_target}-generate_bindings${target_name}) 89 ${CMAKE_CURRENT_BINARY_DIR}/${filename}_generated.h
90 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs
91
92 )
93 target_sources(${_target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h)
98 endforeach(fbs) 94 endforeach(fbs)
99endfunction(generate_flatbuffers) 95endfunction(generate_flatbuffers)
100 96