@@ -2,72 +2,57 @@ include_directories(
22 ${CMAKE_CURRENT_BINARY_DIR}
33 ${CMAKE_CURRENT_SOURCE_DIR}
44 ${SC_SOURCE_DIR} /src/base
5- )
5+ )
66
77# Set up the information we need to feed the generated source management
88# scripts
99set (BASELINE_INFORMATION_FILE "${CMAKE_CURRENT_SOURCE_DIR} /generated/verification_info.cmake" )
1010set (PROJECT_CMAKE_DIR "${SC_SOURCE_DIR} /cmake" )
11- set (INPUT_FILELIST expscan.l expparse.y)
12- set (TEMPLATE_FILELIST ${LEMON_TEMPLATE} ${PERPLEX_TEMPLATE} )
13- set (BUILD_OUTPUT_FILELIST
14- ${CMAKE_CURRENT_BINARY_DIR} /expscan.c
15- ${CMAKE_CURRENT_BINARY_DIR} /expscan.h
16- ${CMAKE_CURRENT_BINARY_DIR} /expparse.c
17- ${CMAKE_CURRENT_BINARY_DIR} /expparse.h
18- )
19- set (CACHED_FILES_DIR "${CMAKE_CURRENT_SOURCE_DIR} /generated" )
20- string (REPLACE "${CMAKE_CURRENT_BINARY_DIR} " "${CACHED_FILES_DIR} " CACHED_FILELIST "${BUILD_OUTPUT_FILELIST} " )
21- set (SYNC_SCRIPT "${CMAKE_CURRENT_BINARY_DIR} /express_sync_generated.cmake" )
22- set (SYNC_TARGET_NAME "express_sync_generated_files" )
11+ set (MD5_FILELIST
12+ "${CMAKE_CURRENT_SOURCE_DIR} /expscan.l"
13+ "${CMAKE_CURRENT_SOURCE_DIR} /expparse.y"
14+ "${CMAKE_CURRENT_SOURCE_DIR} /generated/expscan.c"
15+ "${CMAKE_CURRENT_SOURCE_DIR} /generated/expscan.h"
16+ "${CMAKE_CURRENT_SOURCE_DIR} /generated/expparse.c"
17+ "${CMAKE_CURRENT_SOURCE_DIR} /generated/expparse.h"
18+ )
19+ configure_file (${SC_SOURCE_DIR} /cmake/md5_gen.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /express_md5gen.cmake @ONLY )
20+ configure_file (${SC_SOURCE_DIR} /cmake/md5_verify.cmake.in ${CMAKE_CURRENT_BINARY_DIR} /express_verify.cmake @ONLY )
21+
22+ # Convenience target to generate an updated verification_info.cmake file
23+ add_custom_command (
24+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /express_md5gen.sentinel
25+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_md5gen.cmake
26+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR} /express_md5gen.sentinel
27+ )
28+ add_custom_target (express_md5gen DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /express_md5gen.sentinel )
29+
30+ # Target for actually checking cached MD5 sums against files
31+ add_custom_command (
32+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /express_verify.sentinel
33+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_verify.cmake
34+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR} /express_verify.sentinel
35+ DEPENDS ${MD5_FILELIST}
36+ )
37+ add_custom_target (express_verify DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /express_verify.sentinel )
38+
2339
2440# Depending on whether we're using pre-generated sources or building them on
2541# the fly, set up targets and source lists.
2642if (SC_GENERATE_LP_SOURCES)
27- LEMON_TARGET (ExpParser expparse.y expparse.c expparse.h )
28- PERPLEX_TARGET (ExpScanner expscan.l ${CMAKE_CURRENT_BINARY_DIR} /expscan.c ${CMAKE_CURRENT_BINARY_DIR} /expscan.h )
43+ LEMON_TARGET (ExpParser expparse.y )
44+ PERPLEX_TARGET (ExpScanner expscan.l )
2945 ADD_PERPLEX_LEMON_DEPENDENCY (ExpScanner ExpParser )
3046 set (EXPRESS_GENERATED_SRCS
31- ${LEMON_ExpParser_OUTPUT_SOURCE}
32- ${PERPLEX_ExpScanner_OUTPUTS}
33- )
34- configure_file (${SC_SOURCE_DIR} /cmake/manage_generated.cmake.in
35- ${CMAKE_CURRENT_BINARY_DIR} /express_manage_generated.cmake @ONLY )
36- add_custom_command (
37- OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /express_manage_generated.sentinel
38- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_manage_generated.cmake
39- COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR} /express_manage_generated.sentinel
40- DEPENDS ${INPUT_FILELIST} ${TEMPLATE_FILELIST} ${CACHED_FILELIST} ${PERPLEX_ExpScanner_OUTPUTS} ${LEMON_ExpParser_OUTPUT_SOURCE} generated /verification_info.cmake ${PROJECT_CMAKE_DIR} /Generated_Source_Utils.cmake
41- )
42- add_custom_target (express_verify DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /express_manage_generated.sentinel )
43-
44- configure_file (${SC_SOURCE_DIR} /cmake/sync_generated.cmake.in
45- ${CMAKE_CURRENT_BINARY_DIR} /express_sync_generated.cmake @ONLY )
46- add_custom_command (
47- OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /express_sync_generated.sentinel
48- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_sync_generated.cmake
49- COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR} /express_sync_generated.sentinel
50- DEPENDS ${INPUT_FILELIST} ${TEMPLATE_FILELIST} ${PERPLEX_ExpScanner_OUTPUTS} ${LEMON_ExpParser_OUTPUT_SOURCE} ${PROJECT_CMAKE_DIR} /Generated_Source_Utils.cmake
51- )
52- add_custom_target (express_sync_generated_files DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /express_sync_generated.sentinel )
53-
47+ ${LEMON_ExpParser_SRC}
48+ ${PERPLEX_ExpScanner_SRC}
49+ )
5450else (SC_GENERATE_LP_SOURCES )
55-
51+ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} /generated )
5652 set (EXPRESS_GENERATED_SRCS
5753 generated/expparse.c
5854 generated/expscan.c
59- )
60- include_directories (${CMAKE_CURRENT_SOURCE_DIR} /generated )
61- configure_file (${SC_SOURCE_DIR} /cmake/verify_generated.cmake.in
62- ${CMAKE_CURRENT_BINARY_DIR} /express_verify_generated.cmake @ONLY )
63- add_custom_command (
64- OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /express_verify_generated.sentinel
65- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_verify_generated.cmake
66- COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR} /express_verify_generated.sentinel
67- DEPENDS ${INPUT_FILELIST} ${CACHED_FILELIST} generated /verification_info.cmake ${PROJECT_CMAKE_DIR} /Generated_Source_Utils.cmake
68- )
69- add_custom_target (express_verify DEPENDS ${CMAKE_CURRENT_BINARY_DIR} /express_verify_generated.sentinel )
70-
55+ )
7156endif (SC_GENERATE_LP_SOURCES )
7257
7358set (EXPRESS_SOURCES
@@ -110,14 +95,29 @@ set(CHECK_EXPRESS_SOURCES
11095 inithook.c
11196 )
11297
113- set (EXPRESS_PRIVATE_HDRS
98+ SET (EXPRESS_PRIVATE_HDRS
99+ exptoks.h
114100 stack.h
115- )
101+ )
116102
117103SC_ADDLIB (express "${EXPRESS_SOURCES} " "base" )
118- add_dependencies (express express_verify )
119- add_dependencies (express version_string )
120- SC_ADDEXEC ("check-express" "${CHECK_EXPRESS_SOURCES} " "express;base" )
104+ if (SC_GENERATE_LP_SOURCES)
105+ set_property (TARGET express APPEND PROPERTY INCLUDE_DIRECTORIES "${PERPLEX_ExpScanner_INCLUDE_DIR} " )
106+ set_property (TARGET express APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR} " )
107+ endif (SC_GENERATE_LP_SOURCES )
108+
109+ if (SC_GENERATE_LP_SOURCES)
110+ add_custom_command (TARGET express POST_BUILD
111+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_verify.cmake
112+ )
113+ else (SC_GENERATE_LP_SOURCES )
114+ add_dependencies (express express_verify )
115+ endif (SC_GENERATE_LP_SOURCES )
116+
117+ if (NOT SC_IS_SUBBUILD)
118+ add_dependencies (express version_string )
119+ endif (NOT SC_IS_SUBBUILD )
120+ SC_ADDEXEC ("check-express" "${CHECK_EXPRESS_SOURCES} " "express;base" ${SC_EXEC_NOINSTALL} )
121121
122122if (SC_ENABLE_TESTING)
123123 add_subdirectory (test )
0 commit comments