Skip to content

Commit 2d54fe6

Browse files
committed
CMake builds: build java-models-library only once
There is no need to run maven each and every time, instead make the command depend on the *.java files having been updated. While at it, also remove it from the top-level-dependencies and instead make jbmc depend on it. Finally, also install core-models.jar.
1 parent 91cf192 commit 2d54fe6

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
113113
COMMAND ${CODE_COVERAGE_LCOV} ${LCOV_FLAGS} --remove ${CODE_COVERAGE_INFO_FILE} '/usr/*' --output-file ${CODE_COVERAGE_INFO_FILE}
114114
COMMAND ${CODE_COVERAGE_GENHTML} ${CODE_COVERAGE_INFO_FILE} --output-directory ${CODE_COVERAGE_OUTPUT_DIR}
115115
DEPENDS
116-
java-models-library
117116
"$<TARGET_FILE:java-unit>"
118117
"$<TARGET_FILE:unit>"
119118
"$<TARGET_FILE:goto-harness>"
@@ -211,7 +210,6 @@ cprover_default_properties(
211210

212211
option(WITH_JBMC "Build the JBMC Java front-end" ON)
213212
if(WITH_JBMC)
214-
find_program(MAVEN_PROGRAM mvn)
215213
add_subdirectory(jbmc)
216214
endif()
217215

jbmc/CMakeLists.txt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,8 @@ add_subdirectory(regression)
22
add_subdirectory(src)
33
add_subdirectory(unit)
44

5-
add_custom_target(java-models-library ALL
6-
COMMAND ${MAVEN_PROGRAM} --quiet -Dmaven.test.skip=true package
7-
COMMAND ${CMAKE_COMMAND} -E copy target/core-models.jar ${CMAKE_CURRENT_SOURCE_DIR}/src/java_bytecode/library/
8-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/java-models-library
9-
)
10-
115
cprover_default_properties(
126
java_bytecode
13-
java-models-library
147
jbmc
158
jbmc-lib
169
janalyzer
@@ -21,3 +14,25 @@ cprover_default_properties(
2114
java-unit
2215
miniz
2316
)
17+
18+
# java models library
19+
find_program(MAVEN_PROGRAM mvn REQUIRED)
20+
21+
file(GLOB_RECURSE java_models_sources "lib/java-models-library/src/*.java")
22+
23+
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/lib/java-models-library/target/core-models.jar"
24+
COMMAND ${MAVEN_PROGRAM} --quiet -Dmaven.test.skip=true package
25+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/java-models-library
26+
DEPENDS ${java_models_sources}
27+
)
28+
29+
add_custom_target(java-models-library ALL
30+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lib/java-models-library/target/core-models.jar"
31+
)
32+
33+
install(
34+
FILES
35+
"${CMAKE_CURRENT_SOURCE_DIR}/lib/java-models-library/target/core-models.jar"
36+
"${CMAKE_CURRENT_SOURCE_DIR}/lib/java-models-library/target/cprover-api.jar"
37+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
38+
)

jbmc/src/jbmc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ target_link_libraries(jbmc-lib
3131
add_executable(jbmc jbmc_main.cpp)
3232
target_link_libraries(jbmc jbmc-lib)
3333
install(TARGETS jbmc DESTINATION ${CMAKE_INSTALL_BINDIR})
34+
35+
# make sure java-models-library is built at least once
36+
add_dependencies(jbmc java-models-library)

0 commit comments

Comments
 (0)