project(ExecuteKDEModules)
cmake_minimum_required(VERSION 2.8.12)

# order is important (install dirs before cmake settings)!
set(all_kde_modules
    KDEInstallDirs
    KDECMakeSettings
    KDECompilerSettings
    KDEFrameworkCompilerSettings
)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../kde-modules)

foreach(module ${all_kde_modules})
    message(STATUS "module: ${module}")
    include("${module}")
endforeach()

set(misc_vars
    CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
    INSTALL_TARGETS_DEFAULT_ARGS
    KF5_INSTALL_TARGETS_DEFAULT_ARGS
)

set(relative_path_vars
    # old-style variables
    AUTOSTART_INSTALL_DIR
    BIN_INSTALL_DIR
    CMAKECONFIG_INSTALL_PREFIX
    CONFIG_INSTALL_DIR
    DATA_INSTALL_DIR
    DBUS_INTERFACES_INSTALL_DIR
    DBUS_SERVICES_INSTALL_DIR
    DBUS_SYSTEM_SERVICES_INSTALL_DIR
    EXEC_INSTALL_PREFIX
    HTML_INSTALL_DIR
    ICON_INSTALL_DIR
    IMPORTS_INSTALL_DIR
    INCLUDE_INSTALL_DIR
    KCFG_INSTALL_DIR
    KCONF_UPDATE_INSTALL_DIR
    KF5_DATA_INSTALL_DIR
    KF5_INCLUDE_INSTALL_DIR
    KF5_LIBEXEC_INSTALL_DIR
    KNOTIFYRC_INSTALL_DIR
    LIBEXEC_INSTALL_DIR
    LIB_INSTALL_DIR
    LOCALE_INSTALL_DIR
    MAN_INSTALL_DIR
    PLUGIN_INSTALL_DIR
    QML_INSTALL_DIR
    QT_PLUGIN_INSTALL_DIR
    SBIN_INSTALL_DIR
    SERVICES_INSTALL_DIR
    SERVICETYPES_INSTALL_DIR
    SHARE_INSTALL_PREFIX
    SOUND_INSTALL_DIR
    SYSCONF_INSTALL_DIR
    TEMPLATES_INSTALL_DIR
    WALLPAPER_INSTALL_DIR
    XDG_APPS_INSTALL_DIR
    XDG_DIRECTORY_INSTALL_DIR
    XDG_MIME_INSTALL_DIR

    # new-style variables
    CMAKE_INSTALL_APPDIR
    CMAKE_INSTALL_AUTOSTARTDIR
    CMAKE_INSTALL_BINDIR
    CMAKE_INSTALL_CMAKEPACKAGEDIR
    CMAKE_INSTALL_CONFDIR
    CMAKE_INSTALL_DATADIR
    CMAKE_INSTALL_DATADIR_KF5
    CMAKE_INSTALL_DATAROOTDIR
    CMAKE_INSTALL_DBUSDIR
    CMAKE_INSTALL_DBUSINTERFACEDIR
    CMAKE_INSTALL_DBUSSERVICEDIR
    CMAKE_INSTALL_DBUSSYSTEMSERVICEDIR
    CMAKE_INSTALL_DESKTOPDIR
    CMAKE_INSTALL_DOCBUNDLEDIR
    CMAKE_INSTALL_EXECROOTDIR
    CMAKE_INSTALL_ICONDIR
    CMAKE_INSTALL_INCLUDEDIR
    CMAKE_INSTALL_INCLUDEDIR_KF5
    CMAKE_INSTALL_INFODIR
    CMAKE_INSTALL_KCFGDIR
    CMAKE_INSTALL_KCONFUPDATEDIR
    CMAKE_INSTALL_KNOTIFY5RCDIR
    CMAKE_INSTALL_KSERVICES5DIR
    CMAKE_INSTALL_KSERVICETYPES5DIR
    CMAKE_INSTALL_LIBDIR
    CMAKE_INSTALL_LIBEXECDIR
    CMAKE_INSTALL_LIBEXECDIR_KF5
    CMAKE_INSTALL_LOCALEDIR
    CMAKE_INSTALL_LOCALSTATEDIR
    CMAKE_INSTALL_MANDIR
    CMAKE_INSTALL_MIMEDIR
    CMAKE_INSTALL_PLUGINDIR
    CMAKE_INSTALL_QMLDIR
    CMAKE_INSTALL_QTPLUGINDIR
    CMAKE_INSTALL_QTQUICKIMPORTSDIR
    CMAKE_INSTALL_SBINDIR
    CMAKE_INSTALL_SHAREDSTATEDIR
    CMAKE_INSTALL_SOUNDDIR
    CMAKE_INSTALL_SYSCONFDIR
    CMAKE_INSTALL_TEMPLATEDIR
    CMAKE_INSTALL_WALLPAPERDIR
)

