summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* string(TIMESTAMP): add %f specifier for microsecondsPeter Würth2022-01-281-1/+1
| | | | | | | | | | | | | | | | | | The %f specified extends the string(TIMESTAMP) and file(TIMESTAMP) commands to output the timestamp with a microsecond resolution. This convention is offered by python's datetime module. Before, the precision was limited to seconds. The implementation is done by extending existing cmTimestamp methods with a `microseconds` parameter. This parameter is optional in order to be backwards compatible. The timestamps are now received in a cross-platform manner using libuv, since the standard C functions like time() don't allow for sub-second precision. This requires libuv 1.28 or higher. We already require higher than that on Windows, so update the required version for other platforms. Implements: #19335
* ccmake: Add Windows support using PDCursesDuncan Ogilvie2022-01-181-3/+10
|
* ccmake: Refactor BUILD_CursesDialog option logicBrad King2022-01-181-13/+16
| | | | | Move all the current logic behind `if(UNIX)` conditions to make room for other platforms to be added.
* LCC: Add policy CMP0129 regarding interpreting LCC as GNUmakise-homura2021-10-211-0/+5
| | | | | | | | | | Due to MCST LCC compiler identification is now changed to LCC, there should be a way for old projects to still identify it as GNU, as it was before. This commits adds the policy: CMP0129: Compiler id for MCST LCC compilers is now LCC, not GNU. This policy controls such a behavior. OLD behaivior is to treat LCC as GNU, NEW is to treat is as LCC.
* Merge topic 'lcc-compiler'Brad King2021-10-191-2/+3
|\ | | | | | | | | | | | | | | | | | | | | 02b2607a5c Help: Add release note for MCST LCC compiler support e5d9fce03f LCC: Add dedicated support for MCST LCC compiler 2b9ef77944 CPack/DEB: deal with broken dpkg-shlibdeps on E2K architecture 0995c75301 Tests/RPM: skip tests tat rely on debugedit if it's not found ea55ac9a51 Tests/RunCMake/CommandLine: Deal with locales that are different from English Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6608
| * LCC: Add dedicated support for MCST LCC compilermakise-homura2021-10-151-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Divert LCC compiler as a new one, instead of treating it as GNU. Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been passing checks for GNU compilers, so it has been identified as GNU. Now, with intent of seriously upstreaming its support, it has been added as a separate LCC compiler, and its version displays not a supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead of GNU 7.3.0). This commit adds its support for detection, and also converts basically every check like 'is this compiler GNU?' to 'is this compiler GNU or LCC?'. The only places where this check is untouched, is where it regards other platforms where LCC is unavailable (primarily non-Linux), and where it REALLY differs from GNU compiler. Note: this transition may break software that are already ported to Elbrus, but hardly relies that LCC will be detected as GNU; still such software is not known.
* | Configure CMake itself with policies through CMake 3.21Brad King2021-10-081-1/+1
|/
* Merge topic 'disable-exec-info'Brad King2021-07-271-0/+3
|\ | | | | | | | | | | | | aa4c30182b Add option to explicitly avoid using execinfo for backtraces Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6386
| * Add option to explicitly avoid using execinfo for backtracesĐoàn Trần Công Danh2021-07-261-0/+3
| | | | | | | | | | | | | | | | | | backtrace(3) from libexecinfo in musl will run into crash [1]. Provide an option to disable it explicitly even if libexecinfo is present. 1: https://www.openwall.com/lists/musl/2021/07/17/1
* | Configure CMake itself with policies through CMake 3.20Brad King2021-06-301-1/+1
| |
* | Enable compiler warnings when compiling CMake with ClangAlex Richardson2021-06-221-2/+6
|/ | | | | | | | | | | | | | | | | | I noticed that I wasn't getting any compiler warnings when testing my merge requests locally. Turns out this happens because I am compiling using Clang rather than GCC, so no warning flags are added to the build. d06a9bdf3ab47231cc91b78dac77bd50de390565 enabled warnings by default for GCC > 4.2, but Clang supports them too. This has been the case since at least Clang 3.0 (I couldn't test any older versions on godbolt.org). For AppleClang, we can also assume that the warning flags are supported. According to Wikipedia Clang became the default compiler starting with Xcode 4.2, and the table on https://trac.macports.org/wiki/XcodeVersionInfo, states that XCode 4.2 Clang was based on upstream Clang 3.0, which supports all the warning flags. The warning flags are currently not added when compiling with clang-cl since this exposes some pre-existing warnings that need to be fixed first.
* cmSystemTools: Improve CreateLink and CreateSymlink error codesBrad King2021-05-071-1/+5
| | | | | | | | | | | In commit 7f89053953 (cmSystemTools: Return KWSys Status from CreateLink and CreateSymlink, 2021-04-15) we just took the `-err` from libuv and treated it as a POSIX error. This is accurate on POSIX, but on Windows does not match the POSIX error codes. Use `uv_fs_get_system_error` to get the actual system error code. This requires libuv 1.38 or higher. Require that for Windows, but fall back to the previous approach on POSIX.
* liblzma: Enable multi threaded stream encoding supportNils Gladitz2021-04-221-0/+1
|
* Configure CMake itself with policies through CMake 3.19Brad King2021-02-101-1/+1
|
* Configure CMake itself with policies through CMake 3.18Brad King2020-10-131-1/+1
|
* STL Support: introduce dedicated configuration fileMarc Chevrier2020-07-091-0/+5
|
* KWSys: Hard-code try_compile results on WindowsBrad King2020-06-031-0/+15
| | | | | Several of KWSys's checks have the same result on all Windows platforms supported when building CMake.
* cmSystemTools: Hard-code try_compile results for WindowsBrad King2020-06-031-4/+9
| | | | | All Windows platforms offer `environ` in `stdlib.h` and do not have `unsetenv`.
* libarchive: Hard-code try_compile results for bundled dependenciesBrad King2020-06-031-0/+12
|
* Hard-code some try_compile results for third-party librariesBrad King2020-05-271-0/+3
| | | | | | | | Our bundled third-party libraries perform many `try_compile` checks for compatibility with their upstream build systems. For many of the checks we already know the result for compilers we support for building CMake itself, especially on Windows. Hard-code known results to avoid running the checks.
* Update links to gitlab.kitware.com repos to add `-/`Brad King2020-05-261-1/+1
| | | | | | GitLab now uses a `/-/` component between the `group/project` part of the URL and the `{issues,merge_requests,tree}` part so that it can support `group/subgroup/project` with arbitrary depth.
* Merge topic 'xl-cpp-install'Brad King2020-05-121-1/+1
|\ | | | | | | | | | | | | f7a94cf282 XL: Install our Fortran 'cpp' helper script with execute permission Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4735
| * XL: Install our Fortran 'cpp' helper script with execute permissionBrad King2020-05-111-1/+1
| | | | | | | | | | | | | | | | | | | | This script was added by commit 19f267c75e (XL: Add support for Ninja and XL Fortran, 2019-11-21, v3.17.0-rc1~368^2) but does not have a `.sh` extension so our existing install rules neglect to give it execute permission. Our test suite works on XL Fortran in the build tree but the script is broken without execute permission on installation. Fixes: #20695
| * Merge topic 'aix-ExportImportList-install' into release-3.17Brad King2020-03-311-0/+4
| |\ | | | | | | | | | | | | | | | | | | 39e5a4da22 AIX: Install ExportImportList script with execute permission Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4545
| * \ Merge topic 'cmstd-IBM-i' into release-3.17Brad King2020-03-061-1/+1
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | 917db8163d cmstd: Remove -isystem option for IBM i (OS400) Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4430
* | | | Refactoring: Third-parties public headers are under cm3p prefixMarc Chevrier2020-05-071-4/+7
| | | | | | | | | | | | | | | | Fixes: #20666
* | | | nghttp2: Build the library within CMake for use by our curlBrad King2020-04-031-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | Provide our own minimal `config.h` since the upstream one is much larger to support other parts of its distribution. Compile with warnings disabled since this is third-party code.
* | | | Merge topic 'aix-ExportImportList-install'Brad King2020-03-311-0/+4
|\ \ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | 39e5a4da22 AIX: Install ExportImportList script with execute permission Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4545
| * | | AIX: Install ExportImportList script with execute permissionBrad King2020-03-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This script was added by commit 0f150b69d3 (AIX: Explicitly compute shared object exports for both XL and GNU, 2019-07-11, v3.16.0-rc1~418^2~2) but does not have a `.sh` extension so our existing install rules neglect to give it execute permission. Our test suite works on AIX in the build tree but the script is broken without execute permission on installation. Fixes: #20520
* | | | Merge topic 'cmstd-IBM-i'Brad King2020-03-061-1/+1
|\ \ \ \ | | |_|/ | |/| | | | | | | | | | | | | | | | | | 917db8163d cmstd: Remove -isystem option for IBM i (OS400) Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4430
| * | | cmstd: Remove -isystem option for IBM i (OS400)ThePrez2020-03-051-1/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | Much like AIX, IBM i (OS identifier "OS400") implicitly adds `extern "C"` around system header files included with the `-isystem` option. Update the condition added by commit c688b401d3 (cmstd: Modernize CMake system headers, 2019-08-04, v3.16.0-rc1~81^2~1) to treat `IBM i` as we do AIX.
* | | libarchive: Update to build within CMakeBrad King2020-02-131-1/+5
| |/ |/| | | | | | | Hard-code more libarchive options as internal cache entries. Doing so makes some of our `IF(0)` conditions unnecessary, so remove those.
* | Merge topic 'mark_as_advanced-without-cache'Brad King2020-01-221-1/+0
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3ec82b713e cmMarkAsAdvancedCommand: ignore variables which don't exist in the cache 701a5c60e0 cmake: avoid marking local or unused variables as advanced af158149e7 FindOpenSSL: do not mark a local variable as advanced 74f659f1f2 FindCurses: only mark CURSES_EXTRA_LIBRARY when it is used 7e2ae4e96d FindOpenGL: only mark declared cache variables as advanced 7cc02a0c29 FindLua: only mark LUA_MATH_LIBRARY as advanced if required 85cd26b8a6 FindBoost: only mark Boost_DIR as advanced if defined 338c7916ba CTest: avoid marking undeclared cache variables as advanced ... Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4150
| * | cmake: avoid marking local or unused variables as advancedBen Boeckel2020-01-201-1/+0
| |/
* | Enable RPATH for CMake's own binaries by defaultBrad King2020-01-141-37/+7
|/ | | | | | | | | | | | | | | | | | | | Reconcile the changes made by: * commit ae62f66033 (ENH: CMake does not need RPATHs at all for its own executables, 2006-03-01, v2.4.0~380) * commit a056cffc5b (COMP: enable RPATH if any of the CMAKE_USE_SYSTEM_XXX variables is enabled, 2007-08-28, v2.6.0~1183) * commit c0108d1e07 (COMP: use RPATH is building QtDialog and the Qt libs are not in /lib or /usr/lib, 2007-11-05, v2.6.0~915) The overall goal of those changes was to get the RPATH set for external libraries when needed and also to avoid re-linking or other RPATH editing on installation. We can use a simpler approach to satisfy both goals: always use RPATH entries for libraries found externally. If there are no such libraries we will get no RPATH. If there are such libraries that are not in standard paths we will get a RPATH that points at them. This will work for running either from the build tree or the install tree, so we can use the same for both to avoid editing on installation. Fixes: #20185
* cmstd: Modernize CMake system headersMarc Chevrier2019-09-201-0/+13
| | | | | | | | | | | | | | Provide a standardized way to handle the C++ "standard" headers customized to be used with current CMake C++ standard constraints. Offer under directory `cm` headers which can be used as direct replacements of the standard ones. For example: #include <cm/string_view> can be used safely for CMake development in place of the `<string_view>` standard header. Fixes: #19491
* Merge topic 'docker-rel-linux'Brad King2019-08-291-1/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 689fdbfc61 Utilities/Release: Drop linux64 script in favor of docker build 2d7cfd30ac Utilities/Release: Drop source archive generation in scripts facc240a45 Utilities/Release: Add docker specs to build and test Linux binaries bf832ccf01 Utilities/Release: Add README.rst describing directory content ab153f17bf Utilities/Release: Drop machine-specific README ed294c1664 Add option to skip CMake tests that need network access 4b8a864d52 Add option to test CMake itself against its hosting CMake Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Gregor Jasny <gjasny@googlemail.com> Merge-request: !3727
| * Add option to skip CMake tests that need network accessBrad King2019-08-231-1/+1
| |
| * Add option to test CMake itself against its hosting CMakeBrad King2019-08-231-0/+4
| |
* | Merge topic 'libarchive-requirement'Brad King2019-08-271-1/+1
|\ \ | | | | | | | | | | | | | | | | | | 752fa8be9d libarchive: We now require at least version 3.3.3 Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3737
| * | libarchive: We now require at least version 3.3.3Marvin Schmidt2019-08-261-1/+1
| | | | | | | | | | | | It's the first version including Zstandard support.
* | | Configure CMake itself with policies through CMake 3.15Brad King2019-08-231-1/+12
| |/ |/| | | | | | | | | In particular, set `CMP0091` to `NEW` to enable the MSVC runtime library abstraction so it can be set via `CMAKE_MSVC_RUNTIME_LIBRARY` in the cache.
* | Help: Restore installation of top-level indexBrad King2019-08-191-1/+1
| | | | | | | | | | | | | | | | We removed installation of `Help/index.rst` in commit d2fde94809 (Help: Add infrastructure for guide-level documentation, 2019-05-30), but the file is required for `--help-full` to work. Restore installation of the file and update it to avoid referencing the `Help/guide` directory in its toctree during processing by `cmRST`.
* | CMakeVersion: Move computation logic to main scriptBrad King2019-07-291-2/+1
| |
* | OpenSSL: Issue an error if OpenSSL is not foundKyle Edwards2019-07-181-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When building with the built-in Curl, CMAKE_USE_OPENSSL is only set to ON by default if an OpenSSL installation is detected. However, this can cause the user to mistakenly build without OpenSSL support if OpenSSL is not installed, because CMAKE_USE_OPENSSL is set to OFF in that case. Always set CMAKE_USE_OPENSSL to ON by default on systems where it could be available, skipping the initial detection, resulting in an error when we try to use OpenSSL later on. Detect this error and advise the user to either install OpenSSL or set CMAKE_USE_OPENSSL to OFF. Co-Authored-by: Brad King <brad.king@kitware.com>
* | Help: Add infrastructure for guide-level documentationBrad King2019-06-181-1/+1
|/ | | | | | | Create a `Help/guide/` directory to hold guide-level documents. Build them in most documentation formats, but not as man pages. Initialize the guide directory with a placeholder for the tutorial.
* Add undocumented option to sign CMake's own binaries on WindowsBrad King2019-05-081-0/+6
|
* Configure CMake itself with policies through CMake 3.14Brad King2019-05-081-1/+1
| | | | | In particular, set `CMP0082` to `NEW` to interleave install commands in the top-level directory with subdirectory installations.
* Merge topic 'import-zstd'Brad King2019-03-141-1/+14
|\ | | | | | | | | | | | | | | | | | | | | | | 1761a9a546 CMake: Enable use of zstd in libarchive 2cf2921749 zstd: Add CMake build system f92b4b52eb Merge branch 'upstream-zstd' into import-zstd fbaf65639a zstd 2018-12-27 (470344d3) 9337cbfcca zstd: add script to import zstd from upstream Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Bartosz <gang65@poczta.onet.pl> Merge-request: !3092
| * CMake: Enable use of zstd in libarchiveBrad King2019-03-131-1/+14
| | | | | | | | | | | | | | Build zstd as part of CMake or find one on the system. Modify our port of libarchive to use the zstd configured for use with CMake. Issue: #18657