diff --git a/CMakeLists.txt b/CMakeLists.txt index 1386593..47c21d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,127 +1,130 @@ cmake_minimum_required(VERSION 3.0) set(KF5_VERSION "5.50.0") # handled by release scripts set(KF5_DEP_VERSION "5.49.0") # handled by release scripts project(KDocTools VERSION ${KF5_VERSION}) # ECM setup include(FeatureSummary) find_package(ECM 5.49.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(ECMSetupVersion) include(ECMMarkNonGuiExecutable) include(ECMQtDeclareLoggingCategory) include(CMakePackageConfigHelpers) include(GenerateExportHeader) ecm_setup_version(PROJECT VARIABLE_PREFIX KDOCTOOLS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kdoctools_version.h" - PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5DocToolsConfigVersion.cmake" + PACKAGE_VERSION_FILE "${CMAKE_BINARY_DIR}/cmake/KF5DocToolsConfigVersion.cmake" SOVERSION 5) option(MEINPROC_NO_KARCHIVE "Compile meinproc without KArchive dependency. Only for internal usage on KDE infrastructure." OFF) option(INSTALL_INTERNAL_TOOLS "Install internal tools too." OFF) # Dependencies set(REQUIRED_QT_VERSION 5.8.0) find_package(Qt5Core ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) # KF5 frameworks if (NOT MEINPROC_NO_KARCHIVE) find_package(KF5Archive ${KF5_DEP_VERSION} REQUIRED) else() message(WARNING "KArchive dependency has been disabled. This should be done only for internal usage on KDE infrastructure.") endif() find_package(KF5I18n ${KF5_DEP_VERSION}) set_package_properties(KF5I18n PROPERTIES TYPE OPTIONAL PURPOSE "Required to build the KDocTools translations") find_package(LibXslt) set_package_properties(LibXslt PROPERTIES URL "http://xmlsoft.org/XSLT" TYPE REQUIRED PURPOSE "Required by the KDE help system to process DocBook XML" ) find_package(LibXml2) set_package_properties(LibXml2 PROPERTIES URL "http://xmlsoft.org" TYPE REQUIRED PURPOSE "Required by the KDE help system to process DocBook XML" ) if (NOT LIBXML2_XMLLINT_EXECUTABLE) message(FATAL_ERROR "xmllint is required to process DocBook XML") endif() find_package(DocBookXML4 "4.5") set_package_properties(DocBookXML4 PROPERTIES TYPE REQUIRED PURPOSE "Required by the KDE help system to process DocBook XML" ) find_package(DocBookXSL) set_package_properties(DocBookXSL PROPERTIES TYPE REQUIRED PURPOSE "Required by the KDE help system to process DocBook XML" ) remove_definitions(-DQT_NO_CAST_FROM_ASCII) set(_kdoctoolsBootStrapping TRUE) set(KDOCTOOLS_CUSTOMIZATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/src/customization/") if (WIN32) set(KDOCTOOLS_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc5 ) else () set(KDOCTOOLS_MEINPROC_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/src/meinproc5${CMAKE_EXECUTABLE_SUFFIX} ) endif () include(KF5DocToolsMacros.cmake) set(KDOCTOOLS_LANGUAGES_LIST af bg ca cs da de el en-GB en eo es et fi fo fr gl he hu id it ja ko lt nds nl nn no pl pt-BR pt ro ru sk sl sr sr@latin sr@ijekavian sr@ijekavianlatin sv th tr uk wa xh xx zh-CN zh-TW) set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5DocTools") add_definitions(-DTRANSLATION_DOMAIN=\"kdoctools5\") if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po" AND KF5I18n_FOUND) ki18n_install(po) kdoctools_install(po) endif() add_subdirectory(common) add_subdirectory(docs) add_subdirectory(src) if (BUILD_TESTING) add_subdirectory(autotests) endif() -install(EXPORT KF5DocToolsTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5DocToolsTargets.cmake NAMESPACE KF5:: ) +export(EXPORT KF5DocToolsTargets FILE ${CMAKE_BINARY_DIR}/cmake/KF5DocToolsTargets.cmake NAMESPACE KF5::) +install(FILES ${CMAKE_BINARY_DIR}/cmake/KF5DocToolsTargets.cmake DESTINATION "${CMAKECONFIG_INSTALL_DIR}") + configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5DocToolsConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/KF5DocToolsConfig.cmake" + "${CMAKE_BINARY_DIR}/cmake/KF5DocToolsConfig.cmake" PATH_VARS KDE_INSTALL_DATADIR_KF5 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/KF5DocToolsMacros.cmake ${CMAKE_BINARY_DIR}/cmake/KF5DocToolsMacros.cmake COPYONLY) install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/KF5DocToolsConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/KF5DocToolsConfigVersion.cmake" + "${CMAKE_BINARY_DIR}/cmake/KF5DocToolsConfig.cmake" + "${CMAKE_BINARY_DIR}/cmake/KF5DocToolsConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) configure_file(config-kdoctools.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kdoctools.h ) install( FILES KF5DocToolsMacros.cmake DESTINATION ${CMAKECONFIG_INSTALL_DIR} COMPONENT Devel ) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/KF5DocToolsConfig.cmake.in b/KF5DocToolsConfig.cmake.in index e93a3a9..85061bf 100644 --- a/KF5DocToolsConfig.cmake.in +++ b/KF5DocToolsConfig.cmake.in @@ -1,27 +1,29 @@ @PACKAGE_INIT@ -set(KDOCTOOLS_DATA_INSTALL_DIR "@PACKAGE_KDE_INSTALL_DATADIR_KF5@") -set(KDOCTOOLS_CUSTOMIZATION_DIR "${KDOCTOOLS_DATA_INSTALL_DIR}/kdoctools/customization") +if (NOT KDOCTOOLS_CUSTOMIZATION_DIR) + set(KDOCTOOLS_DATA_INSTALL_DIR "@PACKAGE_KDE_INSTALL_DATADIR_KF5@") + set(KDOCTOOLS_CUSTOMIZATION_DIR "${KDOCTOOLS_DATA_INSTALL_DIR}/kdoctools/customization") +endif() include("${CMAKE_CURRENT_LIST_DIR}/KF5DocToolsTargets.cmake") if(CMAKE_CROSSCOMPILING AND MEINPROC5_EXECUTABLE) set_target_properties(KF5::meinproc5 PROPERTIES IMPORTED_LOCATION_NONE ${MEINPROC5_EXECUTABLE}) set_target_properties(KF5::meinproc5 PROPERTIES IMPORTED_LOCATION ${MEINPROC5_EXECUTABLE}) endif() if(CMAKE_CROSSCOMPILING AND DOCBOOKL10NHELPER_EXECUTABLE) set_target_properties(KF5::docbookl10nhelper PROPERTIES IMPORTED_LOCATION_NONE ${DOCBOOKL10NHELPER_EXECUTABLE}) set_target_properties(KF5::docbookl10nhelper PROPERTIES IMPORTED_LOCATION ${DOCBOOKL10NHELPER_EXECUTABLE}) endif() if(CMAKE_CROSSCOMPILING AND CHECKXML5_EXECUTABLE) set_target_properties(KF5::checkXML5 PROPERTIES IMPORTED_LOCATION_NONE ${CHECKXML5_EXECUTABLE}) set_target_properties(KF5::checkXML5 PROPERTIES IMPORTED_LOCATION ${CHECKXML5_EXECUTABLE}) endif() include(${CMAKE_CURRENT_LIST_DIR}/KF5DocToolsMacros.cmake) # find_dependency must be called *after* including the macros or PACKAGE_PREFIX_DIR will be altered include(CMakeFindDependencyMacro) find_dependency(Qt5Core @REQUIRED_QT_VERSION@) diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index 22a7c32..edc8fbd 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -1,6 +1,20 @@ add_test( NAME meinproc_template COMMAND meinproc5 --srcdir ${CMAKE_CURRENT_BINARY_DIR}/../src ${CMAKE_CURRENT_SOURCE_DIR}/../src/template.docbook WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) +add_test(kdoctools_install ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/kdoctools-install" + "${CMAKE_CURRENT_BINARY_DIR}/kdoctools-install" + --build-generator ${CMAKE_GENERATOR} + --build-makeprogram ${CMAKE_MAKE_PROGRAM} + --build-target install + --build-options + "-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}" + "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/kdoctools-install/destdir" + "-DKF5DocTools_DIR=${CMAKE_BINARY_DIR}/cmake" + "-DKDOCTOOLS_CUSTOMIZATION_DIR=${KDOCTOOLS_CUSTOMIZATION_DIR}" + "-DKDOCTOOLS_ENABLE_HTMLHANDBOOK=1" + --test-command ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/kdoctools-install/test.cmake") diff --git a/autotests/kdoctools-install/CMakeLists.txt b/autotests/kdoctools-install/CMakeLists.txt new file mode 100644 index 0000000..9b1f794 --- /dev/null +++ b/autotests/kdoctools-install/CMakeLists.txt @@ -0,0 +1,11 @@ +project(kdoctools_install) +cmake_minimum_required(VERSION 2.8) + +find_package(ECM NO_MODULE) +# required by KF5DocToolsMacros +include(KDEInstallDirs) + +find_package(KF5DocTools REQUIRED) + +add_subdirectory(../../docs docs) +kdoctools_install(po) diff --git a/tests/kdoctools_install-test/po/es/docs/foobar/index.docbook b/autotests/kdoctools-install/po/es/docs/foobar/index.docbook similarity index 100% rename from tests/kdoctools_install-test/po/es/docs/foobar/index.docbook rename to autotests/kdoctools-install/po/es/docs/foobar/index.docbook diff --git a/tests/kdoctools_install-test/po/es/docs/kioslave5/fooslave/index.docbook b/autotests/kdoctools-install/po/es/docs/kioslave5/fooslave/index.docbook similarity index 100% rename from tests/kdoctools_install-test/po/es/docs/kioslave5/fooslave/index.docbook rename to autotests/kdoctools-install/po/es/docs/kioslave5/fooslave/index.docbook diff --git a/tests/kdoctools_install-test/po/es/docs/man-kjscmd.1.docbook b/autotests/kdoctools-install/po/es/docs/man-kjscmd.1.docbook similarity index 100% rename from tests/kdoctools_install-test/po/es/docs/man-kjscmd.1.docbook rename to autotests/kdoctools-install/po/es/docs/man-kjscmd.1.docbook diff --git a/tests/kdoctools_install-test/po/fr/docs/foobar/index.docbook b/autotests/kdoctools-install/po/fr/docs/foobar/index.docbook similarity index 100% rename from tests/kdoctools_install-test/po/fr/docs/foobar/index.docbook rename to autotests/kdoctools-install/po/fr/docs/foobar/index.docbook diff --git a/tests/kdoctools_install-test/po/fr/docs/man-kjscmd.1.docbook b/autotests/kdoctools-install/po/fr/docs/man-kjscmd.1.docbook similarity index 100% rename from tests/kdoctools_install-test/po/fr/docs/man-kjscmd.1.docbook rename to autotests/kdoctools-install/po/fr/docs/man-kjscmd.1.docbook diff --git a/autotests/kdoctools-install/test.cmake b/autotests/kdoctools-install/test.cmake new file mode 100644 index 0000000..5a3fffe --- /dev/null +++ b/autotests/kdoctools-install/test.cmake @@ -0,0 +1,24 @@ +# check presence of installed files +set(MANPATH destdir/share/man) +set(HTMLPATH destdir/share/doc/HTML) +set(FILES +# from kdoctools_install + ${MANPATH}/man1/checkXML5.1 + ${MANPATH}/man1/meinproc5.1 + ${MANPATH}/man7/kf5options.7 + ${MANPATH}/man7/qt5options.7 +# from add_subdirectory + ${MANPATH}/es/man1/kjscmd.1 + ${MANPATH}/fr/man1/kjscmd.1 + ${HTMLPATH}/fr/foobar/index.cache.bz2 + ${HTMLPATH}/es/foobar/index.cache.bz2 + ${HTMLPATH}/es/kioslave5/fooslave/index.cache.bz2 +) + +foreach(f ${FILES}) + if(NOT EXISTS ${f}) + message(SEND_ERROR "${f} was not found") + else() + message(STATUS "found installed file ${f}") + endif() +endforeach()