Warning, /pim/messagelib/cmake/modules/kdepim_add_gpg_crypto_test.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2013 Sandro Knauß <mail@sandroknauss.de>
0002 #
0003 # SPDX-License-Identifier: BSD-3-Clause
0004 
0005 set( GNUPGHOME ${CMAKE_BINARY_DIR}/messagecore/autotests/gnupg_home )
0006 
0007 macro (ADD_GPG_CRYPTO_TEST _target _testname)
0008    if (UNIX)
0009       if (APPLE)
0010          set(_library_path_variable "DYLD_LIBRARY_PATH")
0011       elseif (CYGWIN)
0012          set(_library_path_variable "PATH")
0013       else (APPLE)
0014          set(_library_path_variable "LD_LIBRARY_PATH")
0015       endif (APPLE)
0016 
0017       if (APPLE)
0018          # DYLD_LIBRARY_PATH does not work like LD_LIBRARY_PATH
0019          # OSX already has the RPATH in libraries and executables, putting runtime directories in
0020          # DYLD_LIBRARY_PATH actually breaks things
0021          set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/")
0022       else (APPLE)
0023          set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${KDE_INSTALL_LIBDIR}:${QT_LIBRARY_DIR}")
0024       endif (APPLE)
0025       set(_executable "$<TARGET_FILE:${_target}>")
0026 
0027       # use add_custom_target() to have the sh-wrapper generated during build time instead of cmake time
0028       add_custom_command(TARGET ${_target} POST_BUILD
0029         COMMAND ${CMAKE_COMMAND}
0030         -D_filename=${_executable}.shell -D_library_path_variable=${_library_path_variable}
0031         -D_ld_library_path="${_ld_library_path}" -D_executable=$<TARGET_FILE:${_target}>
0032         -D_gnupghome="${GNUPGHOME}"
0033         -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
0034       )
0035 
0036       set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_executable}.shell" )
0037       add_test(NAME ${_testname} COMMAND ${_executable}.shell)
0038 
0039    else (UNIX)
0040       # under windows, set the property WRAPPER_SCRIPT just to the name of the executable
0041       # maybe later this will change to a generated batch file (for setting the PATH so that the Qt libs are found)
0042       set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}\;${KDE_INSTALL_LIBDIR}\;${QT_LIBRARY_DIR}")
0043       set(_executable "$<TARGET_FILE:${_target}>")
0044 
0045       # use add_custom_target() to have the batch-file-wrapper generated during build time instead of cmake time
0046       add_custom_command(TARGET ${_target} POST_BUILD
0047          COMMAND ${CMAKE_COMMAND}
0048          -D_filename="${_executable}.bat"
0049          -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}"
0050          -D_gnupghome="${GNUPGHOME}"
0051          -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
0052          )
0053 
0054       add_test(NAME ${_testname} COMMAND ${_executable}.bat)
0055 
0056    endif (UNIX)
0057 
0058    # can't be parallelized due to gpg-agent
0059    set_tests_properties(${_testname} PROPERTIES RUN_SERIAL TRUE)
0060 endmacro (ADD_GPG_CRYPTO_TEST)
0061 
0062 macro (ADD_GPG_CRYPTO_AKONADI_TEST _target _testname)
0063     set(_executable "$<TARGET_FILE:${_target}>")
0064 
0065     if (UNIX)
0066         if (APPLE)
0067             set(_library_path_variable "DYLD_LIBRARY_PATH")
0068         elseif (CYGWIN)
0069             set(_library_path_variable "PATH")
0070         else (APPLE)
0071             set(_library_path_variable "LD_LIBRARY_PATH")
0072         endif (APPLE)
0073 
0074         if (APPLE)
0075             # DYLD_LIBRARY_PATH does not work like LD_LIBRARY_PATH
0076             # OSX already has the RPATH in libraries and executables, putting runtime directories in
0077             # DYLD_LIBRARY_PATH actually breaks things
0078             set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/")
0079         else (APPLE)
0080             set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${KDE_INSTALL_LIBDIR}:${QT_LIBRARY_DIR}")
0081         endif (APPLE)
0082 
0083         set(_posix "shell")
0084         set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_executable}.${_posix}" )
0085 
0086         # use add_custom_target() to have the sh-wrapper generated during build time instead of cmake time
0087         add_custom_command(TARGET ${_target} POST_BUILD
0088             COMMAND ${CMAKE_COMMAND}
0089             -D_filename=${_executable}.${_posix} -D_library_path_variable=${_library_path_variable}
0090             -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}"
0091             -D_gnupghome="${GNUPGHOME}"
0092             -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
0093         )
0094 
0095 
0096     else (UNIX)
0097         # under windows, set the property WRAPPER_SCRIPT just to the name of the executable
0098         # maybe later this will change to a generated batch file (for setting the PATH so that the Qt libs are found)
0099         set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}\;${KDE_INSTALL_LIBDIR}\;${QT_LIBRARY_DIR}")
0100         set(_posix "bat")
0101 
0102         # use add_custom_target() to have the batch-file-wrapper generated during build time instead of cmake time
0103         add_custom_command(TARGET ${_target} POST_BUILD
0104             COMMAND ${CMAKE_COMMAND}
0105             -D_filename="${_executable}.${_posix}"
0106             -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}"
0107             -D_gnupghome="${GNUPGHOME}"
0108             -P ${CMAKE_SOURCE_DIR}/cmake/modules/kdepim_generate_crypto_test_wrapper.cmake
0109         )
0110 
0111     endif ()
0112 
0113     if (NOT DEFINED _testrunner)
0114         find_program(_testrunner NAMES akonaditest akonaditest.exe)
0115         if (NOT _testrunner)
0116             message(WARNING "Could not locate akonaditest executable, isolated Akonadi tests will fail!")
0117         endif()
0118     endif()
0119 
0120     function(_defineTest name backend)
0121         set(backends ${ARGN})
0122         if (NOT DEFINED AKONADI_RUN_${backend}_ISOLATED_TESTS OR AKONADI_RUN_${backend}_ISOLATED_TESTS)
0123             LIST(LENGTH "${backends}" backendsLen)
0124             string(TOLOWER ${backend} lcbackend)
0125             LIST(FIND "${backends}" ${lcbackend} enableBackend)
0126             if (${backendsLen} EQUAL 0 OR ${enableBackend} GREATER -1)
0127                 set(configFile ${CMAKE_CURRENT_SOURCE_DIR}/unittestenv/config.xml)
0128                 if (AKONADI_TESTS_XML)
0129                     set(extraOptions -xml -o "${TEST_RESULT_OUTPUT_PATH}/${lcbackend}-${name}.xml")
0130                 endif()
0131                 set(_test_name akonadi-${lcbackend}-${name})
0132                 add_test(NAME ${_test_name}
0133                             COMMAND ${_testrunner} -c "${configFile}" -b ${lcbackend}
0134                                     "${_executable}.${_posix}" ${extraOptions}
0135                 )
0136                 # Taken from ECMAddTests.cmake
0137                 if (CMAKE_LIBRARY_OUTPUT_DIRECTORY)
0138                     if(CMAKE_HOST_SYSTEM MATCHES "Windows")
0139                         set(PATHSEP ";")
0140                     else() # e.g. Linux
0141                         set(PATHSEP ":")
0142                     endif()
0143                     set(_plugin_path $ENV{QT_PLUGIN_PATH})
0144                     set(_test_env
0145                         QT_PLUGIN_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}${PATHSEP}$ENV{QT_PLUGIN_PATH}
0146                         LD_LIBRARY_PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}${PATHSEP}$ENV{LD_LIBRARY_PATH}
0147                     )
0148                     set_tests_properties(${_test_name} PROPERTIES ENVIRONMENT "${_test_env}")
0149                 endif()
0150                 set_tests_properties(${_test_name} PROPERTIES RUN_SERIAL TRUE) # can't be parallelized due to gpg-agent
0151             endif()
0152         endif()
0153     endfunction()
0154 
0155     find_program(MYSQLD_EXECUTABLE mysqld /usr/sbin /usr/local/sbin /usr/libexec /usr/local/libexec /opt/mysql/libexec /usr/mysql/bin)
0156     if (MYSQLD_EXECUTABLE AND NOT WIN32)
0157         _defineTest(${_testname} "MYSQL" ${CONFIG_BACKENDS})
0158     endif()
0159 
0160     find_program(POSTGRES_EXECUTABLE postgres)
0161     if (POSTGRES_EXECUTABLE AND NOT WIN32)
0162         _defineTest(${_testname} "PGSQL" ${CONFIG_BACKENDS})
0163     endif()
0164 
0165     _defineTest(${_testname} "SQLITE" ${CONFIG_BACKENDS})
0166 endmacro (ADD_GPG_CRYPTO_AKONADI_TEST)