diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 32 |
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 | ||
8 | option(BUILD_MAILDIR "BUILD_MAILDIR" ON) | 8 | option(BUILD_MAILDIR "BUILD_MAILDIR" ON) |
9 | option(BUILD_DAV "BUILD_DAV" ON) | 9 | option(BUILD_DAV "BUILD_DAV" ON) |
10 | option(AVOID_BINDING_REBUILD "AVOID_BINDING_REBUILD" OFF) | ||
11 | option(CATCH_ERRORS "CATCH_ERRORS" OFF) | 10 | option(CATCH_ERRORS "CATCH_ERRORS" OFF) |
12 | option(ENABLE_MEMCHECK "Build valgrind tests" OFF) | 11 | option(ENABLE_MEMCHECK "Build valgrind tests" OFF) |
13 | option(ENABLE_ASAN "Enable the address sanitizer" OFF) | 12 | option(ENABLE_ASAN "Enable the address sanitizer" OFF) |
@@ -76,25 +75,22 @@ add_custom_command( | |||
76 | ) | 75 | ) |
77 | add_custom_target(format DEPENDS format.dummy) | 76 | add_custom_target(format DEPENDS format.dummy) |
78 | 77 | ||
79 | #Generate flatbuffer bindings | ||
80 | if (${AVOID_BINDING_REBUILD}) | ||
81 | add_custom_target(generate_bindings) | ||
82 | else() | ||
83 | add_custom_target(generate_bindings ALL) | ||
84 | endif() | ||
85 | |||
86 | function(generate_flatbuffers _target) | 78 | function(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) |
99 | endfunction(generate_flatbuffers) | 95 | endfunction(generate_flatbuffers) |
100 | 96 | ||