1 if(DBUS_BUILD_TESTS AND CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
2 if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
3 find_file(WINE_EXECUTABLE
5 PATHS /usr/bin /usr/local/bin
6 NO_CMAKE_FIND_ROOT_PATH
8 find_file(BINFMT_WINE_SUPPORT_FILE
9 NAMES DOSWin wine Wine windows Windows
10 PATHS /proc/sys/fs/binfmt_misc
11 NO_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH
13 if(BINFMT_WINE_SUPPORT_FILE)
14 file(READ ${BINFMT_WINE_SUPPORT_FILE} CONTENT)
15 if(${CONTENT} MATCHES "enabled")
16 set(HAVE_BINFMT_WINE_SUPPORT 1)
20 list(APPEND FOOTNOTES "NOTE: The requirements to run cross compiled applications on your host system are achieved. You may run 'make check'.")
22 if(NOT WINE_EXECUTABLE)
23 list(APPEND FOOTNOTES "NOTE: You may install the Windows emulator 'wine' to be able to run cross compiled test applications.")
25 if(NOT HAVE_BINFMT_WINE_SUPPORT)
26 list(APPEND FOOTNOTES "NOTE: You may activate binfmt_misc support for wine to be able to run cross compiled test applications directly.")
29 list(APPEND FOOTNOTES "NOTE: You will not be able to run cross compiled applications on your host system.")
33 MACRO(TIMESTAMP RESULT)
34 if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
35 EXECUTE_PROCESS(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE DATE)
36 string(REGEX REPLACE "(..)[/.](..)[/.](....).*" "\\3\\2\\1" DATE ${DATE})
37 EXECUTE_PROCESS(COMMAND "cmd" " /C time /T" OUTPUT_VARIABLE TIME)
38 string(REGEX REPLACE "(..):(..)" "\\1\\2" TIME ${TIME})
39 set (${RESULT} "${DATE}${TIME}")
41 EXECUTE_PROCESS(COMMAND "date" "+%Y%m%d%H%M" OUTPUT_VARIABLE ${RESULT})
45 macro(add_test_executable _target _source)
46 add_executable(${_target} ${_source})
47 target_link_libraries(${_target} ${ARGN})
48 if (CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
49 # run tests with binfmt_misc
51 set(_env "DBUS_TEST_DAEMON=${PREFIX}${CMAKE_BINARY_DIR}/bin/dbus-daemon${EXEEXT}")
52 if(HAVE_BINFMT_WINE_SUPPORT)
53 add_test(NAME ${_target} COMMAND $<TARGET_FILE:${_target}> --tap)
55 add_test(NAME ${_target} COMMAND ${WINE_EXECUTABLE} ${PREFIX}$<TARGET_FILE:${_target}> --tap)
59 set(_env "DBUS_TEST_DAEMON=${CMAKE_BINARY_DIR}/bin/dbus-daemon${EXEEXT}")
60 add_test(NAME ${_target} COMMAND $<TARGET_FILE:${_target}> --tap)
62 list(APPEND _env "DBUS_SESSION_BUS_ADDRESS=")
63 list(APPEND _env "DBUS_FATAL_WARNINGS=1")
64 list(APPEND _env "DBUS_TEST_DATA=${PREFIX}${CMAKE_BINARY_DIR}/test/data")
65 list(APPEND _env "DBUS_TEST_DBUS_LAUNCH=${PREFIX}${CMAKE_BINARY_DIR}/bin/dbus-launch${EXEEXT}")
66 list(APPEND _env "DBUS_TEST_HOMEDIR=${PREFIX}${CMAKE_BINARY_DIR}/dbus")
67 set_tests_properties(${_target} PROPERTIES ENVIRONMENT "${_env}")
68 endmacro(add_test_executable)
70 macro(add_helper_executable _target _source)
71 add_executable(${_target} ${_source})
72 target_link_libraries(${_target} ${ARGN})
73 endmacro(add_helper_executable)
77 # generate compiler flags from MSVC warning identifiers (e.g. '4114') or gcc warning keys (e.g. 'pointer-sign')
79 # @param target the variable name which will contain the warnings flags
80 # @param warnings a string with space delimited warnings
81 # @param disabled_warnings a string with space delimited disabled warnings
82 # @param error_warnings a string with space delimited warnings which should result into compile errors
84 macro(generate_warning_cflags target warnings disabled_warnings error_warnings)
86 message("generate_warning_cflags got: ${warnings} - ${disabled_warnings} - ${error_warnings}")
90 set(enabled_prefix "/w1")
91 set(error_prefix "/we")
92 set(disabled_prefix "/wd")
94 set(enabled_prefix "-W")
95 set(error_prefix "-Werror=")
96 set(disabled_prefix "-Wno-")
100 string(REPLACE " " ";" warnings_list "${warnings}")
101 foreach(warning ${warnings_list})
102 string(STRIP ${warning} _warning)
104 set(temp "${temp} ${enabled_prefix}${_warning}")
108 string(REPLACE " " ";" disabled_warnings_list "${disabled_warnings}")
109 foreach(warning ${disabled_warnings_list})
110 string(STRIP ${warning} _warning)
112 set(temp "${temp} ${disabled_prefix}${_warning}")
116 string(REPLACE " " ";" error_warnings_list "${error_warnings}")
117 foreach(warning ${error_warnings_list})
118 string(STRIP ${warning} _warning)
120 set(temp "${temp} ${error_prefix}${_warning}")
123 set(${target} "${temp}")
125 message("generate_warning_cflags return: ${${target}}")