Skip to content

Commit 1220284

Browse files
committed
👷 Move release header creation to a function
1 parent 11e1410 commit 1220284

File tree

2 files changed

+43
-26
lines changed

2 files changed

+43
-26
lines changed

CMakeLists.txt

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -221,32 +221,32 @@ if(PROJECT_IS_TOP_LEVEL)
221221
add_subdirectory(tools)
222222

223223
# Build single-header release.
224-
file(GLOB_RECURSE include_files
225-
"${CMAKE_CURRENT_SOURCE_DIR}/include/cib/*.hpp")
226-
add_custom_command(
227-
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/gen_release_header.py
228-
${include_files}
229-
COMMAND ${CMAKE_COMMAND} -E make_directory
230-
${CMAKE_CURRENT_BINARY_DIR}/include/cib
231-
COMMAND
232-
${Python3_EXECUTABLE}
233-
${CMAKE_CURRENT_SOURCE_DIR}/tools/gen_release_header.py
234-
${CMAKE_CURRENT_SOURCE_DIR}/include/cib/cib.hpp >
235-
${CMAKE_CURRENT_BINARY_DIR}/include/cib/cib.hpp
236-
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/cib/cib.hpp)
237-
238-
add_custom_target(release_header
239-
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/include/cib/cib.hpp)
240-
endif()
241-
242-
if(DEFINED ENV{SINGLE_HEADER})
243-
add_dependencies(cib release_header)
244-
245-
target_include_directories(
246-
cib INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/>
224+
include(cmake/single_header.cmake)
225+
gen_single_header(
226+
TARGET
227+
release_header
228+
GEN_HEADER
229+
${CMAKE_SOURCE_DIR}/tools/gen_release_header.py
230+
SOURCE_TARGET
231+
cib
232+
SOURCE_FILESET
233+
cib
234+
INPUT_HEADER
235+
${CMAKE_SOURCE_DIR}/include/cib/cib.hpp
236+
OUTPUT_HEADER
237+
${CMAKE_BINARY_DIR}/include/cib/cib.hpp)
238+
239+
if(DEFINED ENV{SINGLE_HEADER})
240+
add_dependencies(cib release_header)
241+
242+
target_include_directories(
243+
cib
244+
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/>
247245
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/>)
248-
else()
249-
target_include_directories(
250-
cib INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
246+
else()
247+
target_include_directories(
248+
cib
249+
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
251250
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/>)
251+
endif()
252252
endif()

cmake/single_header.cmake

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function(gen_single_header)
2+
set(oneValueArgs TARGET GEN_HEADER SOURCE_TARGET SOURCE_FILESET
3+
INPUT_HEADER OUTPUT_HEADER)
4+
cmake_parse_arguments(SH "" "${oneValueArgs}" "" ${ARGN})
5+
6+
get_target_property(HEADERS ${SH_SOURCE_TARGET}
7+
HEADER_SET_${SH_SOURCE_FILESET})
8+
get_filename_component(OUTPUT_DIR ${SH_OUTPUT_HEADER} DIRECTORY)
9+
add_custom_command(
10+
DEPENDS ${SH_GEN_HEADER} ${HEADERS}
11+
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
12+
COMMAND ${Python3_EXECUTABLE} ${SH_GEN_HEADER} ${SH_INPUT_HEADER} >
13+
${SH_OUTPUT_HEADER}
14+
OUTPUT ${SH_OUTPUT_HEADER})
15+
16+
add_custom_target(${SH_TARGET} DEPENDS ${SH_OUTPUT_HEADER})
17+
endfunction()

0 commit comments

Comments
 (0)