aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2020-11-29 12:58:47 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2020-12-03 10:10:20 +0000
commitc21932163779bcfe4577ac2e3326b8c113884829 (patch)
treef6a8f53f32b18bc73858817f71399c69fa941823
parent578b6d6978d7b42baefd85277c0d332f36142c65 (diff)
cmake: Fix building documentation
It was never implemented Fixes: QBS-1618 Change-Id: I702410b546cacd439989268d3d4fbb18051d1819 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--CMakeLists.txt3
-rw-r--r--cmake/QbsAPI.cmake13
-rw-r--r--doc/CMakeLists.txt45
-rwxr-xr-xscripts/build-qbs-with-cmake.sh10
-rw-r--r--share/CMakeLists.txt23
5 files changed, 79 insertions, 15 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 18b8c7fc7..d23ddf8cc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,6 +26,8 @@ option(WITH_TESTS "Build Tests" ON)
option(WITH_UNIT_TESTS "Build Unit Tests" OFF)
option(WITH_PROJECT_FILE_UPDATES "Enable project file updates support" OFF)
option(INSTALL_PUBLIC_HEADERS "Whether to install public headers" ON)
+option(QBS_INSTALL_HTML_DOCS "Whether to install HTML Documentation" OFF)
+option(QBS_INSTALL_QCH_DOCS "Whether to install QCH Documentation" OFF)
if(WITH_TESTS)
enable_testing()
@@ -39,6 +41,7 @@ find_package(Qt5
)
add_subdirectory(src)
+add_subdirectory(doc)
add_subdirectory(share)
if(WITH_TESTS)
add_subdirectory(tests)
diff --git a/cmake/QbsAPI.cmake b/cmake/QbsAPI.cmake
index d8847e683..2c64a0303 100644
--- a/cmake/QbsAPI.cmake
+++ b/cmake/QbsAPI.cmake
@@ -17,6 +17,7 @@ set(QBS_LIBEXEC_INSTALL_DIR "${_DEFAULT_LIBEXEC_INSTALL_DIR}" CACHE STRING "Rela
set(QBS_PLUGINS_INSTALL_BASE "${QBS_LIBDIR_NAME}" CACHE STRING "Relative install location for Qbs plugins.")
set(QBS_RESOURCES_INSTALL_BASE "." CACHE STRING "Relative install location for Qbs resources.")
set(QBS_HEADERS_INSTALL_DIR "include/qbs" CACHE STRING "Relative install location for Qbs headers.")
+set(QBS_DOC_INSTALL_DIR "${QBS_RESOURCES_INSTALL_BASE}/share/doc/qbs/html" CACHE STRING "Relative install location for Qbs documentation.")
set(QBS_PLUGINS_INSTALL_DIR "${QBS_PLUGINS_INSTALL_BASE}/qbs/plugins")
set(QBS_RESOURCES_INSTALL_DIR "${QBS_RESOURCES_INSTALL_BASE}/share")
@@ -42,6 +43,18 @@ else()
set(QBS_PLUGINS_RPATH "\$ORIGIN/${QBS_RELATIVE_PLUGINS_RPATH}")
endif()
+if(WIN32)
+ get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_RELEASE)
+ if(NOT _QTCORE_LIBRARY)
+ get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_DEBUG)
+ endif()
+ get_filename_component(_QT_LIBRARY_PATH "${_QTCORE_LIBRARY}" DIRECTORY)
+ get_target_property(_QBS_LIBRARY_PATH qbscore LIBRARY_OUTPUT_DIRECTORY)
+ set(UPDATE_PATH_COMMAND set "PATH=${_QT_LIBRARY_PATH}\;${_QBS_LIBRARY_PATH}\;%PATH%")
+else()
+ set(UPDATE_PATH_COMMAND "")
+endif()
+
if(WITH_UNIT_TESTS)
set(QBS_UNIT_TESTS_DEFINES "QBS_ENABLE_UNIT_TESTS")
else()
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 000000000..9357dcf63
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,45 @@
+if (QBS_INSTALL_HTML_DOCS OR QBS_INSTALL_QCH_DOCS)
+ get_target_property(_QBS_OUTPUT_DIR qbs RUNTIME_OUTPUT_DIRECTORY)
+
+ if (QBS_INSTALL_HTML_DOCS)
+ set(_INSTALL_HTML_DOCS true)
+ else()
+ set(_INSTALL_HTML_DOCS false)
+ endif()
+
+ if (QBS_INSTALL_QCH_DOCS)
+ set(_INSTALL_QCH_DOCS true)
+ else()
+ set(_INSTALL_QCH_DOCS false)
+ endif()
+
+ add_custom_target(
+ BuildQbsDocumentation ALL
+ COMMAND ${UPDATE_PATH_COMMAND}
+ COMMAND ${_QBS_OUTPUT_DIR}/qbs
+ resolve
+ --settings-dir ${PROJECT_BINARY_DIR}/settings
+ -f ${PROJECT_SOURCE_DIR}/qbs.qbs
+ -d ${PROJECT_BINARY_DIR}/
+ config:doc-build
+ qbs.installPrefix:undefined
+ project.withCode:false
+ project.withDocumentation:true
+ profile:none
+ modules.qbsbuildconfig.installHtml:${_INSTALL_HTML_DOCS}
+ modules.qbsbuildconfig.installQch:${_INSTALL_QCH_DOCS}
+ moduleProviders.Qt.qmakeFilePaths:${QT_QMAKE_EXECUTABLE}
+ COMMAND ${_QBS_OUTPUT_DIR}/qbs
+ build
+ --settings-dir ${PROJECT_BINARY_DIR}/settings
+ -f ${PROJECT_SOURCE_DIR}/qbs.qbs
+ -d ${PROJECT_BINARY_DIR}/
+ config:doc-build
+ -p "qbs documentation"
+ DEPENDS qbs copy-runtime-files-qbs
+ )
+ install(
+ DIRECTORY ${PROJECT_BINARY_DIR}/doc-build/install-root/share/doc/qbs/html/
+ DESTINATION "${QBS_DOC_INSTALL_DIR}"
+ )
+endif()
diff --git a/scripts/build-qbs-with-cmake.sh b/scripts/build-qbs-with-cmake.sh
index 73ba353b8..1c5600e3d 100755
--- a/scripts/build-qbs-with-cmake.sh
+++ b/scripts/build-qbs-with-cmake.sh
@@ -45,7 +45,15 @@ set -e
#
export QBS_AUTOTEST_SETTINGS_DIR="${QBS_AUTOTEST_SETTINGS_DIR:-/tmp/qbs-settings}"
-BUILD_OPTIONS="-DWITH_UNIT_TESTS=1 -DWITH_PROJECT_FILE_UPDATES=1 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ${BUILD_OPTIONS}"
+BUILD_OPTIONS="\
+ -DWITH_UNIT_TESTS=1 \
+ -DWITH_PROJECT_FILE_UPDATES=1 \
+ -DQBS_INSTALL_HTML_DOCS=1 \
+ -DQBS_INSTALL_QCH_DOCS=1 \
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
+ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
+ ${BUILD_OPTIONS} \
+"
QMAKE_PATH="${QMAKE_PATH:-$(which qmake)}"
QT_DIR=$(dirname ${QMAKE_PATH})/../
diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt
index bfc657b6f..a617dbd75 100644
--- a/share/CMakeLists.txt
+++ b/share/CMakeLists.txt
@@ -32,32 +32,27 @@ install(
DESTINATION "${QBS_RESOURCES_INSTALL_DIR}/qbs"
)
-if(WIN32)
- get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_RELEASE)
- if(NOT _QTCORE_LIBRARY)
- get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_DEBUG)
- endif()
- get_filename_component(_QT_LIBRARY_PATH "${_QTCORE_LIBRARY}" DIRECTORY)
- get_target_property(_QBS_LIBRARY_PATH qbscore LIBRARY_OUTPUT_DIRECTORY)
- set(UPDATE_PATH_COMMAND set "PATH=${_QT_LIBRARY_PATH}\;${_QBS_LIBRARY_PATH}\;%PATH%")
-else()
- set(UPDATE_PATH_COMMAND "")
-endif()
-
get_target_property(_QBS_OUTPUT_DIR qbs RUNTIME_OUTPUT_DIRECTORY)
add_custom_target(
BuildQbsResources ALL
COMMAND ${UPDATE_PATH_COMMAND}
COMMAND ${_QBS_OUTPUT_DIR}/qbs
- build
+ resolve
--settings-dir ${PROJECT_BINARY_DIR}/settings
-f ${PROJECT_SOURCE_DIR}/qbs.qbs
-d ${PROJECT_BINARY_DIR}/
- -p "qbs resources"
+ config:resources-build
qbs.installPrefix:undefined
project.withCode:false
project.withDocumentation:false
profile:none
+ COMMAND ${_QBS_OUTPUT_DIR}/qbs
+ build
+ --settings-dir ${PROJECT_BINARY_DIR}/settings
+ -f ${PROJECT_SOURCE_DIR}/qbs.qbs
+ -d ${PROJECT_BINARY_DIR}/
+ config:resources-build
+ -p "qbs resources"
DEPENDS qbs copy-runtime-files-qbs
)