diff options
author | Alex Merry <alex.merry@kde.org> | 2014-12-17 20:33:32 +0000 |
---|---|---|
committer | Alex Merry <alex.merry@kde.org> | 2014-12-28 15:43:52 +0000 |
commit | 107f255620b6284de118aa1f358ab6cf99862ae9 (patch) | |
tree | d3f023bd38a2ff748ed0ebf4439493bff6a8ee03 /tests | |
parent | 69939eef4f828e881edd387b129128cb252f7ab3 (diff) | |
download | extra-cmake-modules-107f255620b6284de118aa1f358ab6cf99862ae9.tar.gz extra-cmake-modules-107f255620b6284de118aa1f358ab6cf99862ae9.tar.bz2 |
Make KDEInstallDirs provide KDE_INSTALL_* variables.
Creating variables whose names start with CMAKE_ is a bad idea for
modules distributed outside CMake itself. Since the module is called
KDEInstallDirs, having a KDE_INSTALL_ prefix for the variables is clear
and intuitive.
Both CMAKE_INSTALL_* variables and the older KDELibs4-compatible
variables are provided, unless KDE_INSTALL_DIRS_NO_DEPRECATED is set to
TRUE before the module is included. Even then, the CMAKE_INSTALL_*
variables provided by the GNUInstallDirs module will still be set and
understood (for compatibility with that module), unless
KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES is set to TRUE.
REVIEW: 121646
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 45 | ||||
-rw-r--r-- | tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt | 39 | ||||
-rw-r--r-- | tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt | 174 | ||||
-rw-r--r-- | tests/KDEInstallDirsTest/vars_in_sync/main.c | 4 |
4 files changed, 246 insertions, 16 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0ee544a5..fe160b8c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,20 +10,24 @@ add_subdirectory(ECMGeneratePkgConfigFile) # a macro for tests that have a simple format where the name matches the # directory and project -macro(ADD_TEST_MACRO NAME COMMAND) - string(REPLACE "." "/" dir "${NAME}") - string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}") - add_test(${NAME} ${CMAKE_CTEST_COMMAND} - --build-and-test - "${CMAKE_CURRENT_SOURCE_DIR}/${dir}" - "${CMAKE_CURRENT_BINARY_DIR}/${dir}" - --build-two-config - --build-generator ${CMAKE_GENERATOR} - --build-makeprogram ${CMAKE_MAKE_PROGRAM} - --build-project ${proj} - ${${NAME}_EXTRA_OPTIONS} - --test-command ${COMMAND} ${ARGN}) -endmacro(ADD_TEST_MACRO) +macro(add_test_variant NAME BASE COMMAND) + string(REPLACE "." "/" src_dir "${BASE}") + string(REPLACE "." "/" build_dir "${NAME}") + string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}") + add_test(${NAME} ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/${src_dir}" + "${CMAKE_CURRENT_BINARY_DIR}/${build_dir}" + --build-two-config + --build-generator ${CMAKE_GENERATOR} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-project ${proj} + ${${NAME}_EXTRA_OPTIONS} + --test-command ${COMMAND} ${ARGN}) +endmacro() +macro(add_test_macro NAME) + add_test_variant("${NAME}" "${NAME}" ${ARGN}) +endmacro() find_package(Qt5LinguistTools CONFIG) @@ -32,9 +36,22 @@ add_test_macro(ExecuteKDEModules dummy) add_test_macro(KDEInstallDirsTest.vars_defined dummy) add_test_macro(KDEInstallDirsTest.not_cache_variable dummy) + +add_test_variant(KDEInstallDirsTest.vars_in_sync_no_args + KDEInstallDirsTest.vars_in_sync dummy) + +set(KDEInstallDirsTest.vars_in_sync_args_EXTRA_OPTIONS + --build-options -DCMAKE_INSTALL_DATADIR=altdata + -DKDE_INSTALL_BINDIR=altbin + -DLIB_INSTALL_DIR=altlib + ) +add_test_variant(KDEInstallDirsTest.vars_in_sync_args + KDEInstallDirsTest.vars_in_sync dummy) + set(KDEInstallDirsTest.usr_vars_defined_EXTRA_OPTIONS --build-options -DCMAKE_INSTALL_PREFIX=/usr) add_test_macro(KDEInstallDirsTest.usr_vars_defined dummy) + find_package(Qt5Core QUIET) if (TARGET Qt5::qmake) set(KDEInstallDirsTest.qt_vars_defined_EXTRA_OPTIONS diff --git a/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt b/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt index ea62d95b..8ddbb27a 100644 --- a/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt +++ b/tests/KDEInstallDirsTest/not_cache_variable/CMakeLists.txt @@ -4,9 +4,44 @@ cmake_minimum_required(VERSION 2.8) set(ECM_KDE_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../kde-modules) set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +set(CMAKE_MODULE_PATH "${ECM_KDE_MODULE_DIR}") -set(CMAKE_INSTALL_LIBDIR "foo") -include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake) +set(KDE_INSTALL_BINDIR "altbin") +set(CMAKE_INSTALL_DATADIR "altdata") +set(LIB_INSTALL_DIR "altlib") + +include(KDEInstallDirs) + + +include(../var_list.cmake) +include(../../test_helpers.cmake) + +message(STATUS "Checking result of setting KDE_INSTALL_BINDIR") +assert_var_str_value(KDE_INSTALL_BINDIR "altbin") +if(should_set_CMAKE_INSTALL_BINDIR) + assert_var_str_value(CMAKE_INSTALL_BINDIR "altbin") +endif() +if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED) + assert_var_str_value(BIN_INSTALL_DIR "altbin") +endif() + +if(should_set_CMAKE_INSTALL_DATADIR) + message(STATUS "Checking result of setting CMAKE_INSTALL_DATADIR") + assert_var_str_value(KDE_INSTALL_DATADIR "altdata") + assert_var_str_value(CMAKE_INSTALL_DATADIR "altdata") + if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED) + assert_var_str_value(DATA_INSTALL_DIR "altdata") + endif() +endif() + +if(NOT KDE_INSTALL_DIRS_NO_DEPRECATED) + message(STATUS "Checking result of setting LIB_INSTALL_DIR") + assert_var_str_value(KDE_INSTALL_LIBDIR "altlib") + if(should_set_CMAKE_INSTALL_LIBDIR) + assert_var_str_value(CMAKE_INSTALL_LIBDIR "altlib") + endif() + assert_var_str_value(LIB_INSTALL_DIR "altlib") +endif() add_executable(dummy main.c) set_target_properties(dummy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt b/tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt new file mode 100644 index 00000000..4249ed0d --- /dev/null +++ b/tests/KDEInstallDirsTest/vars_in_sync/CMakeLists.txt @@ -0,0 +1,174 @@ +project(KDEInstallDirs.vars_in_sync) +cmake_minimum_required(VERSION 2.8.12) + +set(ECM_KDE_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../kde-modules) +set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +set(CMAKE_MODULE_PATH "${ECM_KDE_MODULE_DIR}") +include(KDEInstallDirs) + +set(var_suffixes + APPDIR + AUTOSTARTDIR + BINDIR + CMAKEPACKAGEDIR + CONFDIR + DATADIR + DATADIR_KF5 + DATAROOTDIR + DBUSDIR + DBUSINTERFACEDIR + DBUSSERVICEDIR + DBUSSYSTEMSERVICEDIR + DESKTOPDIR + DOCBUNDLEDIR + EXECROOTDIR + ICONDIR + INCLUDEDIR + INCLUDEDIR_KF5 + INFODIR + KCFGDIR + KCONFUPDATEDIR + KNOTIFY5RCDIR + KXMLGUI5DIR + KSERVICES5DIR + KSERVICETYPES5DIR + LIBDIR + LIBEXECDIR + LIBEXECDIR_KF5 + LOCALEDIR + LOCALSTATEDIR + MANDIR + MIMEDIR + METAINFODIR + PLUGINDIR + QMLDIR + QTPLUGINDIR + QTQUICKIMPORTSDIR + SBINDIR + SHAREDSTATEDIR + SOUNDDIR + SYSCONFDIR + TEMPLATEDIR + WALLPAPERDIR) + +set(COMPAT_APPDIR XDG_APPS_INSTALL_DIR) +set(COMPAT_AUTOSTARTDIR AUTOSTART_INSTALL_DIR) +set(COMPAT_BINDIR BIN_INSTALL_DIR) +set(COMPAT_CMAKEPACKAGEDIR CMAKECONFIG_INSTALL_PREFIX) +set(COMPAT_CONFDIR CONFIG_INSTALL_DIR) +set(COMPAT_DATADIR DATA_INSTALL_DIR) +set(COMPAT_DATADIR_KF5 KF5_DATA_INSTALL_DIR) +set(COMPAT_DATAROOTDIR SHARE_INSTALL_PREFIX) +set(COMPAT_DBUSINTERFACEDIR DBUS_INTERFACES_INSTALL_DIR) +set(COMPAT_DBUSSERVICEDIR DBUS_SERVICES_INSTALL_DIR) +set(COMPAT_DBUSSYSTEMSERVICEDIR DBUS_SYSTEM_SERVICES_INSTALL_DIR) +set(COMPAT_DESKTOPDIR XDG_DIRECTORY_INSTALL_DIR) +set(COMPAT_DOCBUNDLEDIR HTML_INSTALL_DIR) +set(COMPAT_EXECROOTDIR EXEC_INSTALL_PREFIX) +set(COMPAT_ICONDIR ICON_INSTALL_DIR) +set(COMPAT_INCLUDEDIR INCLUDE_INSTALL_DIR) +set(COMPAT_INCLUDEDIR_KF5 KF5_INCLUDE_INSTALL_DIR) +set(COMPAT_KCFGDIR KCFG_INSTALL_DIR) +set(COMPAT_KCONFUPDATEDIR KCONF_UPDATE_INSTALL_DIR) +set(COMPAT_KNOTIFY5RCDIR KNOTIFYRC_INSTALL_DIR) +set(COMPAT_KXMLGUI5DIR KXMLGUI_INSTALL_DIR) +set(COMPAT_KSERVICES5DIR SERVICES_INSTALL_DIR) +set(COMPAT_KSERVICETYPES5DIR SERVICETYPES_INSTALL_DIR) +set(COMPAT_LIBDIR LIB_INSTALL_DIR) +set(COMPAT_LIBEXECDIR LIBEXEC_INSTALL_DIR) +set(COMPAT_LIBEXECDIR_KF5 KF5_LIBEXEC_INSTALL_DIR) +set(COMPAT_LOCALEDIR LOCALE_INSTALL_DIR) +set(COMPAT_MANDIR MAN_INSTALL_DIR) +set(COMPAT_MIMEDIR XDG_MIME_INSTALL_DIR) +set(COMPAT_PLUGINDIR PLUGIN_INSTALL_DIR) +set(COMPAT_QMLDIR QML_INSTALL_DIR) +set(COMPAT_QTPLUGINDIR QT_PLUGIN_INSTALL_DIR) +set(COMPAT_QTQUICKIMPORTSDIR IMPORTS_INSTALL_DIR) +set(COMPAT_SBINDIR SBIN_INSTALL_DIR) +set(COMPAT_SOUNDDIR SOUND_INSTALL_DIR) +set(COMPAT_SYSCONFDIR SYSCONF_INSTALL_DIR) +set(COMPAT_TEMPLATEDIR TEMPLATES_INSTALL_DIR) +set(COMPAT_WALLPAPERDIR WALLPAPER_INSTALL_DIR) +if(APPLE) + set(COMPAT_BUNDLEDIR BUNDLE_INSTALL_DIR) + list(APPEND var_suffixes BUNDLEDIR) +endif() + +set(gnu_install_dirs_suffixes + BINDIR + SBINDIR + LIBEXECDIR + SYSCONFDIR + SHAREDSTATEDIR + LOCALSTATEDIR + LIBDIR + INCLUDEDIR + OLDINCLUDEDIR + DATAROOTDIR + DATADIR + INFODIR + LOCALEDIR + MANDIR + DOCDIR) + +macro(assert_defined varname) + if(NOT DEFINED ${varname}) + message(SEND_ERROR "${varname} is not defined.") + endif() +endmacro() +macro(assert_non_empty varname) + assert_defined(${varname}) + if(NOT ${varname}) + message(SEND_ERROR "${varname} is empty") + endif() +endmacro() +macro(assert_str_equal varname exp_varname) + assert_defined(${varname}) + if(NOT ${varname} STREQUAL ${exp_varname}) + message(SEND_ERROR "${varname} is '${${varname}}', expecting '${${exp_varname}}'.") + endif() +endmacro() +set(FOO bax) +assert_defined(FOO) +set(BAR bax) +assert_str_equal(FOO BAR) + +foreach(suffix ${var_suffixes}) + assert_defined(KDE_INSTALL_${suffix}) + assert_defined(KDE_INSTALL_FULL_${suffix}) + + set(should_have_cmake_var TRUE) + if(KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES) + set(should_have_cmake_var FALSE) + elseif(KDE_INSTALL_DIRS_NO_DEPRECATED) + list(FIND gnu_install_dirs_suffixes "${suffix}" _list_offset) + if(_list_offset EQUAL -1) + set(should_have_cmake_var FALSE) + endif() + endif() + if(should_have_cmake_var) + assert_str_equal(CMAKE_INSTALL_${suffix} KDE_INSTALL_${suffix}) + assert_str_equal(CMAKE_INSTALL_FULL_${suffix} KDE_INSTALL_FULL_${suffix}) + endif() + + set(should_have_compat_var TRUE) + if(NOT DEFINED COMPAT_${suffix}) + set(should_have_compat_var FALSE) + elseif(KDE_INSTALL_DIRS_NO_DEPRECATED) + set(should_have_compat_var FALSE) + endif() + if(should_have_compat_var) + assert_str_equal(${COMPAT_${suffix}} KDE_INSTALL_${suffix}) + endif() +endforeach() + +assert_defined(KF5_INSTALL_TARGETS_DEFAULT_ARGS) +assert_defined(KDE_INSTALL_TARGETS_DEFAULT_ARGS) +if(NOT KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES AND + NOT KDE_INSTALL_DIRS_NO_DEPRECATED) + assert_str_equal(INSTALL_TARGETS_DEFAULT_ARGS + KDE_INSTALL_TARGETS_DEFAULT_ARGS) +endif() + +add_executable(dummy main.c) +set_target_properties(dummy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/tests/KDEInstallDirsTest/vars_in_sync/main.c b/tests/KDEInstallDirsTest/vars_in_sync/main.c new file mode 100644 index 00000000..c13815ce --- /dev/null +++ b/tests/KDEInstallDirsTest/vars_in_sync/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} |