summaryrefslogtreecommitdiffstats
path: root/libcxx/lib/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix dependencies on install-libcxx CMake targetEric Fiselier2016-05-031-3/+3
| | | | llvm-svn: 268363
* [CMake] Create a separate install target for libcxx headersChris Bieneman2016-04-291-1/+4
| | | | | | This change doesn't impact the behavior of the install-libcxx target which installs whichever libcxx components you build, it just adds a separate target to just install the headers. llvm-svn: 268124
* Re-commit "Introduce a cmake module to figure out whether we need to link ↵Vasileios Kalintiris2016-02-111-0/+1
| | | | | | | | | | 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-091-1/+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-091-0/+1
| | | | | | | | | | | | | | 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
* Add CMake option LIBCXX_CONFIGURE_IDE to allow for other IDE's.Eric Fiselier2015-12-161-1/+1
| | | | | | CLion needs similar configuration changes as MSVC_IDE and XCODE. llvm-svn: 255851
* [CMake] If you're not installing the libcxx library, exclude it from the ↵Chris Bieneman2015-12-031-3/+10
| | | | | | | | "all" target so it doesn't get built when you run "ninja install" This is just a build dependency optimization. Running check-libcxx will still build libcxx and function as expected, it just removes libcxx from the all build and install targets. llvm-svn: 254628
* Use proper output directory when naminging the libc++ outputEric Fiselier2015-10-231-1/+1
| | | | llvm-svn: 251100
* Dont required CMake 3 to install a linker scriptEric Fiselier2015-10-221-2/+3
| | | | llvm-svn: 251065
* Re-enable linker scripts after fixing bad CMakeEric Fiselier2015-10-151-1/+1
| | | | llvm-svn: 250472
* Use correct CMake variable for the libnameEric Fiselier2015-10-141-1/+1
| | | | llvm-svn: 250329
* [libcxx] Make it drastically simpler to link libc++.Eric Fiselier2015-10-141-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Currently on most platforms you have to manually link the c++ abi library used with libc++ whenever you use libc++. So your typical libc++ command like invocation might look like: ``` clang++ -stdlib=libc++ foo.cpp -lc++abi ``` Having to manually link `libc++abi.so` makes it harder for libc++ to be used generically. This patch fixes that by generating a linker script for `libc++.so` that correctly links the ABI library. On linux the linker script for libc++abi would look like: ``` # libc++.so INPUT(libc++.so.1 -lc++abi) ``` With the linker script you can now use libc++ using only `-stdlib=libc++`. This is the technique that is used on FreeBSD in ordered to link cxxrt and I think it's the best approach to make our users lives simpler. The CMake option used to enable this is `LIBCXX_ENABLE_ABI_LINKER_SCRIPT`. In future I would like to enable this by default on all platforms except for Darwin. Reviewers: mclow.lists, danalbert, rsmith, jroelofs, EricWF Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D12508 llvm-svn: 250319
* ABI versioning macros for libc++.Evgeniy Stepanov2015-10-131-2/+2
| | | | | | | | 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] Reexport std::bad_array_length symbols from libc++abi on OS X.Eric Fiselier2015-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | Summary: On OS X libc++ needs to reexport libc++abi's symbols in order for them to be provided. We explicitly list the symbols to reexport it libcxx/lib/libc++abi2.exp. This patch adds the symbols required by std::bad_array_length which have been missing for some time. However there is a problem. std::bad_array_length was add to libc++abi in September of 2013 by commit r190479, about a year after everything else. Therefore I think older OS X version have libc++abi versions without std::bad_array_length. On those systems libc++ won't build with this change because we will try and export undefined symbols. The workaround I would write to support older systems depends on the amount of people who would need it. If only a small number of developers are affected it might be sufficient to provide a CMake switch like `LIBCPP_LIBCPPABI_HAS_BAD_ARRAY_LENGTH` which is ON by default and can be disabled by those who need it. Otherwise I think we should try to automatically detect if the symbols are present in `/usr/lib/libc++abi.dylib` and configure accordingly. I would prefer the first solution because writing CMake sucks. Reviewers: mclow.lists, aprantl Subscribers: aprantl, cfe-commits Differential Revision: http://reviews.llvm.org/D13445 llvm-svn: 249339
* [libcxx] Remove installation rules on Darwin when it would overwrite the ↵Eric Fiselier2015-08-261-10/+13
| | | | | | | | | | | | | | | | | 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
* [libcxx] Add "install-libcxx" target.Eric Fiselier2015-08-191-2/+10
| | | | | | | | | | | | 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
* Reapply working parts of CMake cleanup.Eric Fiselier2015-07-301-43/+25
| | | | | | | 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-291-25/+43
| | | | llvm-svn: 243593
* Recommit r243503 "[libcxx] Cleanup CMake configuration and integrate with LLVM"Eric Fiselier2015-07-291-43/+25
| | | | | | | | | 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-291-25/+43
| | | | | | This caused clang-format to stop linking on Mac; see PR24306. llvm-svn: 243550
* [libcxx] Cleanup CMake configuration and integrate with LLVMEric Fiselier2015-07-291-43/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* [libcxx] Add support for sanitizers on OS X.Eric Fiselier2015-07-221-0/+26
| | | | | | | | | | | | Summary: This patch adds special configuration logic to find the compiler_rt libraries required by sanitizers on OS X. The supported sanitizers are Address and Undefined. Reviewers: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D11381 llvm-svn: 242858
* [libcxx] Add code coverage configuration to CMake and LIT.Eric Fiselier2015-03-311-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Only enable special apple link flags for libc++abi (or none)Eric Fiselier2015-03-271-1/+2
| | | | llvm-svn: 233368
* [libcxx] Add support for linking libc++ against a static ABI library.Eric Fiselier2015-03-031-5/+16
| | | | | | | | | | | | | | | | 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/+4
| | | | | | | | | | | | | | | | | | | | 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
* [cmake/multilib] Teach libc++'s CMake build to support multilib libdirChandler Carruth2014-12-291-2/+2
| | | | | | | | | | | | | | | | | | suffixes like 'lib64' or 'lib32'. This support is currently very rhudimentary. We define a variable LIBCXX_LIBDIR_SUFFIX. In a standalone build of libc++ this can be directly set as a cached variable to control the multilib suffix used. When building libc++ within a larger LLVM build, it is hard wired to whatever LLVM libdir suffix has been selected. If this doesn't work for someone, just let me know. I'm happy to change it. This is essentially new functionality for libc++ so I don't expect it to have any impact for folks until they start setting these variables. However, I know libc++ is built in a diverse set of environments so just let me know if this causes you any problems. llvm-svn: 224926
* Fixes to get libc++ building on sun solaris. Patch from C Bergstrom.Eric Fiselier2014-11-251-0/+3
| | | | llvm-svn: 222794
* [libcxx] Refactor CMakeLists.txt handling of compile and link flags to ↵Eric Fiselier2014-11-151-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | suppress warnings. Summary: Currently we have 5 variables that are used to specify options for building libcxx 1. `LIBCXX_CXX_FEATURE_FLAGS` 2. `LIBCXX_CXX_WARNING_FLAGS` 3. `LIBCXX_CXX_REQUIRED_FLAGS` 4. `compile_flags` (in libcxx/lib) 5. `link_flags` (in libcxx/lib) The first three all get put into `CMAKE_CXX_FLAGS`. This changes the way flags are handled by only using 3 different options: 1. `LIBCXX_CXX_FLAGS` - general compile and link flags. 2. `LIBCXX_COMPILE_FLAGS` - compile only flags. 3. `LIBCXX_LINK_FLAGS` - link only flags. This patch also removes the warning about `-nostdinc++` being unused during linking. Reviewers: mclow.lists, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D6277 llvm-svn: 222080
* [libcxx] Redo adding support for building and testing with an ABI library ↵Eric Fiselier2014-10-191-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | not along linker paths Summary: This is the second attempt at allowing for the use of libraries that the linker cannot find. The first attempt used `CMAKE_LIBRARY_PATH` and `find_library` to select which ABI library should be used. There were a number of problems with this approach: - `find_library` didn't work with cmake targets (ie in-tree libcxxabi build) - It wasn't always possible to determine where `find_library` actually found your library. - `target_link_libraries` inserted the path of the ABI library into libc++'s RPATH when `find_library` was used. - Linking libc++ and it's ABI library is a special case. It's a lot easier to keep it simple. After discussion with @cbergstrum a new approach was decided upon. This patch achieve the same ends by simply using `LIBCXX_CXX_ABI_LIBRARY_PATH` to specify where to find the library (if the linker won't find it). When this variable is defined it is simply added as a library search path when linking libc++. It is a lot easier to duplicate this behavior in LIT. It also prevents libc++ from being linked with an RPATH. Reviewers: mclow.lists, cbergstrom, chandlerc, danalbert Reviewed By: chandlerc, danalbert Subscribers: chandlerc, cfe-commits Differential Revision: http://reviews.llvm.org/D5860 llvm-svn: 220157
* [libc++] Fix the CMake build on Mac when setting MACOSX_DEPLOYMENT_TARGET=10.6Hans Wennborg2014-08-121-1/+2
| | | | | | | | | The build file was trying to use LIBCXX_VERSION, which isn't set anywhere, and also forgot to split the 'compile_flags' list. Differential Revision: http://reviews.llvm.org/D4860 llvm-svn: 215463
* Obey LLVM_LIBDIR_SUFFIX.Dan Albert2014-08-041-2/+2
| | | | llvm-svn: 214726
* eliminate install of duplicate headers (take 2)David Fang2014-06-241-1/+1
| | | | | | Patch by Ryuta Suzuki llvm-svn: 211629
* Justin Bogner: This makes the headers available in the build directory, ↵Howard Hinnant2013-11-151-13/+0
| | | | | | | | | | | | making it easier to use freshly-built clang with freshly-built libc++. Basically, this makes it possible to run clang with libc++ without having to install it, even if you don't have any version of libc++ installed in /usr/ llvm-svn: 194825
* [cmake] Provide an option to not install the support headers so that the ↵Michael Gottesman2013-09-021-0/+6
| | | | | | cmake build can match the make build if requested. llvm-svn: 189739
* [cmake] Make libcxx standalone compile on Mac OS X.Michael Gottesman2013-09-021-0/+37
| | | | llvm-svn: 189738
* [CMake] Fix c++ abi library configuration on Linux.Michael J. Spencer2012-12-311-1/+3
| | | | | | | | | | You can now configure from the command line using: -DLIBCXX_CXX_ABI=libsupc++ -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS="path;path Also documents how to build on Linux. llvm-svn: 171316
* [CMake] Add support for selecting which c++ abi library to use.Michael J. Spencer2012-11-301-0/+3
| | | | llvm-svn: 169036
* Allow libc++ to be built with CMake from within the LLVM tree. The libc++ ↵Howard Hinnant2012-03-191-11/+11
| | | | | | part is just some renaming as the variable was already in use, conflicting with something else in the LLVM tree. Contributed by Ruben Van Boxem. llvm-svn: 153036
* Partial Windows port by Ruben Van BoxemHoward Hinnant2011-09-221-1/+9
| | | | llvm-svn: 140328
* http://llvm.org/bugs/show_bug.cgi?id=9399 fixed by Ryuta SuzukiHoward Hinnant2011-05-241-0/+1
| | | | llvm-svn: 131961
* http://llvm.org/bugs/show_bug.cgi?id=9349 I introduced a bug with the last ↵Howard Hinnant2011-03-031-0/+1
| | | | | | fix and Ryuta Suzuki has corrected it. And hopefully I committed Ryuta Suzuki's directions correctly this time. llvm-svn: 126917
* http://llvm.org/bugs/show_bug.cgi?id=9349 I have not personally tested this ↵Howard Hinnant2011-03-021-1/+1
| | | | | | patch. Please let me know if it causes problems. llvm-svn: 126846
* Add CMake build and fix major Linux blockers.Michael J. Spencer2010-12-101-0/+56
llvm-svn: 121510
OpenPOWER on IntegriCloud