Skip to content

Commit c0b61b4

Browse files
committed
intermediate CMake object libraries for libexpress to support tests
generated subdir CMakeLists.txt begin to remove Perplex
1 parent ead7664 commit c0b61b4

File tree

2 files changed

+34
-14
lines changed

2 files changed

+34
-14
lines changed

src/express/CMakeLists.txt

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,8 @@ if(SC_GENERATE_LP_SOURCES)
5656
${PERPLEX_ExpScanner_static_SRC}
5757
)
5858
else(SC_GENERATE_LP_SOURCES)
59-
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/generated)
60-
set(EXPRESS_GENERATED_SRCS
61-
generated/expparse.c
62-
generated/expscan.c
63-
)
64-
set(SCL_SO_SRCS ${EXPRESS_GENERATED_SRCS})
65-
set(SCL_STATIC_SRCS ${EXPRESS_GENERATED_SRCS})
59+
add_subdirectory(generated)
60+
include_directories(generated)
6661
endif(SC_GENERATE_LP_SOURCES)
6762

6863
set(EXPRESS_SOURCES
@@ -79,7 +74,7 @@ set(EXPRESS_SOURCES
7974
resolve.c
8075
lexact.c
8176
linklist.c
82-
error.c
77+
# error.c
8378
dict.c
8479
hash.c
8580
memory.c
@@ -90,6 +85,19 @@ set(EXPRESS_SOURCES
9085
exp_kw.c
9186
)
9287

88+
set(EXPRESS_OBJS)
89+
foreach(_src ${EXPRESS_SOURCES})
90+
string(REPLACE "." "_" _suffix ${_src})
91+
set(_objlib "objlib_${_suffix}")
92+
add_library(${_objlib} OBJECT ${_src})
93+
# TODO: probably PIC should be used everywhere...
94+
set_property(TARGET ${_objlib} PROPERTY POSITION_INDEPENDENT_CODE ON)
95+
list(APPEND EXPRESS_OBJS $<TARGET_OBJECTS:${_objlib}>)
96+
endforeach()
97+
98+
list(APPEND EXPRESS_OBJS $<TARGET_OBJECTS:objlib_expscan_c>)
99+
list(APPEND EXPRESS_OBJS $<TARGET_OBJECTS:objlib_expparse_c>)
100+
93101
# TODO
94102
# Currently, fedex.c provides the main() for multiple programs. These programs
95103
# provide custom behavior by defining EXPRESSinit_init (called by fedex.c's
@@ -113,14 +121,16 @@ variable_watch(SC_ADDLIB_EXPRESS_ARG_LINK_LIBRARIES)
113121
variable_watch(SC_ADDLIB_EXPRESS-STATIC_ARG_LINK_LIBRARIES)
114122

115123
if($CACHE{SC_BUILD_SHARED_LIBS})
116-
SC_ADDLIB(express SHARED SOURCES ${EXPRESS_SOURCES} ${SCL_SO_SRCS} LINK_LIBRARIES base)
124+
SC_ADDLIB(express SHARED SOURCES "error.c" ${EXPRESS_OBJS} LINK_LIBRARIES base)
117125
if(WIN32)
118126
target_compile_definitions(express PRIVATE SC_EXPRESS_DLL_EXPORTS)
119127
endif()
120128

121129
if(SC_GENERATE_LP_SOURCES)
122-
set_property(TARGET express APPEND PROPERTY INCLUDE_DIRECTORIES "${PERPLEX_ExpScanner_INCLUDE_DIR}")
123-
set_property(TARGET express APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR}")
130+
set_property(TARGET express
131+
APPEND PROPERTY INCLUDE_DIRECTORIES "${RE2C_ExpScanner_INCLUDE_DIR}")
132+
set_property(TARGET express
133+
APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR}")
124134
add_custom_command(TARGET express POST_BUILD
125135
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/express_verify.cmake
126136
)
@@ -134,11 +144,13 @@ if($CACHE{SC_BUILD_SHARED_LIBS})
134144
endif()
135145

136146
if($CACHE{SC_BUILD_STATIC_LIBS})
137-
SC_ADDLIB(express-static STATIC SOURCES ${EXPRESS_SOURCES} ${SCL_STATIC_SRCS} LINK_LIBRARIES base-static)
147+
SC_ADDLIB(express-static STATIC SOURCES "error.c" ${EXPRESS_OBJS} LINK_LIBRARIES base-static)
138148

139149
if(SC_GENERATE_LP_SOURCES)
140-
set_property(TARGET express-static APPEND PROPERTY INCLUDE_DIRECTORIES "${PERPLEX_ExpScanner_static_INCLUDE_DIR}")
141-
set_property(TARGET express-static APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_static_INCLUDE_DIR}")
150+
set_property(TARGET express-static
151+
APPEND PROPERTY INCLUDE_DIRECTORIES "${RE2C_ExpScanner_INCLUDE_DIR}")
152+
set_property(TARGET express-static
153+
APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR}")
142154
add_custom_command(TARGET express-static POST_BUILD
143155
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/express_verify.cmake
144156
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
include_directories(.)
2+
3+
add_library(objlib_expscan_c OBJECT expscan.c)
4+
set_property(TARGET objlib_expscan_c PROPERTY POSITION_INDEPENDENT_CODE ON)
5+
6+
add_library(objlib_expparse_c OBJECT expparse.c)
7+
set_property(TARGET objlib_expparse_c PROPERTY POSITION_INDEPENDENT_CODE ON)
8+

0 commit comments

Comments
 (0)