Skip to content

Commit 6840632

Browse files
committed
cmake: add a conditional file generation helper
1 parent eb7e0a1 commit 6840632

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

cmake/DaemonBuildInfo.cmake

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
set(DAEMON_BUILDINFO_HEADER "// Automatically generated, do not modify!\n")
2-
set(DAEMON_BUILDINFO_PARENT "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource")
1+
set(DAEMON_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource")
2+
33
set(DAEMON_BUILDINFO_DIR "DaemonBuildInfo")
4-
set(DAEMON_BUILDINFO_DIR_FULLPATH "${DAEMON_BUILDINFO_PARENT}/${DAEMON_BUILDINFO_DIR}")
4+
set(DAEMON_BUILDINFO_HEADER "// Automatically generated, do not modify!\n")
55
set(DAEMON_BUILDINFO_CPP_EXT ".cpp")
66
set(DAEMON_BUILDINFO_H_EXT ".h")
77
set(BUILDINFOLIST)
88

9-
file(MAKE_DIRECTORY "${DAEMON_BUILDINFO_DIR_FULLPATH}")
10-
include_directories("${DAEMON_BUILDINFO_PARENT}")
9+
file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}")
10+
include_directories("${DAEMON_GENERATED_DIR}")
11+
12+
file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}/${DAEMON_BUILDINFO_DIR}")
1113

1214
foreach(kind CPP H)
1315
set(DAEMON_BUILDINFO_${kind} "${DAEMON_BUILDINFO_HEADER}")
@@ -18,20 +20,25 @@ macro(daemon_add_buildinfo TYPE NAME VALUE)
1820
set(DAEMON_BUILDINFO_H "${DAEMON_BUILDINFO_H}extern const ${TYPE} ${NAME};\n")
1921
endmacro()
2022

23+
macro(daemon_write_generated GENERATED_PATH GENERATED_CONTENT)
24+
set(DAEMON_GENERATED_FILE ${DAEMON_GENERATED_DIR}/${GENERATED_PATH})
25+
26+
if (EXISTS "${DAEMON_GENERATED_FILE}")
27+
file(READ "${DAEMON_GENERATED_FILE}" GENERATED_CONTENT_READ)
28+
endif()
29+
30+
if (NOT "${GENERATED_CONTENT}" STREQUAL "${GENERATED_CONTENT_READ}")
31+
message(STATUS "Generating ${GENERATED_PATH}")
32+
file(WRITE "${DAEMON_GENERATED_FILE}" "${GENERATED_CONTENT}")
33+
endif()
34+
endmacro()
35+
2136
macro(daemon_write_buildinfo NAME)
2237
foreach(kind CPP H)
2338
set(DAEMON_BUILDINFO_${kind}_NAME "${NAME}${DAEMON_BUILDINFO_${kind}_EXT}")
24-
set(DAEMON_BUILDINFO_${kind}_FILE "${DAEMON_BUILDINFO_DIR}/${DAEMON_BUILDINFO_${kind}_NAME}")
25-
set(DAEMON_BUILDINFO_${kind}_FILE_FULLPATH "${DAEMON_BUILDINFO_PARENT}/${DAEMON_BUILDINFO_${kind}_FILE}")
26-
list(APPEND BUILDINFOLIST "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}")
27-
28-
if (EXISTS "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}")
29-
file(READ "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}" DAEMON_BUILDINFO_${kind}_READ)
30-
endif()
31-
32-
if (NOT "${DAEMON_BUILDINFO_${kind}}" STREQUAL "${DAEMON_BUILDINFO_${kind}_READ}")
33-
message(STATUS "Generating ${DAEMON_BUILDINFO_${kind}_FILE}")
34-
file(WRITE "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}" "${DAEMON_BUILDINFO_${kind}}")
35-
endif()
39+
set(DAEMON_BUILDINFO_${kind}_PATH "${DAEMON_BUILDINFO_DIR}/${DAEMON_BUILDINFO_${kind}_NAME}")
40+
41+
daemon_write_generated("${DAEMON_BUILDINFO_${kind}_PATH}" "${DAEMON_BUILDINFO_${kind}}")
42+
list(APPEND BUILDINFOLIST "${DAEMON_GENERATED_FILE}")
3643
endforeach()
3744
endmacro()

0 commit comments

Comments
 (0)