@@ -43,18 +43,13 @@ if(SC_GENERATE_LP_SOURCES)
4343 LEMON_TARGET (ExpParser expparse.y )
4444 PERPLEX_TARGET (ExpScanner expscan.l )
4545 ADD_PERPLEX_LEMON_DEPENDENCY (ExpScanner ExpParser )
46- set (SCL_SO_SRCS
47- ${LEMON_ExpParser_SRC}
48- ${PERPLEX_ExpScanner_SRC}
49- )
5046
51- LEMON_TARGET (ExpParser_static expparse.y )
52- PERPLEX_TARGET (ExpScanner_static expscan.l )
53- ADD_PERPLEX_LEMON_DEPENDENCY (ExpScanner_static ExpParser_static )
54- set (SCL_STATIC_SRCS
55- ${LEMON_ExpParser_static_SRC}
56- ${PERPLEX_ExpScanner_static_SRC}
57- )
47+ add_library (objlib_expscan_c OBJECT ${PERPLEX_ExpScanner_SRC} )
48+ set_property (TARGET objlib_expscan_c PROPERTY POSITION_INDEPENDENT_CODE ON )
49+
50+ add_library (objlib_expparse_c OBJECT ${LEMON_ExpParser_SRC} )
51+ set_property (TARGET objlib_expparse_c PROPERTY POSITION_INDEPENDENT_CODE ON )
52+
5853else (SC_GENERATE_LP_SOURCES )
5954 add_subdirectory (generated )
6055 include_directories (generated )
@@ -100,6 +95,16 @@ endforeach()
10095list (APPEND EXPRESS_OBJS $<TARGET_OBJECTS :objlib_expscan_c >)
10196list (APPEND EXPRESS_OBJS $<TARGET_OBJECTS :objlib_expparse_c >)
10297
98+
99+ if (SC_GENERATE_LP_SOURCES)
100+ set_property (TARGET objlib_expparse_c objlib_express_c objlib_lexact_c
101+ APPEND PROPERTY INCLUDE_DIRECTORIES "${PERPLEX_ExpScanner_INCLUDE_DIR} " )
102+ set_property (TARGET objlib_expscan_c objlib_express_c objlib_lexact_c
103+ APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR} " )
104+ # OBJECT libraries are not targets, and so an explicit dependency is required
105+ set_source_files_properties (express.c lexact.c PROPERTIES OBJECT_DEPENDS "${PERPLEX_ExpScanner_HDR} ;${LEMON_ExpParser_HDR} " )
106+ endif ()
107+
103108# TODO
104109# Currently, fedex.c provides the main() for multiple programs. These programs
105110# provide custom behavior by defining EXPRESSinit_init (called by fedex.c's
@@ -129,10 +134,6 @@ if($CACHE{SC_BUILD_SHARED_LIBS})
129134 endif ()
130135
131136 if (SC_GENERATE_LP_SOURCES)
132- set_property (TARGET express
133- APPEND PROPERTY INCLUDE_DIRECTORIES "${RE2C_ExpScanner_INCLUDE_DIR} " )
134- set_property (TARGET express
135- APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR} " )
136137 add_custom_command (TARGET express POST_BUILD
137138 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_verify.cmake
138139 )
@@ -149,10 +150,6 @@ if($CACHE{SC_BUILD_STATIC_LIBS})
149150 SC_ADDLIB (express-static STATIC SOURCES "dummy.c" ${EXPRESS_OBJS} LINK_LIBRARIES base-static )
150151
151152 if (SC_GENERATE_LP_SOURCES)
152- set_property (TARGET express-static
153- APPEND PROPERTY INCLUDE_DIRECTORIES "${RE2C_ExpScanner_INCLUDE_DIR} " )
154- set_property (TARGET express-static
155- APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR} " )
156153 add_custom_command (TARGET express-static POST_BUILD
157154 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /express_verify.cmake
158155 )
0 commit comments