Skip to content

Commit 0d304c0

Browse files
committed
cmake: add possibility to use locally built (not installed) grx library
If grx was build locallay and exported itself, ev3devKit should now find the local build of grx and use it instead of using pkg-config to find grx.
1 parent c6f742d commit 0d304c0

1 file changed

Lines changed: 29 additions & 8 deletions

File tree

CMakeLists.txt

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,8 @@ set (EV3DEVKIT_PACKAGE ${PROJECT_NAME}-${GIR_VERSION})
2121
set (LIBRARY_NAME "${EV3DEVKIT_PACKAGE}")
2222
set (TARGET_GLIB "2.40")
2323

24-
if (PARENT_DIR)
25-
# If this is included by a parent project, export some variables back to the parent
26-
set (${PROJECT_NAME}_PACKAGE ${EV3DEVKIT_PACKAGE} PARENT_SCOPE)
27-
set (${PROJECT_NAME}_VAPI ${EV3DEVKIT_PACKAGE}.vapi PARENT_SCOPE)
28-
endif (PARENT_DIR)
24+
# see if we have a local copy of grx-3.0 that was exported by cmake
25+
find_package (grx-3.0 QUIET)
2926

3027
add_subdirectory (data)
3128
set (XDG_DATA_DIR data)
@@ -50,10 +47,22 @@ set (COMMON_MODULES
5047
glib-2.0
5148
gmodule-2.0
5249
gobject-2.0
53-
grx-3.0
5450
gudev-1.0
5551
)
5652

