@@ -21,11 +21,8 @@ set (EV3DEVKIT_PACKAGE ${PROJECT_NAME}-${GIR_VERSION})
2121set (LIBRARY_NAME "${EV3DEVKIT_PACKAGE} " )
2222set (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
3027add_subdirectory (data )
3128set (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+
5766configure_file (src/Version.vala.in Version .vala )
5867# convert CMake list to space separated string for pkgconfig file
5968string (REPLACE ";" " " PKGCONFIG_DEPS "${COMMON_MODULES} " )
@@ -137,6 +146,8 @@ CUSTOM_VAPIS
137146 bindings/*.vapi
138147OPTIONS
139148 --target-glib=${TARGET_GLIB}
149+ ${GRX3_VAPIDIR_OPTION}
150+ ${GRX3_GIRDIR_OPTION}
140151GENERATE_VAPI
141152 ${EV3DEVKIT_PACKAGE}
142153GENERATE_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
193205add_library (${LIBRARY_NAME} OBJECT ${LIBRARY_VALA_C} )
206+ target_include_directories (${LIBRARY_NAME} PRIVATE ${GRX3_INCLUDEDIR} )
194207set_target_properties (${LIBRARY_NAME} PROPERTIES POSITION_INDEPENDENT_CODE 1 )
195208add_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} )
197210set_target_properties (${LIBRARY_NAME} -shared PROPERTIES
198211 VERSION "${VERSION} "
199212 SOVERSION "${SOVERSION} "
200213 OUTPUT_NAME ${LIBRARY_NAME} )
201214add_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} )
203216set_target_properties (${LIBRARY_NAME} -static PROPERTIES
204217 OUTPUT_NAME ${LIBRARY_NAME} )
205218add_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