set(absolute_path_vars
    CMAKE_INSTALL_FULL_APPDIR
    CMAKE_INSTALL_FULL_AUTOSTARTDIR
    CMAKE_INSTALL_FULL_BINDIR
    CMAKE_INSTALL_FULL_CMAKEPACKAGEDIR
    CMAKE_INSTALL_FULL_CONFDIR
    CMAKE_INSTALL_FULL_DATADIR
    CMAKE_INSTALL_FULL_DATADIR_KF5
    CMAKE_INSTALL_FULL_DATAROOTDIR
    CMAKE_INSTALL_FULL_DBUSDIR
    CMAKE_INSTALL_FULL_DBUSINTERFACEDIR
    CMAKE_INSTALL_FULL_DBUSSERVICEDIR
    CMAKE_INSTALL_FULL_DBUSSYSTEMSERVICEDIR
    CMAKE_INSTALL_FULL_DESKTOPDIR
    CMAKE_INSTALL_FULL_DOCBUNDLEDIR
    CMAKE_INSTALL_FULL_EXECROOTDIR
    CMAKE_INSTALL_FULL_ICONDIR
    CMAKE_INSTALL_FULL_INCLUDEDIR
    CMAKE_INSTALL_FULL_INCLUDEDIR_KF5
    CMAKE_INSTALL_FULL_INFODIR
    CMAKE_INSTALL_FULL_KCFGDIR
    CMAKE_INSTALL_FULL_KCONFUPDATEDIR
    CMAKE_INSTALL_FULL_KNOTIFY5RCDIR
    CMAKE_INSTALL_FULL_KSERVICES5DIR
    CMAKE_INSTALL_FULL_KSERVICETYPES5DIR
    CMAKE_INSTALL_FULL_LIBDIR
    CMAKE_INSTALL_FULL_LIBEXECDIR
    CMAKE_INSTALL_FULL_LIBEXECDIR_KF5
    CMAKE_INSTALL_FULL_LOCALEDIR
    CMAKE_INSTALL_FULL_LOCALSTATEDIR
    CMAKE_INSTALL_FULL_MANDIR
    CMAKE_INSTALL_FULL_MIMEDIR
    CMAKE_INSTALL_FULL_PLUGINDIR
    CMAKE_INSTALL_FULL_QMLDIR
    CMAKE_INSTALL_FULL_QTPLUGINDIR
    CMAKE_INSTALL_FULL_QTQUICKIMPORTSDIR
    CMAKE_INSTALL_FULL_SBINDIR
    CMAKE_INSTALL_FULL_SHAREDSTATEDIR
    CMAKE_INSTALL_FULL_SOUNDDIR
    CMAKE_INSTALL_FULL_SYSCONFDIR
    CMAKE_INSTALL_FULL_TEMPLATEDIR
    CMAKE_INSTALL_FULL_WALLPAPERDIR
)
if(APPLE)
    # The default bundle directory is an absolute path
    list(APPEND absolute_path_vars
        BUNDLE_INSTALL_DIR
        CMAKE_INSTALL_BUNDLEDIR
        CMAKE_INSTALL_FULL_BUNDLEDIR
    )
endif()

foreach(variable ${misc_vars} ${relative_path_vars} ${absolute_path_vars})
    if(NOT DEFINED ${variable})
        message(SEND_ERROR "${variable} is not defined.")
    endif()
endforeach()

foreach(variable ${relative_path_vars})
    if(IS_ABSOLUTE ${${variable}})
        message(SEND_ERROR "${variable} (${${variable}}) should be a relative path, but is absolute.")
    endif()
endforeach()

foreach(variable ${absolute_path_vars})
    if(NOT IS_ABSOLUTE ${${variable}})
        message(SEND_ERROR "${variable} (${${variable}}) should be an absolute path, but is relative.")
    endif()
endforeach()

add_executable(dummy main.c)
set_target_properties(dummy PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
