@@ -15,22 +15,28 @@ set(QMLTEST_OPTIONS ADD_TEST CACHE INTERNAL "")
1515set(QMLTEST_SINGLE ITERATIONS ARG_PREFIX CACHE INTERNAL "")
1616set(QMLTEST_MULTI ARGS ENVIRONMENT DEPENDS IMPORT_PATHS TARGETS CACHE INTERNAL "")
1717
18−# import_executables(name1 [name2 [...]])
18+# import_executables(name1 [name2 [...]]
19+# [OPTIONAL] # continue when not found
20+# )
1921#
2022# This will find the named executables and import them
2123# to an imported target of the same name.
2224
2325function(import_executables)
24− foreach(NAME ${ARGN})
26+ cmake_parse_arguments(QMLTEST "OPTIONAL" "" "" ${ARGN})
27+
28+ foreach(NAME ${QMLTEST_UNPARSED_ARGUMENTS})
2529 if(NOT TARGET ${NAME})
30+ add_executable(${NAME} IMPORTED GLOBAL)
2631 find_program(${NAME}_exe ${NAME})
2732
28− if(NOT ${NAME}_exe)
33+ if(NOT QMLTEST_OPTIONAL AND NOT ${NAME}_exe)
2934 message(FATAL_ERROR "Could not locate ${NAME}.")
35+ elseif(NOT ${NAME}_exe)
36+ message(STATUS "Could not locate ${NAME}, skipping.")
37+ else()
38+ set_target_properties(${NAME} PROPERTIES IMPORTED_LOCATION ${${NAME}_exe})
3039 endif()
31−
32− add_executable(${NAME} IMPORTED)
33− set_target_properties(${NAME} PROPERTIES IMPORTED_LOCATION ${${NAME}_exe})
3440 endif()
3541 endforeach()
3642endfunction()
@@ -117,7 +123,7 @@ endfunction()
117123# - gdbtest${component_name} - Runs the test under gdb
118124
119125function(add_executable_test COMPONENT_NAME TARGET)
120− import_executables(gdb xvfb-run)
126+ import_executables(gdb xvfb-run OPTIONAL)
121127
122128 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
123129 mangle_arguments()
@@ -146,18 +152,22 @@ function(add_executable_test COMPONENT_NAME TARGET)
146152 ${targets}
147153 )
148154
149− add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
150− COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
151− ${depends}
152− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT} LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1
153− TARGETS ${xvfb_targets}
154− )
155+ if(TARGET xvfb-run)
156+ add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
157+ COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
158+ ${depends}
159+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT} LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1
160+ TARGETS ${xvfb_targets}
161+ )
162+ endif()
155163
156− add_qmltest_target(gdbtest${COMPONENT_NAME} ${TARGET}
157− COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltest_command}
158− ${depends}
159− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
160− )
164+ if(TARGET gdb)
165+ add_qmltest_target(gdbtest${COMPONENT_NAME} ${TARGET}
166+ COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltest_command}
167+ ${depends}
168+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
169+ )
170+ endif()
161171endfunction()
162172
163173
@@ -173,7 +183,7 @@ endfunction()
173183# - gdbtry${component_name} - Runs the test under gdb
174184
175185function(add_manual_test COMPONENT_NAME TARGET)
176− import_executables(gdb)
186+ import_executables(gdb OPTIONAL)
177187
178188 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
179189 mangle_arguments()
@@ -192,11 +202,13 @@ function(add_manual_test COMPONENT_NAME TARGET)
192202 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
193203 )
194204
195− add_qmltest_target(gdbtry${COMPONENT_NAME} ${TARGET}
196− COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltry_command}
197− ${depends}
198− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
199− )
205+ if(TARGET gdb)
206+ add_qmltest_target(gdbtry${COMPONENT_NAME} ${TARGET}
207+ COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltry_command}
208+ ${depends}
209+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
210+ )
211+ endif()
200212endfunction()
201213
202214