summaryrefslogtreecommitdiffstats
path: root/libcxx/cmake
Commit message (Collapse)AuthorAgeFilesLines
* [CMake] NFC. Missed the other uses in r280406Chris Bieneman2016-09-011-2/+2
| | | | | | Doh! Obviously need to slow down. llvm-svn: 280407
* [CMake] Don't copy headers on fully standaloneChris Bieneman2016-09-011-1/+9
| | | | | | | | In r280108 I tried to make the headers copy relative to LLVM_BINARY_DIR, and the intent was that it would only happen on in-tree builds or runtimes directory builds. It didn't actually work that way. This patch adds a check for CMAKE_SOURCE_DIR being equal to CMAKE_CURRENT_SOURCE_DIR. In this case we set a variable LIBCXX_USING_INSTLLED_LLVM. This doesn't necessarily mean the LLVM is installed (it could be a build directory), but it means we need to treat the LLVM directory as read-only. llvm-svn: 280400
* Fix libc++ configuration with -fsanitize-coverageIvan Krasin2016-09-012-0/+6
| | | | | | | | | | | | | | | | | | Summary: a recent change (r280015) in libc++ configuration broke LibFuzzer bot: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/12245 It's not restricted just to that bot; any code that uses the sanitize coverage and configures libc++ hits it. This CL fixes the issue. Reviewers: compnerd Subscribers: aizatsky Differential Revision: https://reviews.llvm.org/D24116 llvm-svn: 280335
* libc++: perform configuration checks with -nodefaultlibsSaleem Abdulrasool2016-08-292-5/+33
| | | | | | | | | | | | | | | | | | We're compiling libc++ with -nodefaultlibs, so we should also pass this option during the configuration checks to ensure those checks are consistent with the actual build. The primary motivation here is to ease cross-compilation against a non-standard set of C++ libraries. Previously, the configuration checks would attempt to link against the standard C++ libraries, which would cause link failures when cross-compiling, even though the actual library link would go through correctly (because of the use of -nodefaultlibs and explicitly specifying any needed libraries). This is more correct even ignoring the motivation, however. Patch by Shoaib Meenai! llvm-svn: 280015
* libc++: add an option to build against compiler-rtSaleem Abdulrasool2016-08-241-1/+3
| | | | | | This mirrors the option in libc++abi to build without libgcc. llvm-svn: 279606
* Revert "libc++: Perform configuration checks with -nodefaultlibs"Saleem Abdulrasool2016-08-241-21/+2
| | | | | | | This reverts SVN r279584 which broke the buildbots. Will re-apply once the issue has been root-caused and fixed. llvm-svn: 279596
* libc++: Perform configuration checks with -nodefaultlibsSaleem Abdulrasool2016-08-231-2/+21
| | | | | | | | | | | | | | | | | We're compiling libc++ with -nodefaultlibs, so we should also pass this option during the configuration checks to ensure those checks are consistent with the actual build. The primary motivation here is to ease cross-compilation against a non-standard set of C++ libraries. Previously, the configuration checks would attempt to link against the standard C++ libraries, which would cause link failures when cross-compiling, even though the actual library link would go through correctly (because of the use of -nodefaultlibs and explicitly specifying any needed libraries). This is more correct even ignoring the motivation, however. Patch by Shoaib Meenai! llvm-svn: 279584
* [CMake] Get libcxx building under LLVM/runtimesChris Bieneman2016-08-181-6/+8
| | | | | | | | | | | | | | | | | | | | | Summary: The new LLVM runtimes build directory requires some basic conventions across the runtime projects. These changes make libcxx build under the runtimes subdirectory. The general idea of the changes is that the runtimes subdirectory requires some conventions to be consistent across runtime projects. I expect to have a few more small patches that build on this to tie up check targets and other things useful in development workflows. Summary of changes in this patch: * Renamed variable LLVM_CONFIG -> LLVM_CONFIG_PATH * Renamed variable LIBCXX_BUILT_STANDALONE -> LIBCXX_STANDALONE_BUILD * Add an include of AddLLVM in the tests subdirectory for add_lit_testsuite. Reviewers: EricWF Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D23696 llvm-svn: 279151
* Rework libatomic handling in CMake and LIT.Eric Fiselier2016-07-181-1/+1
| | | | | | | | | | | | | | | This patch updates the way libc++ handles checking for libatomic, in part to prepare for https://reviews.llvm.org/D22073. Changes: * 'LIBCXX_HAS_ATOMIC_LIB' is now set whenever libatomic is available even libc++ doesn't need to manually link it. * 'LIBCXX_HAVE_CXX_ATOMICS_WITH_LIB' is now used to detect when libatomic needs to be manually linked. * 'LIBCXX_HAS_ATOMIC_LIB' now adds 'libatomic' as a available feature in the test suite. llvm-svn: 275759
* [CMake] Cleanup uses of USES_TERMINALChris Bieneman2016-06-081-8/+0
| | | | | | | | Now that we are on CMake 3.4.3 we no longer need a version check around this. This is the libcxx side of r272211. llvm-svn: 272212
* [libcxx] Allow target flags to affect CMake configuration testsEric Fiselier2016-06-021-0/+20
| | | | | | | | | | | | | | | | | | Summary: This patch changes the libc++ CMake so that it adds certain target flags like '-m32' or '--gcc-toolchain' before including config-ix.cmake. Since these flags can affect things like check_library_exists([...]) they needed to be added before the tests are performed. This patch fixes: https://llvm.org/bugs/show_bug.cgi?id=24322 Reviewers: danalbert, jroelofs, bcraig, compnerd Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D20887 llvm-svn: 271460
* Fix PR27875. Parse LIBCXX_CXX_ABI_LIBRARY_PATH as a path not a stringEric Fiselier2016-05-271-2/+4
| | | | llvm-svn: 271070
* [libcxx] Prefer C++14 over C++11 when building libc++experimental.Eric Fiselier2016-05-101-0/+5
| | | | | | | | | | | | | | | | | | Summary: Currently libc++experimental builds with C++11. This patch changes that to C++14 when supported by the compiler. Although nothing currently requires C++14 the upcoming <experimental/memory_resource> implementation would benefit from it. [1] Note that libc++.so continues to build with C++11 and is unaffected by this change. [1] <experimental/memory_resource> provides global resources which must exist for the entire lifetime of the program. In order to ensure that a global resource can be used during program termination there destructors must never be invoked. The only way to do this, while also allowing "constant initialization", is to use a C++14 union. Reviewers: mclow.lists Subscribers: pete, cfe-commits Differential Revision: http://reviews.llvm.org/D19992 llvm-svn: 269070
* Fix PR26622 - Make CheckLibcxxAtomic.cmake use the libc++ headers.Eric Fiselier2016-02-201-2/+2
| | | | llvm-svn: 261383
* Issue a warning instead of fatal errors when checks for libatomic fail.Vasileios Kalintiris2016-02-161-2/+2
| | | | | | | | | | | | This should fix PR26631, PR26622 and has the nice property that the addition of the CheckLibcxxAtomic.cmake module acts as an NFC on the platforms of the reporters (at least for the time being). As these bug reports explain, CMake fails the atomic check because the include headers might not exist in the host environment. We could potentially point to the headers provided by libcxx itself. llvm-svn: 260961
* Rename CheckLibcxxAtomic.cmake variable result names so they don't clash ↵Eric Fiselier2016-02-111-2/+2
| | | | | | with LLVM llvm-svn: 260531
* Fix r260515 - Correct typos in CMake changesEric Fiselier2016-02-112-8/+4
| | | | llvm-svn: 260524
* Re-commit "Introduce a cmake module to figure out whether we need to link ↵Vasileios Kalintiris2016-02-112-0/+46
| | | | | | | | | | with libatomic." This re-applies commit r260235. However, this time we add -gcc-toolchain to the compiler's flags when the user has specified the LIBCXX_GCC_TOOLCHAIN variable. llvm-svn: 260515
* Revert "Introduce a cmake module to figure out whether we need to link with ↵Vasileios Kalintiris2016-02-092-43/+0
| | | | | | | | | | | libatomic." This reverts commit r260235. It breaks LLVM's bootstrap when building with a -gcc-toolchain and the system's gcc installation does not provide the libatomic library and its headers. We should check whether LIBCXX_GCC_TOOLCHAIN is set and adjust the flags accordingly. llvm-svn: 260323
* Introduce a cmake module to figure out whether we need to link with libatomic.Vasileios Kalintiris2016-02-092-0/+43
| | | | | | | | | | | | | | Summary: This fixes the tests under std/atomics for 32-bit MIPS CPUs where the 8-byte atomic operations call into the libatomic library. Reviewers: dsanders, mclow.lists, EricWF, jroelofs, joerg Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D16613 llvm-svn: 260235
* Fix the search path for CMake filesNiels Ole Salscheider2016-02-041-1/+1
| | | | | | | This allows to find the LLVM's CMake files after moving them in r259821. llvm-svn: 259842
* Revert r256606 due to compiler-rt sanitizer bot failuresEric Fiselier2015-12-301-31/+10
| | | | llvm-svn: 256614
* Cleanup CMake for out-of-tree buildsEric Fiselier2015-12-301-10/+31
| | | | llvm-svn: 256606
* Replace cmake check for printf with a check for fopen.Evgeniy Stepanov2015-12-101-1/+1
| | | | | | | Printf is a builtin, and the check fails with -Werror because of a clang warning about an incompatible redeclaration. llvm-svn: 255187
* Only disable linker script when LIBCXX_CXX_ABI_LIBNAME is noneEric Fiselier2015-10-221-13/+0
| | | | llvm-svn: 251063
* [libcxx] Make libc++.so a linker script by default on most platforms.Eric Fiselier2015-10-151-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch turns on `LIBCXX_ENABLE_ABI_LINKER_SCRIPT` by default whenever `LLVM_HAVE_LINK_VERSION_SCRIPT` is ON. This turns out to be whenever: 1. WIN32 is not defined. 2 UNIX is defined. 3. APPLE is not defined. While `LLVM_HAVE_LINK_VERSION_SCRIPT` is meant to reflect exactly what we are asking I think it's close enough. After committing this patch Linux users will no longer have to use "-lc++abi" explicitly! Reviewers: mclow.lists, danalbert, compnerd, jroelofs Subscribers: emaste, rengolin, cbergstrom, cfe-commits Differential Revision: http://reviews.llvm.org/D13739 llvm-svn: 250469
* Use __config_site when building libc++. Also cleanup ABI versioning docEric Fiselier2015-10-141-3/+3
| | | | llvm-svn: 250261
* ABI versioning macros for libc++.Evgeniy Stepanov2015-10-131-0/+6
| | | | | | | | C++ macros and CMake options that specify the default ABI version of the library, and can be overridden to pick up new ABI-changing features. llvm-svn: 250254
* [libcxx] Capture configuration information when installing the libc++ headersEric Fiselier2015-10-131-0/+16
| | | | | | | | | | | | | | | | | Summary: Hi all, This patch is a successor to D11963. However it has changed dramatically and I felt it would be best to start a new review thread. Please read the design documentation added in this patch for a description of how it works. Reviewers: mclow.lists, danalbert, jroelofs, EricWF Subscribers: vkalintiris, rnk, ed, espositofulvio, asl, eugenis, cfe-commits Differential Revision: http://reviews.llvm.org/D13407 llvm-svn: 250235
* [libcxx] Remove installation rules on Darwin when it would overwrite the ↵Eric Fiselier2015-08-261-5/+7
| | | | | | | | | | | | | | | | | system installation. Summary: On Mac OS X overwriting `/usr/lib/libc++.dylib` can cause your computer to fail to boot. This patch tries to make it harder to do that accidentally. If `CMAKE_SYSTEM_NAME` is `Darwin` and `CMAKE_INSTALL_PREFIX` is `/usr` don't generate installation rules unless the user explicitly provides `LIBCXX_OVERRIDE_DARWIN_INSTALL=ON`. Note that `CMAKE_INSTALL_PREFIX` is always absolute so we don't need to worry about things like `/usr/../usr`. Reviewers: mclow.lists, beanz, jroelofs Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D12209 llvm-svn: 246070
* Fix default value for LLVM_INCLUDE_DOCS in out of tree build.Eric Fiselier2015-08-221-0/+3
| | | | llvm-svn: 245790
* [libcxx] Add new Sphinx documentationEric Fiselier2015-08-222-1/+11
| | | | | | | | | | | | | | | | | Summary: This patch adds Sphinx based documentation to libc++. The goal is to make it easier to write documentation for libc++ since writing new documentation in HTML is cumbersome. This patch rewrites the main page for libc++ along with the instructions for using, building and testing libc++. The built documentation can be found and reviewed here: http://efcs.ca/libcxx-docs In order to build the sphinx documentation you need to specify the cmake options `-DLLVM_ENABLE_SPHINX=ON -DLIBCXX_INCLUDE_DOCS=ON`. This will add the makefile rule `docs-libcxx-html`. Reviewers: chandlerc, mclow.lists, danalbert, jroelofs Subscribers: silvas, cfe-commits Differential Revision: http://reviews.llvm.org/D12129 llvm-svn: 245788
* [libcxx] Add "install-libcxx" target.Eric Fiselier2015-08-191-0/+1
| | | | | | | | | | | | Summary: Currently you can't install libc++ from within the LLVM tree without installing all of LLVM. This patch adds an install rule for libc++. Reviewers: mclow.lists, danalbert, jroelofs, EricWF Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D11697 llvm-svn: 245470
* Fix CMake error whet llvm-config reports a non-existent source directory.Eric Fiselier2015-08-121-2/+6
| | | | llvm-svn: 244717
* Remove -Werror when using check_cxx_compiler_flag because it was causing ↵Eric Fiselier2015-07-311-1/+1
| | | | | | compiler-rt breakages. llvm-svn: 243784
* Print message when configuring for standalone build.Eric Fiselier2015-07-311-0/+1
| | | | llvm-svn: 243737
* Reapply working parts of CMake cleanup.Eric Fiselier2015-07-304-17/+259
| | | | | | | This patch adds the working parts of r243503. The difference with this patch is that it doesn't include the HandleLLVMOptions.cmake file. llvm-svn: 243698
* Revert recent CMake changes again due to failing compiler-rt buildsEric Fiselier2015-07-294-244/+17
| | | | llvm-svn: 243593
* Attempt to fix build issues introduced by Eric Fiselier2015-07-291-24/+23
| | | | | | r243574 llvm-svn: 243591
* Recommit r243503 "[libcxx] Cleanup CMake configuration and integrate with LLVM"Eric Fiselier2015-07-294-17/+245
| | | | | | | | | This change was reverted in r243550 because it broke clang-format builds (see PR24306). This patch recommits a fixed version of the original. llvm-svn: 243574
* Revert r243503 "[libcxx] Cleanup CMake configuration and integrate with LLVM"Hans Wennborg2015-07-294-243/+17
| | | | | | This caused clang-format to stop linking on Mac; see PR24306. llvm-svn: 243550
* [libcxx] Cleanup CMake configuration and integrate with LLVMEric Fiselier2015-07-294-17/+243
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch contains the following changes: 1. Require that libc++ can find a LLVM source directory. This is done the same way as `libc++abi` currently does. 2. Cleanup ugly configuration code in CMakeLists.txt by using `add_flags`, `add_flags_if`, and `add_flags_if_supported` macros. The goals for this patch are: 1. Help libc++ be more consistent with how LLVM handles CMake options (see PR23670 PR23671). 2. Make it easier to use sanitizers using the `LLVM_USE_SANITIZER` option. 3. Make libc++'s CMakeLists.txt file easier to understand and change. 4. Move towards allowing libc++ to create Sphinx documentation (see http://efcs.ca/libcxx-docs). 5. Move towards allowing libc++ to use other LLVM utilities such as `not` and `FileCheck`. Reviewers: mclow.lists, jroelofs, danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D11308 llvm-svn: 243503
* Fix building and testing libc++ with GCC.Eric Fiselier2015-05-201-1/+1
| | | | | | | | | | | | | | | | The changes in src/exception.cpp and cmake/Modules/HandleLibCXXABI.cmake fix a bug when building libc++ with GCC. Because GCC does not support __has_include we need to explicitly tell it that we are building against libc++abi via the preprocessor definition `LIBCXX_BUILDING_LIBCXXABI`. The changes in include/ratio are to work around CWG defect 1712 (constexpr variable template declarations). GCC 4.8 and before has not adopted the resolution to this defect. The changes in include/exception work around an issue where is_final is used without it being defined in type_traits. llvm-svn: 237767
* [libcxx] Add code coverage configuration to CMake and LIT.Eric Fiselier2015-03-311-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds configuration to CMake and LIT for running the libc++ test-suite to generate code coverage. To use code coverage use following instructions. * Find the clang resource dir using `$CXX -print-search-dirs`. Let <library-dir> be the first library search directory. * `cmake <regular-options> -DLIBCXX_GENERATE_COVERAGE=ON -DLIBCXX_COVERAGE_LIBRARY=<library-dir>/lib/<platform>/libclang_rt.profile.a <source>` * `make cxx` * `make check-libcxx` * `make generate-libcxx-coverage` The reason I want this patch upstreamed is so I can setup a bot that generates code coverage and posts in online for every revision. Reviewers: mclow.lists, jroelofs, danalbert Reviewed By: danalbert Differential Revision: http://reviews.llvm.org/D8716 llvm-svn: 233669
* [libcxx] Unify LIBCXX_<ABI-Name>_INCLUDE_PATHS to be ↵Eric Fiselier2015-03-191-6/+6
| | | | | | | | | | | | | | | | | | | | | | LIBCXX_CXX_ABI_INCLUDE_PATHS Summary: Clean up all the different possible CMake options for specifying the ABI include paths into one CMake option named `LIBCXX_CXX_ABI_INCLUDE_PATHS`. The documentation has been updated to reflect this change. For the next week I have added explicit errors if any of the old flags is used. These errors inform users of the change and the new option to use. Before committing the change I will announce this change on cfe-dev. Reviewers: danalbert, mclow.lists Reviewed By: danalbert, mclow.lists Subscribers: jroelofs, cbergstrom, cfe-commits Differential Revision: http://reviews.llvm.org/D5039 llvm-svn: 232762
* [libcxx] Add support for linking libc++ against a static ABI library.Eric Fiselier2015-03-031-1/+5
| | | | | | | | | | | | | | | | Summary: This patch add the CMake option `LIBCXX_ENABLE_STATIC_ABI_LIBRARY` which, when enabled, will link libc++ against the static version of the ABI library. Reviewers: mclow.lists, jroelofs, danalbert Reviewed By: danalbert Subscribers: compnerd, cfe-commits Differential Revision: http://reviews.llvm.org/D8017 llvm-svn: 231076
* [libcxx] Move to using libc++abi2.exp as the default symbol list for libc++Eric Fiselier2015-02-211-0/+1
| | | | | | | | | | | | | | | | | | | | Summary: libc++abi2.exp should be used whenever `cxxabi.h` defines `_LIBCPPABI_VERSION`. This macro was added to libc++abi in 2012 in r149632. For this reason we should use libc++abi2.exp as default unless otherwise specified. Also when building against an in-tree libc++abi we definitely want to use libc++abi2.exp. I would love to know what OSX was the last to use libc++abi.exp but I can only test on 10.9. Reviewers: danalbert, mclow.lists, EricWF Reviewed By: EricWF Subscribers: meadori, cfe-commits Differential Revision: http://reviews.llvm.org/D7773 llvm-svn: 230119
* Make ABI header not found a warning, not an error.Dan Albert2015-02-101-1/+1
| | | | | | | | | | Since we've added a new header to libc++abi (__cxxabi_config.h), we now have a case where we might not always find all the ABI headers: building libc++ against the system's libc++abi on Darwin. Since this isn't actually a fatal error, degrade it to a warning. llvm-svn: 228720
* Add __cxxabi_config.h to libcxxabi headers.Dan Albert2015-02-051-2/+2
| | | | llvm-svn: 228364
* Remove triple detection from cmake.Dan Albert2015-01-161-53/+0
| | | | | | | | This isn't actually used for anything, and is broken on Darwin (currently causing build failures now that the triple is passed to aid cross compiling). Rather than fix unused code, just remove it. llvm-svn: 226243
OpenPOWER on IntegriCloud