summaryrefslogtreecommitdiff
path: root/cmake
Commit message (Collapse)AuthorAgeFilesLines
* cmake: Find qdoc directly instead of relying on qmake pathDmitry Shachnev2023-03-061-19/+3
| | | | | | | | | | | | Qt6ToolsToolsTargets.cmake provides a Qt6::qdoc target, so there is no need to guess qdoc path based on qmake path. It is the same file where Qt6::qhelpgenerator is defined, which we use here too. This fixes build on Debian where we moved Qt6::qmake into a different path to help with cross-building, leaving Qt6::qdoc where it was. Change-Id: I9e66ffafc8aeb18edc1fe2b27608caa4ee90c3f7 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* CMake: Enable exception handling on MSVCOrgad Shaneh2023-02-231-0/+3
| | | | | | | | | | | | Sample warning: Building CXX object src\shared\qbs\src\shared\json\CMakeFiles\qbsjson.dir\json.cpp.obj C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include\ostream(378): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include\ostream(371): note: while compiling class template member function 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(unsigned __int64)' F:\Projects\qt-creator\qt-creator\src\shared\qbs\src\shared\json\json.cpp(4142): note: see reference to function template instantiation 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<(unsigned __int64)' being compiled C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include\ostream(671): note: see reference to class template instantiation 'std::basic_ostream<char,std::char_traits<char>>' being compiled Change-Id: I404cdeb5e447fe880998aaec4c576c0ed6dd3507 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* Switch JavaScript back-endChristian Kandeler2023-02-071-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Newer clang versions seem to expose serious bugs in QtScript, whose complexity makes it difficult to track them down. We therefore switch to the more light-weight QuickJS, which offers all the features we need (most notably property access interception), as well as good performance. To save some porting effort, we removed the long-deprecated loadFile() and loadExtension() functions. During the porting procedure, we noticed and fixed thread safety issues in artifact access from JS commands. We consider this change important enough to bump the major version, so the next release will be 2.0. Detailed benchmarking data is below. In summary, we see a modest speed- up at the cost of a similarly modest increase in memory consumption (with the exception of project resolving on macOS, which has become a bit slower). Importantly, the increase does not rise with project size, as the comparison of qbs vs Qt Creator shows. Output of qbs_benchmarker on Linux with qbs as test project: ========== Performance data for Resolving ========== Old instruction count: 12870602895 New instruction count: 11923459780 Relative change: -8 % Old peak memory usage: 61775848 Bytes New peak memory usage: 67583424 Bytes Relative change: +9 % ========== Performance data for Rule Execution ========== Old instruction count: 4074062223 New instruction count: 3887473574 Relative change: -5 % Old peak memory usage: 35123704 Bytes New peak memory usage: 38398392 Bytes Relative change: +9 % ========== Performance data for Null Build ========== Old instruction count: 1104417596 New instruction count: 1011033948 Relative change: -9 % Old peak memory usage: 24461824 Bytes New peak memory usage: 25325920 Bytes Relative change: +3 % Output of qbs_benchmarker on Linux with Qt Creator as test project: ========== Performance data for Resolving ========== Old instruction count: 67166450352 New instruction count: 60772791018 Relative change: -10 % Old peak memory usage: 327011616 Bytes New peak memory usage: 343724176 Bytes Relative change: +5 % ========== Performance data for Rule Execution ========== Old instruction count: 71684351183 New instruction count: 67051936965 Relative change: -7 % Old peak memory usage: 374913688 Bytes New peak memory usage: 387790992 Bytes Relative change: +3 % ========== Performance data for Null Build ========== Old instruction count: 8383156078 New instruction count: 7930705668 Relative change: -6 % Old peak memory usage: 180468360 Bytes New peak memory usage: 182490384 Bytes Relative change: +1 % Real-world data building Qt Creator (using qbs --log-time, several runs, removing outliers): macOS: Resolving: 43s -> 47s Rule execution: 17s -> 14s Windows: Resolving: 18s -> 16s Rule execution: 22s -> 17s Fixes: QBS-913 Fixes: QBS-1103 Fixes: QBS-1126 Fixes: QBS-1227 Fixes: QBS-1684 Change-Id: Ie5088155026e85bbd1e303f1c67addb15810a3cb Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* cmake: some cleanupIvan Komissarov2022-08-151-2/+0
| | | | | Change-Id: I2d64beeb48370cd51c87c7dff835451f89ae04c4 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: allow to specify html dir nameIvan Komissarov2022-08-152-1/+2
| | | | | | | Required for MacPorts. Change-Id: I0ed3e6ddb0414669fccc8102e228631040b1fbb7 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: fix installing documentationIvan Komissarov2022-08-151-3/+14
| | | | | | | | | | | | | | | | | | | | | | The HTML documentation was not installed if QCH doc was not requested, fix that. Introduce a new 'qbs_docs' target which should be used instead of the 'BuildQbsDocumentation' target. This is done for compatibility with QMake. Also, introduce a single 'qbs_docs' component for installing docs in one go - this is required for MacPorts since there is no easy way to install multiple components at once with CMake. Which docs will be installed is controlled at the configure step: $ cmake -DQBS_INSTALL_HTML_DOCS=1 -DQBS_INSTALL_QCH_DOCS=1 -DQBS_INSTALL_MAN_PAGE=1 $ cmake --build . --target qbs_docs # not required for man-page only install $ cmake --install . --component qbs_docs Change-Id: I174662c54255a8fb10529b1961c298eb1f1b1470 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* doc: Install man pages with cmakeMarius Gripsgard2022-08-111-0/+1
| | | | | Change-Id: Ibce74cf1b524c8c08b38dfc76549b4723ea705b3 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: Fix syntax of regexDmitry Shachnev2022-05-091-1/+1
| | | | | | | | Because of this bug, 1.22.0 was correctly replaced with 1.22, but 1.22.1 was wrongly left as is. Change-Id: Iadadb543fa57c4f897bbff3109cfc3216e92b8ae Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix install of QCH and HTML documentationv1.22.1Dmitry Shachnev2022-04-202-1/+3
| | | | | | | | | - qbs.qch should go to QT_INSTALL_DOCS, not to QBS_DOC_INSTALL_DIR (which ends with /html by default). - HTML documentation was not installed at all. Change-Id: I11fa33e5d2f9e0a39184a7d82ac1a8faf064f25e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: fix qch buildIvan Komissarov2021-10-221-2/+2
| | | | | | Fixes: QTCREATORBUG-26407 Change-Id: I840d2446f91116a9707960de4a27f04a3ad6d068 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* cmake: Do not fail build if docs cannot be builtIvan Komissarov2021-09-171-2/+8
| | | | | Change-Id: I597c984e98ff5bd5b05d82e4ec27c20ea59fba30 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* cmake: do not unnesessary rebuild docsIvan Komissarov2021-09-091-20/+34
| | | | | | Task-number: QBS-1671 Change-Id: I49672dc4609b370407eb7c76de72e63beac5aca3 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* cmake: Build docs without QbsIvan Komissarov2021-09-072-2/+285
| | | | | | | Fixes: QBS-1671 Change-Id: I3f0522d6990caa661997dd773d9b3af662bd2ed8 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: fix setting MACOSX_RPATH propIvan Komissarov2021-08-051-0/+7
| | | | | | | | On macOS, we need to exclude the @rpath/ prefix from the dylib name when building with -DQBS_ENABLE_RPATH=NO Change-Id: I91c17613de6f29ca54cfbfa40f149580d1120073 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Always build with project file updates supportIvan Komissarov2021-07-271-7/+0
| | | | | | | | Since QtGui dependency was removed, there is no reason not to Change-Id: Ib8975451f3c36a77e22a077bba18b5659f414767 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* cmake: Add Qt6 buildIvan Komissarov2021-05-181-3/+3
| | | | | | | Also, switch Linux CMake job to build Qbs with Qt6 Change-Id: I188845a7cc086a8c87dbb7445ea95f99b26d94ef Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: Add bundled QtScript buildIvan Komissarov2021-05-181-0/+1
| | | | | | | | | | | | Also, make QtScript dependency optional like we do in the Qbs build. Tested on macOS, Linux and Windows. CMake 3.15 is now required for the CMP0092 policy which removes default warning flags from CMAKE_CXX_FLAGS. Change-Id: I199fb802d5ad72d1ac8d5a89c05372c43581c95d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix setting PATH on Windows when invoking QbsIvan Komissarov2021-04-161-1/+2
| | | | | | | | | The original approach did not work when using NMake or MinGW Makefiles (but worked with Ninja) Change-Id: I1bfdb213b3007b100bb4cdcdbe4deb3935b6e266 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: rename QbsAPI to QbsBuildConfigIvan Komissarov2021-03-021-0/+0
| | | | | | | | The API name is misleading and can make users think this is for building against Qbs. Change-Id: I8d6553cde873389d0674ee779292af59f7d04c32 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* cmake: add QBS_ENABLE_RPATH optionIvan Komissarov2021-03-021-6/+15
| | | | | | | | | | ...required for Brew to switch to CMake - current QMake build explicitly disables RPATH. Also, move all build options to QbsApi.cmake to have them in one place. Change-Id: I97bbfa1de3e34e9dc7a7f8ac4271f47e14ef435e Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* cmake: fix get_update_path_command() functionIvan Komissarov2020-12-041-1/+1
| | | | | | | | | Quotes in the command break setting PATH Amends 9c8451e9a76f1173d4c7fa4d538e2ed676743110 Change-Id: I2d5b40d9b302007da45c57e2f86856e175263c49 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* cmake: fix setting QBS_APP_INSTALL_DIR variableIvan Komissarov2020-12-041-1/+1
| | | | | | | It should be set before used Change-Id: I133c7791f9efbb1f76e898109503e120b5adf18e Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Fix that target was accessed before it was createdEike Ziller2020-12-041-10/+12
| | | | | | | Amends c21932163779bcfe4577ac2e3326b8c113884829 Change-Id: I078df77ebfd7921c9c8bcaf131ae06a3a1fcd181 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* cmake: Fix building documentationIvan Komissarov2020-12-031-0/+13
| | | | | | | | It was never implemented Fixes: QBS-1618 Change-Id: I702410b546cacd439989268d3d4fbb18051d1819 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: Fix issues with configuring locations on WindowsEike Ziller2020-10-091-3/+11
| | | | | | | | | | | | Make DLL destination configurable independently of LIB destination. In Qt Creator we put DLLs into bin\, but LIBs into lib\. Fix installation of plugin DLLs by adding corresponding RUNTIME section. Fix setting PATH to Qt & Qbs libraries for BuildQbsResources. Change-Id: I5029e82b8822c7e3ad43afe69530b2d4e2f918b3 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* cmake: Make build output & install locations configurableEike Ziller2020-10-081-27/+39
| | | | | | | | So we can configure the right paths for direct inclusion in the Qt Creator build. Change-Id: Ie83eb402f0d9ce5f1ef32737921dc2ec8b43a315 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
* cmake: fix default definesIvan Komissarov2020-08-271-1/+1
| | | | | | | Should be _SCL_SECURE_NO_WARNINGS, not _CRT_SECURE_NO_WARNINGS Change-Id: I339536cf751790edec46c058a8974abe79832d29 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: rename qbslogging -> qbsconsoleloggerIvan Komissarov2020-08-201-1/+1
| | | | | | | ...to match the Qbs build Change-Id: Ib17d9625bf06d2eed69f51cc0e6e6cbe7ba99085 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* qbsbuild: move logging to the static libraryIvan Komissarov2020-08-201-1/+4
| | | | | Change-Id: I94bd7288a9ef3b7a785a76386ff7d395cdd01f81 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: Fix export macros in add_qbs_libraryIvan Komissarov2020-08-201-3/+1
| | | | | | | | | | | We should not set those macros in the function, but we should set them independently for each target, otherwise the import/export macros for qbscore will be messed up. This amends b67b08f1c2c. Change-Id: Iff61ce050cd6c4c4e71d3e3e6a97cc3525459a39 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* cmake: Fix target namesIvan Komissarov2020-08-201-1/+1
| | | | | | | | | | It should be 'qbscore', not 'corelib'. Same for the static logging library. This amends b67b08f1c2c. Change-Id: I3b79ce75168360f8708b143471f0b4c223b2f5fd Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Initial CMake portIvan Komissarov2020-08-171-0/+207
This change allows to build Qbs using CMake build tool Tested platforms - Linux (gcc) - macOS (clang) - Windows (msvc2017) Missing features (compared to Qbs build) - Documentation build - Bundled QtScript support - Static build - .pc file for qbscore - qbs module for qbscore Change-Id: I09b5dadd6723d5a47e5ef2a9a38d3300488718f2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>