Skip to content

Commit 6872fed

Browse files
committed
[C++] Add dependencies to the custom command that generates IR codecs.
Without the dependency, CMake runs this command at every build which leads to unnecessary recompilation of dummy.cpp.
1 parent 2704a77 commit 6872fed

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

sbe-tool/src/main/cpp/CMakeLists.txt

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,43 @@
1414
# limitations under the License.
1515
#
1616

17+
file(GLOB_RECURSE CODECS
18+
"uk_co_real_logic_sbe_ir_generated/*.h"
19+
)
20+
1721
find_package(Java REQUIRED)
1822

19-
add_custom_target(
20-
ir_codecs
23+
if(NOT(CODECS))
24+
execute_process(
25+
COMMAND
26+
${Java_JAVA_EXECUTABLE}
27+
"-Dsbe.output.dir=${CMAKE_CURRENT_SOURCE_DIR}"
28+
"-Dsbe.target.language=CPP"
29+
"-jar" "${SBE_JAR}"
30+
"../resources/sbe-ir.xml"
31+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
32+
)
33+
34+
file(GLOB_RECURSE CODECS
35+
"uk_co_real_logic_sbe_ir_generated/*.h"
36+
)
37+
endif()
38+
39+
add_custom_command(OUTPUT ${CODECS}
40+
COMMAND
2141
${Java_JAVA_EXECUTABLE}
2242
"-Dsbe.output.dir=${CMAKE_CURRENT_SOURCE_DIR}"
2343
"-Dsbe.target.language=CPP"
2444
"-jar" "${SBE_JAR}"
2545
"../resources/sbe-ir.xml"
26-
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
27-
COMMENT "Generate IR codecs"
46+
DEPENDS ${SBE_JAR} sbe-jar "../resources/sbe-ir.xml"
47+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
48+
COMMENT "Generate IR codecs"
49+
)
50+
51+
add_custom_target(
52+
ir_codecs
53+
DEPENDS ${CODECS}
2854
)
2955

3056
set(HEADERS

0 commit comments

Comments
 (0)