summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* IWYU: Define a macro to tell code it is preprocessing for iwyuBrad King2018-05-251-1/+1
| | | | | | | There are some cases where satisfying IWYU breaks compilation, such as forward-declaring the `std::hash<>` template with C++ standard libraries that use an inline namespace inside `std`. Define a macro during include-what-you-use preprocessing so that code can adapt.
* Merge topic 'libuv_version_bump'Brad King2018-04-171-1/+1
|\ | | | | | | | | | | | | f5f72ff844 Explicitly require LibUV 1.10 or higher to build CMake Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1966
| * Explicitly require LibUV 1.10 or higher to build CMakeErofeevK2018-04-161-1/+1
| | | | | | | | CMake 3.11 now uses `uv_translate_sys_error` introduced in LibUV 1.10.
* | ccmake: Check for curses more robustly before enablingBrad King2018-03-211-12/+14
|/ | | | | | | | | | Compute a default for `BUILD_CursesDialog` by building a small test project that uses curses. Disable `ccmake` by default if it fails, and do not search for Curses as part of the main build. This avoids creating FindCurses cache entries when we are not considering ccmake. If `BUILD_CursesDialog` is enabled (e.g. by the user) then warn if curses cannot be found.
* CMakeLib: Link to system thread libraries to support std::threadBrad King2018-02-221-0/+2
| | | | | | | | | Some environments require linking to thread libraries for `std::thread`. Express this direct dependency of CMakeLib explicitly. Previously this was done indirectly through our bundled libuv, but that does not work when using a system libuv. Fixes: #17757
* Compile CMake as C++17 if supported by the compilerBrad King2017-12-221-4/+13
| | | | | | | | | | Add a check that a simple source file can compile as C++17 that uses some of the features we need. Do this only when hosted by CMake 3.8 or above because those versions are aware of C++17. Check for unordered_map as we do in bootstrap since commit 375eca7881 (bootstrap: Check support for unordered_map from compiler mode, 2017-11-30). Also maintain the existing C++14 cstdio check.
* Generalize check for C++14 constructsBrad King2017-12-221-2/+2
| | | | | | The check for C++14 and cstdio is a special case of the more general problem of checking that the compiler's C++14 mode supports everything we need. Rename the checks accordingly.
* AIX: Add -pthread flag to enable std::thread with GCCBrad King2017-11-281-0/+4
|
* Merge topic 'tidy-sha1-comment'Brad King2017-11-201-1/+6
|\ | | | | | | | | | | | | 08353542 clang-tidy: Clarify comment explaining purpose of CLANG_TIDY_SHA1 Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1497
| * clang-tidy: Clarify comment explaining purpose of CLANG_TIDY_SHA1Brad King2017-11-171-1/+6
| | | | | | | | Suggested-by: Bill Hoffman <bill.hoffman@kitware.com>
* | IWYU: Suppress warnings from the internal ClangBrad King2017-11-171-1/+1
|/ | | | | | | Do not obscure IWYU's report with warnings from its internal Clang. We have other testing for such warnings. Also, when compiling with a non-Clang compiler we might use warning options that IWYU's Clang does not understand, and we don't want to see warnings about that.
* clang-tidy: Make .clang-tidy a build-time dependencyMatthias Maennich2017-09-281-0/+6
| | | | | | | | | | Currently a change to the clang-tidy configuration remains unnoticed for incremental builds in the way that it won't trigger a rebuild. This can be considered a missing dependency that this patch fixes by introducing a compile time definition (-DCLANG_TIDY_SHA1) that triggers a rebuild upon change. Currently this only applies to the target CMakeLib. Signed-off-by: Matthias Maennich <matthias@maennich.net>
* server: test buffer parsingJustin Berger2017-08-311-0/+3
|
* server: always enable serverDaniel Pfeifer2017-08-261-18/+0
|
* server: backport to C++11Daniel Pfeifer2017-08-261-4/+1
|
* Merge topic 'require-c++11'Brad King2017-08-211-0/+4
|\ | | | | | | | | | | | | fd4fd9a2 Require C++11 to build CMake itself Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1132
| * Require C++11 to build CMake itselfBrad King2017-08-161-0/+4
| | | | | | | | | | | | | | | | | | CMake can now compile as C++11 on all supported platforms. Check that std::unique_ptr is available and fail early if missing. This will allow us to use C++11 more broadly in CMake's implementation (previously it was restricted to the serve mode implementation). Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
* | Require CMake 3.1 to build CMake itselfBrad King2017-08-101-22/+4
|/ | | | | This simplifies some policy settings and use of third-party libraries with imported targets.
* Make libuv available to all parts of CMakeBrad King2017-08-081-38/+13
| | | | | | | The libuv library provides many useful platform abstractions and better process management than KWSys. We'd like to use it everywhere instead of just in the server mode. Drop the `CMAKE_USE_LIBUV` option and use libuv everywhere except during bootstrap.
* HP-UX: Drop support for building CMake on HP-UXBrad King2017-08-071-3/+8
| | | | | | | | CMake will soon require both C++11 and libuv to build. Neither of these works on HP-UX, so unfortunately we need to drop support for the platform until someone can get them working. Issue: #17137
* Build with libuv on Cygwin to enable server-modeBrad King2017-05-281-3/+0
| | | | With our last update of libuv, Cygwin is now supported.
* Update SunPro flags used for CMake itself to support C++11Brad King2017-05-081-4/+8
|
* Choose compiler-specific flags earlier in CMake's own buildBrad King2017-05-081-3/+4
| | | | Add the flags early enough be used in the checks for C++ features.
* clang-tidy: add option CMake_RUN_CLANG_TIDYDaniel Pfeifer2017-05-041-0/+14
|
* Add include-what-you-use mappingDaniel Pfeifer2017-04-131-0/+11
|
* Help/dev: Exclude this directory from user-facing documentationBrad King2017-03-011-0/+1
| | | | | | | Teach Sphinx and our own install rules to skip a `Help/dev` directory. This will give us a place to put developer-only documentation that should not be included in the user-facing documentation. Add a placeholder README.
* Enable libuv on Solaris 10Brad King2017-02-281-6/+0
| | | | We've ported our libuv to this platform so we can build it now.
* Update CMake pre-cached values for libarchive 3.3.0Brad King2017-02-231-11/+13
|
* Disable libuv on Solaris 10Eric Berge2016-12-211-0/+3
| | | | | | | | | | Two issues need to be resolved to add Solaris 10 libuv support: 1. libuv needs to provide alternative functionality for systems that do not support mkdtemp() 2. cmake should set SUNOS_NO_IFADDRS for Solaris 10 builds (but not Solaris 11)
* Add option to build CMake against a system librhashBrad King2016-11-101-4/+18
| | | | Create a CMAKE_USE_SYSTEM_LIBRHASH option.
* librhash: Build the library within CMakeBrad King2016-11-101-0/+4
| | | | | | | | Update `ustd.h` to include KWSys Large File Support configuration so that consistent stream libraries are used (on AIX with XL). Add a `cm_rhash.h` header to include the CMake-provided copy of the `rhash.h` header from CMake sources.
* Encoding: Remove option to use ANSI code page internallyClinton Stimpson2016-11-021-6/+2
| | | | | | The switch to use UTF-8 encoding has been defaulted to on for quite some time since commit v3.2.0-rc1~116^2 (Encoding: Switch to use UTF-8 internally by default on Windows, 2014-12-26).
* Enable Unicode output to Windows consolesDāvis Mosāns2016-10-261-0/+1
| | | | | | Use KWSys ConsoleBuf to replace the `streambuf` on `std::cout` and `std::cerr` so that process output can be encoded correctly for display in a Windows console.
* Allow custom built libarchive to use custom built expat.Daniel Pfeifer2016-10-091-18/+20
| | | | Expat is built anyway.
* Don't require liblzma when using system libarchiveDaniel Pfeifer2016-10-091-12/+14
|
* Don't require libbz2 when using system libarchiveDaniel Pfeifer2016-10-091-8/+13
|
* Set minimum version for LibUV to 1.0.0Chuck Atkins2016-10-071-1/+1
| | | | | | Older versions of libuv did not have the uv_loop_close API. It first showed up in unstable releases ~ v0.11.20 but was not available in a stable release until v1.0
* Use find_package for JsonCpp and LibUV instead of includeChuck Atkins2016-10-071-2/+6
|
* server-mode: Add option to enable/disable test case explicitlyBrad King2016-09-291-0/+3
| | | | | | | Add a `CMake_TEST_SERVER_MODE` option that can be set in testing builds to enable/disable server mode tests explicitly. This will allow testing in combination with `CMake_TEST_EXTERNAL_CMAKE` or for server mode to be built on systems that have a python version that cannot run the test.
* server-mode: Add option to enable/disable the mode explicitlyBrad King2016-09-291-6/+16
| | | | | | | | Provide a way for scripts building CMake to enable server mode explicitly and assume the risk of a build failure if it is not supported. This will allow such scripts to ensure that server mode is available if the build succeeds. It also allows scripts to explicitly disable server mode even if it would be supported.
* server-mode: Rename variable CMake_{HAVE => ENABLE}_SERVER_MODEBrad King2016-09-291-2/+2
| | | | The latter is a better name for making it a public-facing option.
* server-mode: Enable from bootstrapped CMake buildBrad King2016-09-291-1/+1
| | | | | CMake is frequently built from source via bootstrap. There is no reason we cannot support server mode.
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* cmake-server: Bare-bones server implementationTobias Hunger2016-09-191-0/+12
| | | | | | | | | | | | | | | Adds a bare-bones cmake-server implementation and makes it possible to start that with "cmake -E server". Communication happens via stdin/stdout for now. Protocol is based on Json objects surrounded by magic strings ("[== CMake Server ==[" and "]== CMake Server ==]"), which simplifies Json parsing significantly. This patch also defines an interface used to implement different versions of the protocol spoken by the server, but does not include any protocol implementaiton.
* Require CMake 2.8.12.2 to build CMake itselfBrad King2016-09-151-1/+1
| | | | | This will enable use of features such as ALIAS targets within CMake's own build.
* Do not build libuv on HP-UXBrad King2016-08-311-0/+3
| | | | Some work may be needed to port to HP-UX.
* Do not build libuv on SPARCBrad King2016-08-311-0/+3
| | | | Some work may be needed to port to SPARC with Solaris and Linux.
* Do not build libuv on CygwinBrad King2016-08-311-0/+3
| | | | | | | Currently libuv does not support Cygwin (see libuv issue 832) in part due to lack of pthread APIs: https://cygwin.com/cygwin-api/std-notimpl.html
* Do not build libuv on Mac OS X 10.4 and lowerBrad King2016-08-311-0/+14
| | | | | It needs APIs that have been available only since 10.5. Also check that the CoreServices header can be included.
* Add option to build CMake against a system libuvBrad King2016-08-311-4/+18
| | | | Create a CMAKE_USE_SYSTEM_LIBUV option.