diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/modules/add_gpg_crypto_test.cmake | 61 | ||||
-rw-r--r-- | cmake/modules/generate_crypto_test_wrapper.cmake | 45 |
2 files changed, 106 insertions, 0 deletions
diff --git a/cmake/modules/add_gpg_crypto_test.cmake b/cmake/modules/add_gpg_crypto_test.cmake new file mode 100644 index 00000000..c3df76c9 --- /dev/null +++ b/cmake/modules/add_gpg_crypto_test.cmake | |||
@@ -0,0 +1,61 @@ | |||
1 | # Copyright (c) 2013 Sandro Knauß <mail@sandroknauss.de> | ||
2 | # | ||
3 | # Redistribution and use is allowed according to the terms of the BSD license. | ||
4 | # For details see the accompanying COPYING-CMAKE-SCRIPTS file. | ||
5 | |||
6 | set( MIMETREEPARSERRELPATH framework/src/domain/mime/mimetreeparser) | ||
7 | set( GNUPGHOME ${CMAKE_BINARY_DIR}/${MIMETREEPARSERRELPATH}/tests/gnupg_home ) | ||
8 | add_definitions( -DGNUPGHOME="${GNUPGHOME}" ) | ||
9 | |||
10 | macro (ADD_GPG_CRYPTO_TEST _target _testname) | ||
11 | if (UNIX) | ||
12 | if (APPLE) | ||
13 | set(_library_path_variable "DYLD_LIBRARY_PATH") | ||
14 | elseif (CYGWIN) | ||
15 | set(_library_path_variable "PATH") | ||
16 | else (APPLE) | ||
17 | set(_library_path_variable "LD_LIBRARY_PATH") | ||
18 | endif (APPLE) | ||
19 | |||
20 | if (APPLE) | ||
21 | # DYLD_LIBRARY_PATH does not work like LD_LIBRARY_PATH | ||
22 | # OSX already has the RPATH in libraries and executables, putting runtime directories in | ||
23 | # DYLD_LIBRARY_PATH actually breaks things | ||
24 | set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/") | ||
25 | else (APPLE) | ||
26 | set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${LIB_INSTALL_DIR}:${QT_LIBRARY_DIR}") | ||
27 | endif (APPLE) | ||
28 | set(_executable "$<TARGET_FILE:${_target}>") | ||
29 | |||
30 | # use add_custom_target() to have the sh-wrapper generated during build time instead of cmake time | ||
31 | add_custom_command(TARGET ${_target} POST_BUILD | ||
32 | COMMAND ${CMAKE_COMMAND} | ||
33 | -D_filename=${_executable}.shell -D_library_path_variable=${_library_path_variable} | ||
34 | -D_ld_library_path="${_ld_library_path}" -D_executable=$<TARGET_FILE:${_target}> | ||
35 | -D_gnupghome="${GNUPGHOME}" | ||
36 | -P ${CMAKE_SOURCE_DIR}/cmake/modules/generate_crypto_test_wrapper.cmake | ||
37 | ) | ||
38 | |||
39 | set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_executable}.shell" ) | ||
40 | add_test(NAME ${_testname} COMMAND ${_executable}.shell) | ||
41 | |||
42 | else (UNIX) | ||
43 | # under windows, set the property WRAPPER_SCRIPT just to the name of the executable | ||
44 | # maybe later this will change to a generated batch file (for setting the PATH so that the Qt libs are found) | ||
45 | set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}\;${LIB_INSTALL_DIR}\;${QT_LIBRARY_DIR}") | ||
46 | set(_executable "$<TARGET_FILE:${_target}>") | ||
47 | |||
48 | # use add_custom_target() to have the batch-file-wrapper generated during build time instead of cmake time | ||
49 | add_custom_command(TARGET ${_target} POST_BUILD | ||
50 | COMMAND ${CMAKE_COMMAND} | ||
51 | -D_filename="${_executable}.bat" | ||
52 | -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}" | ||
53 | -D_gnupghome="${GNUPGHOME}" | ||
54 | -P ${CMAKE_SOURCE_DIR}/cmake/modules/generate_crypto_test_wrapper.cmake | ||
55 | ) | ||
56 | |||
57 | add_test(NAME ${_testname} COMMAND ${_executable}.bat) | ||
58 | |||
59 | endif (UNIX) | ||
60 | endmacro (ADD_GPG_CRYPTO_TEST) | ||
61 | |||
diff --git a/cmake/modules/generate_crypto_test_wrapper.cmake b/cmake/modules/generate_crypto_test_wrapper.cmake new file mode 100644 index 00000000..e1412f37 --- /dev/null +++ b/cmake/modules/generate_crypto_test_wrapper.cmake | |||
@@ -0,0 +1,45 @@ | |||
1 | # Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org> | ||
2 | # Copyright (c) 2013, Sandro Knauß <mail@sandroknauss.de> | ||
3 | # | ||
4 | # Redistribution and use is allowed according to the terms of the BSD license. | ||
5 | # For details see the accompanying COPYING-CMAKE-SCRIPTS file. | ||
6 | |||
7 | |||
8 | if (UNIX) | ||
9 | |||
10 | file(WRITE "${_filename}" | ||
11 | "#!/bin/sh | ||
12 | # created by cmake, don't edit, changes will be lost | ||
13 | |||
14 | # don't mess with a gpg-agent already running on the system | ||
15 | unset GPG_AGENT_INFO | ||
16 | |||
17 | ${_library_path_variable}=${_ld_library_path}\${${_library_path_variable}:+:\$${_library_path_variable}} GNUPGHOME=${_gnupghome} gpg-agent --daemon \"${_executable}\" \"$@\" | ||
18 | _result=$? | ||
19 | _pid=`echo GETINFO pid | GNUPGHOME=${_gnupghome} gpg-connect-agent | grep 'D' | cut -d' ' -f2` | ||
20 | if [ ! -z \"\$_pid\" ]; then | ||
21 | echo \"Waiting for gpg-agent to terminate (PID: $_pid)...\" | ||
22 | while kill -0 \"\$_pid\"; do | ||
23 | sleep 1 | ||
24 | done | ||
25 | fi | ||
26 | exit \$_result | ||
27 | ") | ||
28 | |||
29 | # make it executable | ||
30 | # since this is only executed on UNIX, it is safe to call chmod | ||
31 | exec_program(chmod ARGS ug+x \"${_filename}\" OUTPUT_VARIABLE _dummy ) | ||
32 | |||
33 | else (UNIX) | ||
34 | |||
35 | file(TO_NATIVE_PATH "${_ld_library_path}" win_path) | ||
36 | file(TO_NATIVE_PATH "${_gnupghome}" win_gnupghome) | ||
37 | |||
38 | file(WRITE "${_filename}" | ||
39 | " | ||
40 | set PATH=${win_path};$ENV{PATH} | ||
41 | set GNUPGHOME=${win_gnupghome};$ENV{GNUPGHOME} | ||
42 | gpg-agent --daemon \"${_executable}\" %* | ||
43 | ") | ||
44 | |||
45 | endif (UNIX) | ||