53+
# if we have a local build of grx-3.0, use it, otherwise use pkg-config to find it
54+
if (grx-3.0_FOUND)
55+
set(GRX3_INCLUDEDIR ${grx-3.0_INCLUDEDIR})
56+
set(GRX3_SHARED_LIB grx-3.0-shared)
57+
set(GRX3_STATIC_LIB grx-3.0-static)
58+
set(GRX3_VAPIDIR_OPTION "--vapidir=${grx-3.0_VAPIDIR}")
59+
set(GRX3_GIRDIR_OPTION "--girdir=${grx-3.0_GIRDIR}")
60+
set(GRX3_INCLUDEDIR_OPTION "--includedir=${grx-3.0_GIRDIR}")
61+
set(GRX3_PLUGINDIR_ENV "GRX_PLUGIN_PATH=${grx-3.0_PLUGINDIR}")
62+
else (grx-3.0_FOUND)
63+
list(APPEND COMMON_MODULES grx-3.0)
64+
endif (grx-3.0_FOUND)
65+
5766
configure_file (src/Version.vala.in Version.vala)
5867
# convert CMake list to space separated string for pkgconfig file
5968
string(REPLACE ";" " " PKGCONFIG_DEPS "${COMMON_MODULES}")
@@ -137,6 +146,8 @@ CUSTOM_VAPIS
137146
bindings/*.vapi
138147
OPTIONS
139148
--target-glib=${TARGET_GLIB}
149+
${GRX3_VAPIDIR_OPTION}
150+
${GRX3_GIRDIR_OPTION}
140151
GENERATE_VAPI
141152
${EV3DEVKIT_PACKAGE}
142153
GENERATE_HEADER
@@ -175,6 +186,7 @@ add_custom_command (
175186
"--shared-library=$<TARGET_SONAME_FILE_NAME:${LIBRARY_NAME}-shared>"
176187
"--output=${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GIR_VERSION}.typelib"
177188
"--includedir=${CMAKE_CURRENT_BINARY_DIR}"
189+
${GRX3_INCLUDEDIR_OPTION}
178190
DEPENDS
179191
"${LIBRARY_NAME}-shared"
180192
"${CMAKE_CURRENT_BINARY_DIR}/${GIR_NAME}-${GIR_VERSION}.gir"
@@ -191,15 +203,16 @@ add_custom_target ("${LIBRARY_NAME}-typelib"
191203
# end of workaround
192204

193205
add_library(${LIBRARY_NAME} OBJECT ${LIBRARY_VALA_C})
206+
target_include_directories(${LIBRARY_NAME} PRIVATE ${GRX3_INCLUDEDIR})
194207
set_target_properties(${LIBRARY_NAME} PROPERTIES POSITION_INDEPENDENT_CODE 1)
195208
add_library(${LIBRARY_NAME}-shared SHARED $<TARGET_OBJECTS:${LIBRARY_NAME}>)
196-
target_link_libraries(${LIBRARY_NAME}-shared ${DEPS_LIBRARIES})
209+
target_link_libraries(${LIBRARY_NAME}-shared ${DEPS_LIBRARIES} ${GRX3_SHARED_LIB})
197210
set_target_properties(${LIBRARY_NAME}-shared PROPERTIES
198211
VERSION "${VERSION}"
199212
SOVERSION "${SOVERSION}"
200213
OUTPUT_NAME ${LIBRARY_NAME})
201214
add_library(${LIBRARY_NAME}-static STATIC $<TARGET_OBJECTS:${LIBRARY_NAME}>)
202-
target_link_libraries(${LIBRARY_NAME}-static ${DEPS_LIBRARIES})
215+
target_link_libraries(${LIBRARY_NAME}-static ${DEPS_LIBRARIES} ${GRX3_STATIC_LIB})
203216
set_target_properties(${LIBRARY_NAME}-static PROPERTIES
204217
OUTPUT_NAME ${LIBRARY_NAME})
205218
add_dependencies(${LIBRARY_NAME} ev3devkit_data)
@@ -227,9 +240,12 @@ if (EV3DEVKIT_BUILD_DEMO)
227240
OPTIONS
228241
--target-glib=${TARGET_GLIB}
229242
--vapidir=${CMAKE_CURRENT_BINARY_DIR}
243+
${GRX3_VAPIDIR_OPTION}
244+
${GRX3_GIRDIR_OPTION}
230245
)
231246

232247
add_executable (${DEVICES_DEMO_EXEC_NAME} ${DEVICES_DEMO_EXEC_VALA_C})
248+
target_include_directories (${DEVICES_DEMO_EXEC_NAME} PRIVATE ${GRX3_INCLUDEDIR})
233249
target_link_libraries (${DEVICES_DEMO_EXEC_NAME} ${EXEC_LIBRARY_DEPENDS})
234250
if (CMAKE_CROSSCOMPILING)
235251
# These are not picked up automatically when cross compiling for some reason
@@ -258,9 +274,12 @@ if (EV3DEVKIT_BUILD_DEMO)
258274
OPTIONS
259275
--target-glib=${TARGET_GLIB}
260276
--vapidir=${CMAKE_CURRENT_BINARY_DIR}
277+
${GRX3_VAPIDIR_OPTION}
278+
${GRX3_GIRDIR_OPTION}
261279
)
262280

263281
add_executable (${UI_DEMO_EXEC_NAME} ${UI_DEMO_EXEC_VALA_C})
282+
target_include_directories (${UI_DEMO_EXEC_NAME} PRIVATE ${GRX3_INCLUDEDIR})
264283
target_link_libraries (${UI_DEMO_EXEC_NAME} ${EXEC_LIBRARY_DEPENDS})
265284
if (CMAKE_CROSSCOMPILING)
266285
# These are not picked up automatically when cross compiling for some reason
@@ -270,6 +289,7 @@ if (EV3DEVKIT_BUILD_DEMO)
270289
add_custom_target (run-${UI_DEMO_EXEC_NAME}
271290
COMMAND
272291
XDG_DATA_DIRS=${XDG_DATA_DIR}:/usr/local/share:/usr/share
292+
${GRX3_PLUGINDIR_ENV}
273293
./${UI_DEMO_EXEC_NAME}
274294
DEPENDS ${UI_DEMO_EXEC_NAME}
275295
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
@@ -291,6 +311,7 @@ if (VALADOC_FOUND)
291311
${GIR_VERSION}
292312
OPTIONS
293313
--target-glib=${TARGET_GLIB}
314+
${GRX3_VAPIDIR_OPTION}
294315
PACKAGES
295316
${COMMON_PACKAGES}
296317
)

0 commit comments

Comments
 (0)