summaryrefslogtreecommitdiffstats
path: root/llvm/cmake
Commit message (Collapse)AuthorAgeFilesLines
...
* Rollback r319176.Don Hinton2017-11-291-13/+28
| | | | | | | The ';' separators in LLVM_TARGETS_TO_BUILD disappear when list variables are evaluated in custom commands. llvm-svn: 319268
* Revert "Add opt-viewer testing"Adam Nemet2017-11-291-31/+0
| | | | | | | | This reverts commit r319188. Breaks when c++filt is not available. llvm-svn: 319262
* [cmake] Pass LLVM_USE_LINKER flag when building host tools, e.g.,Don Hinton2017-11-281-1/+4
| | | | | | | | LLVM_OPTIMIZED_TABLEGEN=ON, and not crosscompiling. Differential Revision: https://reviews.llvm.org/D39734 llvm-svn: 319228
* Add opt-viewer testingAdam Nemet2017-11-281-0/+31
| | | | | | | | | | | | | | | Detects whether we have the Python modules (pygments, yaml) required by opt-viewer and hooks this up to REQUIRES. This fixes https://bugs.llvm.org/show_bug.cgi?id=34129 (the lack of opt-viewer testing). It's also related to https://github.com/apple/swift/pull/12938 and the idea is to expose LLVM_HAVE_OPT_VIEWER_MODULES to the Swift cmake. Differential Revision: https://reviews.llvm.org/D40202 llvm-svn: 319188
* [cmake] Remove redundant call to cmake when building host tools.Don Hinton2017-11-281-26/+10
| | | | | | | | | | | | | | | | | | | | | Summary: Remove the redundant, config-time call to cmake when building host tools for cross compiles or optimized tablegen.. The config-time call to cmake is redundant because it will always get called again when the CONFIGURE_LLVM_${target_name} target fires at build-time. This speeds up initial configuration, but has no affect on build behavior. Reviewers: beanz Reviewed By: beanz Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D40229 llvm-svn: 319176
* Revert "Add opt-viewer testing"Adam Nemet2017-11-281-31/+0
| | | | | | | | This reverts commit r319073. Bot fails with a mismatch that looks like pygments-generated HTML. llvm-svn: 319146
* [CMake] Pass LLVM_HOST_TRIPLE to external projectsPetr Hosek2017-11-271-0/+1
| | | | | | | | | LLVM runtimes rely on LLVM_HOST_TRIPLE being set in their builds and tests so make sure it's being passed down. Differential Revision: https://reviews.llvm.org/D40515 llvm-svn: 319109
* [cmake] Pass -Wl,-z,nodelete on Linux to prevent unloadingMichal Gorny2017-11-271-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | Prevent unloading shared libraries on Linux when dlclose() is called. This is necessary since command-line option parsing API relies on registering the global option instances in the option parser instance which can be loaded in a different shared library. Given that we can't reliably remove those options when a library is unloaded, the parser ends up containing dangling references. Since glibc has relatively complex library unloading rules, some of the LLVM libraries can be unloaded while others (including the Support library) stay loaded causing quite a mayhem. To reliably prevent that, just forbid unloading all libraries -- it's a very bad idea anyway. While the issue arguably happens only with BUILD_SHARED_LIBS, it may affect any library reusing llvm::cl interface. Based on patch provided Ross Hayward on https://bugs.gentoo.org/617154. Previously hit by Fedora back in Feb 2016: https://lists.freedesktop.org/archives/mesa-dev/2016-February/107242.html Differential Revision: https://reviews.llvm.org/D40459 llvm-svn: 319105
* Use LIST_SEPARATOR rather than escaping in ExternalProject_AddPetr Hosek2017-11-271-1/+2
| | | | | | | | | | | Escaping ; in list arguments passed to ExternalProject_Add doesn't seem to be working in newer versions of CMake (see https://public.kitware.com/Bug/view.php?id=16137 for more details). Use a custom LIST_SEPARATOR instead which is the officially supported way. Differential Revision: https://reviews.llvm.org/D40232 llvm-svn: 319089
* Revert r319069 - [cmake] Pass -Wl,-z,nodelete on Linux to prevent unloadingMichal Gorny2017-11-271-8/+0
| | | | | | This breaks one of the unit tests. Need to find a good solution. llvm-svn: 319076
* Add opt-viewer testingAdam Nemet2017-11-271-0/+31
| | | | | | | | | | | | | | | Detects whether we have the Python modules (pygments, yaml) required by opt-viewer and hooks this up to REQUIRES. This fixes https://bugs.llvm.org/show_bug.cgi?id=34129 (the lack of opt-viewer testing). It's also related to https://github.com/apple/swift/pull/12938 and the idea is to expose LLVM_HAVE_OPT_VIEWER_MODULES to the Swift cmake. Differential Revision: https://reviews.llvm.org/D40202 llvm-svn: 319073
* [cmake] Pass -Wl,-z,nodelete on Linux to prevent unloadingMichal Gorny2017-11-271-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | Prevent unloading shared libraries on Linux when dlclose() is called. This is necessary since command-line option parsing API relies on registering the global option instances in the option parser instance which can be loaded in a different shared library. Given that we can't reliably remove those options when a library is unloaded, the parser ends up containing dangling references. Since glibc has relatively complex library unloading rules, some of the LLVM libraries can be unloaded while others (including the Support library) stay loaded causing quite a mayhem. To reliably prevent that, just forbid unloading all libraries -- it's a very bad idea anyway. While the issue arguably happens only with BUILD_SHARED_LIBS, it may affect any library reusing llvm::cl interface. Based on patch provided Ross Hayward on https://bugs.gentoo.org/617154. Previously hit by Fedora back in Feb 2016: https://lists.freedesktop.org/archives/mesa-dev/2016-February/107242.html Differential Revision: https://reviews.llvm.org/D40459 llvm-svn: 319069
* [CMake] Allow for Solaris ld -V output on stdoutMichal Gorny2017-11-171-1/+2
| | | | | | | | | | | | | | | | | | In recent versions of Solaris 11.4 (previously 12), ld -V output went to stdout instead of stderr. Since AddLLVM.cmake only expects it on stderr, Solaris ld wasn't properly detected and options not understood by it are passed during the build. The following patch fixes this, allowing for both variants. Tested on i386-pc-solaris2.11.4 (on top of D35755 which is needed for proper Solaris support). Patch by Rainer Orth. Differential Revision: https://reviews.llvm.org/D39601 llvm-svn: 318532
* [globalisel][tablegen] Generate rule coverage and use it to identify ↵Daniel Sanders2017-11-161-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | untested rules Summary: This patch adds a LLVM_ENABLE_GISEL_COV which, like LLVM_ENABLE_DAGISEL_COV, causes TableGen to instrument the generated table to collect rule coverage information. However, LLVM_ENABLE_GISEL_COV goes a bit further than LLVM_ENABLE_DAGISEL_COV. The information is written to files (${CMAKE_BINARY_DIR}/gisel-coverage-* by default). These files can then be concatenated into ${LLVM_GISEL_COV_PREFIX}-all after which TableGen will read this information and use it to emit warnings about untested rules. This technique could also be used by SelectionDAG and can be further extended to detect hot rules and give them priority over colder rules. Usage: * Enable LLVM_ENABLE_GISEL_COV in CMake * Build the compiler and run some tests * cat gisel-coverage-[0-9]* > gisel-coverage-all * Delete lib/Target/*/*GenGlobalISel.inc* * Build the compiler Known issues: * ${LLVM_GISEL_COV_PREFIX}-all must be generated as a manual step due to a lack of a portable 'cat' command. It should be the concatenation of all ${LLVM_GISEL_COV_PREFIX}-[0-9]* files. * There's no mechanism to discard coverage information when the ruleset changes Depends on D39742 Reviewers: ab, qcolombet, t.p.northover, aditya_nandakumar, rovka Reviewed By: rovka Subscribers: vsk, arsenm, nhaehnle, mgorny, kristof.beyls, javed.absar, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D39747 llvm-svn: 318356
* CMake: Turn LLVM_ENABLE_LIBXML2 into a tri-state optionHans Wennborg2017-11-141-0/+4
| | | | | | | | | In addition to the current ON and OFF options, this adds the FORCE_ON option, which causes a configuration error if libxml2 cannot be used. Differential revision: https://reviews.llvm.org/D40050 llvm-svn: 318209
* Move the setting of LLVM_BUILD_MODE to a macro so that we can re-use it in ↵Greg Bedwell2017-11-131-6/+10
| | | | | | | | compiler-rt Differential Revision: https://reviews.llvm.org/D38470 llvm-svn: 318034
* Add a Cross-compilation toolchain file for MSVC.Zachary Turner2017-11-091-0/+219
| | | | | | | | | | | With this patch, you can now cross-compile for Windows on non-Windows hosts. Differential Revision: https://reviews.llvm.org/D39814 This allows cross-compiling for windows on other platforms. llvm-svn: 317830
* [CMake] Passthrough CMAKE_SYSROOT to external projectsPetr Hosek2017-11-091-0/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D39029 llvm-svn: 317744
* [cmake] Allow LLVM_BUILD_INSTRUMENTED to be set to IR or FrontendVedant Kumar2017-11-081-3/+8
| | | | | | | | | | - This deprecates LLVM_ENABLE_IR_PGO but keeps it around for now. - Errors out when LLVM_BUILD_INSTRUMENTED and LLVM_BUILD_INSTRUMENTED_COVERAGE are both set. Motivated by bogner's post-commit review of r313770. llvm-svn: 317725
* [CMake] Remove target to build native tablegenJonas Hahnfeld2017-11-081-14/+1
| | | | | | | | | | | | | This was once needed so that multiple tablegen binaries don't compile the library concurrently. However, this isn't needed anymore since adding USES_TERMINAL to the custom_command. This is supported by the fact that the target was only building LLVMSupport since some cleanups a year ago. If this dependency had really been needed, we would have seen complaints. Differential Revision: https://reviews.llvm.org/D39299 llvm-svn: 317695
* [CMake] Add custom target to create build directoryJonas Hahnfeld2017-11-081-1/+4
| | | | | | | | | | CMake does a poor job in tracking dependencies on files and directories directly. Create custom target similar to the configuration step. On my system, this avoids the reconfiguration on each build. Differential Revision: https://reviews.llvm.org/D39298 llvm-svn: 317694
* Revert r316064 "Fix the incorrect detection of ICONV_LIBRARY_PATH"Hans Wennborg2017-11-061-1/+1
| | | | | | | | | | | | | | | | | | This broke the use of libxml2 on machines where iconv() is provided by libc. I'll follow up on the mailing list to discuss how to fix this properly. > This is introduced in rL308711. > Check for c library is incorrect here just because libc will be found always > and it does not mean that iconv is presented. > > Thank to Andrew Krasny for narrowing down the root cause. > > Reviewers: ecbeckmann > Reviewed By: ecbeckmann > Subscribers: mgorny, llvm-commits > Differential Revision: https://reviews.llvm.org/D38875 llvm-svn: 317517
* Move the srpm, ocaml_make_directory, llvm_vcsrevision_h, and llvm-headers ↵Aaron Ballman2017-11-041-0/+1
| | | | | | projects into the Misc folder on IDEs like Visual Studio rather than leave them in the root directory. NFC. llvm-svn: 317416
* CMake: Let LLVM_BUILD_32_BITS aware of large file.NAKAMURA Takumi2017-11-041-0/+5
| | | | llvm-svn: 317402
* [cmake] Make check_linker_flags operate via linker flagsShoaib Meenai2017-10-311-3/+1
| | | | | | | | | | | | | | | | | `check_linker_flags` currently sets the *compiler* flags (via `CMAKE_REQUIRED_FLAGS`), and thus implicitly relies on cmake's default behavior of passing the compiler flags to the linker. This breaks when cmake's build rules have been altered to not pollute the link line with compiler flags (which can be desirable for build cleanliness). Instead, set `CMAKE_EXE_LINKER_FLAGS` explicitly and use `CMP0056` to ensure the linker flags are passed along. Additionally, since we're inside a function, we can just alter the variable directly (as the alteration will be limited to the scope of the function) rather than saving and restoring the old value. Differential Revision: https://reviews.llvm.org/D39431 llvm-svn: 316972
* Fix -fuse-ld feature detection error.Rui Ueyama2017-10-301-1/+4
| | | | | | | | | | | | | | | | check_cxx_compiler_flag doesn't seem to try to link a program, so the existing code doesn't correctly detect the availability of a given linker. This patch uses check_cxx_source_compiles instead. I confirmed that cmake now reports this error Host compiler does not support '-fuse-ld=foo' for -DLLVM_USE_LINKER=foo. Differential Revision: https://reviews.llvm.org/D39274 llvm-svn: 316958
* [CMake] Fix linker detection in AddLLVM.cmakeTim Shen2017-10-301-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Fix linker not being correctly detected when a custom one is specified through LLVM_USE_LINKER CMake variable. In particular, cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=gold ../llvm resulted into Linker detection: GNU ld instead of Linker detection: GNU Gold due to the construction not accounting for such variable. It led to the general confusion and prevented setting linker-specific flags inside functions defined in AddLLVM.cmake. Thanks Oleksii Vilchanskyi for the patch! llvm-svn: 316956
* Force #define GTEST_LANG_CXX11.Zachary Turner2017-10-271-0/+7
| | | | | | | | | | | | | | | | | | gtest depends on this #define to determine whether it can use various classes like std::tuple, or whether it has to fall back to experimental classes in the std::tr1 namespace. The check in the current version of gtest relies on the value of the `__cplusplus` macro, but MSVC provides a non-conformant value of this macro, making it effectively impossible to detect C++11. In short, LLVM compiled with MSVC has been silently using the tr1 versions of several classes since the beginning of time. This would normally be pretty benign, except that in the latest preview of MSVC they have marked all of the tr1 classes deprecated, so it spews thousands of warnings. llvm-svn: 316798
* [cmake] Restrict resource file usage to Windows build hostsShoaib Meenai2017-10-251-2/+2
| | | | | | | | | | | | | | | | Resource file compilation requires a working resource compiler. Unfortunately, llvm-rc isn't quite there yet [1], and cmake's rc invocation only works on Windows [2]. Until both those issues are addressed, disable resource file usage on non-Windows build hosts, to unblock Windows cross-compilation. This is also consistent with the existing comment, which says "If *on Windows* and building with MSVC". [1] http://lists.llvm.org/pipermail/llvm-dev/2017-October/118433.html [2] https://public.kitware.com/pipermail/cmake/2017-October/066441.html Differential Revision: https://reviews.llvm.org/D39265 llvm-svn: 316594
* Revert 316150 which reinstated r316025.Vassil Vassilev2017-10-191-11/+1
| | | | | | It fails on some bots and now we know how to reproduce it. llvm-svn: 316153
* Reinstate r316025, reverted in r316029.Vassil Vassilev2017-10-191-1/+11
| | | | | | | | | | | | | | | Original commit message: "[cmake] Use find_package to discover zlib This allows us to use standard cmake utilities to point to non-system zlib locations. Patch by Oksana Shadura and me (D39002)." The new patch brings back the old behavior in the cases where find_package cannot find zlib. llvm-svn: 316150
* Fix the incorrect detection of ICONV_LIBRARY_PATHSerguei Katkov2017-10-181-1/+1
| | | | | | | | | | | | | | | This is introduced in rL308711. Check for c library is incorrect here just because libc will be found always and it does not mean that iconv is presented. Thank to Andrew Krasny for narrowing down the root cause. Reviewers: ecbeckmann Reviewed By: ecbeckmann Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D38875 llvm-svn: 316064
* Revert "[cmake] Use find_package to discover zlib"Vassil Vassilev2017-10-171-4/+1
| | | | | | We are investigating what went wrong. llvm-svn: 316029
* [cmake] Use find_package to discover zlibVassil Vassilev2017-10-171-1/+4
| | | | | | | | | This allows us to use standard cmake utilities to point to non-system zlib locations. Patch by Oksana Shadura and me (D39002). llvm-svn: 316025
* Search for libxml2 on macOS too.Nico Weber2017-10-151-1/+1
| | | | | | | | This allows lld-link to process /manifestinput: flags on macOS too. Also makes the `REQUIRES: manifesttool` lld tests run on macOS. Setting LLVM_ENABLE_LIBXML2 to off can suppress this behavior, like on Linux. llvm-svn: 315873
* [cmake] Allow building fuzzers with OSS-Fuzz flags.Matt Morehouse2017-10-121-2/+7
| | | | | | | | | | | | Reviewers: kcc, bogner Reviewed By: bogner Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D38858 llvm-svn: 315629
* Bring r314809 back.Rafael Espindola2017-10-041-0/+3
| | | | | | | | | | | | | | | | | | | | | But now include a check for CPU_COUNT so we still build on 10 year old versions of glibc. Original message: Use sched_getaffinity instead of std::thread::hardware_concurrency. The issue with std::thread::hardware_concurrency is that it forwards to libc and some implementations (like glibc) don't take thread affinity into consideration. With this change a llvm program that can execute in only 2 cores will use 2 threads, even if the machine has 32 cores. This makes benchmarking a lot easier, but should also help if someone doesn't want to use all cores for compilation for example. llvm-svn: 314931
* Revert D38481 due to missing cmake check for CPU_COUNTDaniel Neilson2017-10-041-1/+0
| | | | | | | | | | | | | Summary: This reverts D38481. The change breaks systems with older versions of glibc. It injects a use of CPU_COUNT() from sched.h without checking to ensure that the function exists first. Reviewers: Subscribers: llvm-svn: 314922
* Use sched_getaffinity instead of std::thread::hardware_concurrency.Rafael Espindola2017-10-031-0/+1
| | | | | | | | | | | | | | The issue with std::thread::hardware_concurrency is that it forwards to libc and some implementations (like glibc) don't take thread affinity into consideration. With this change a llvm program that can execute in only 2 cores will use 2 threads, even if the machine has 32 cores. This makes benchmarking a lot easier, but should also help if someone doesn't want to use all cores for compilation for example. llvm-svn: 314809
* Revert "[CMake] Remove `CMAKE_.*_OUTPUT_DIRECTORY` (NFCI)"Brian Gesiak2017-09-291-0/+2
| | | | | | | | Summary: It appears polly makes use of the `CMAKE_RUNTIME_OUTPUT_DIRECTORY` variable when configuring its lit test suite. Reverting this for now. llvm-svn: 314551
* [CMake] Remove `CMAKE_.*_OUTPUT_DIRECTORY` (NFCI)Brian Gesiak2017-09-291-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Three `CMAKE_.*_OUTPUT_DIRECTORY` variables used to be set in CMake and referenced in various other parts of the project. However, in r198205 chapuni added a note to "don't set them anymore", and any remaining references to them were subsequently removed in r198316 and r199592. Now that the variables are no longer used anywhere, remove them, along with the comments advising against using them any longer. Test Plan: I ran `check-all` and confirmed the tests built and passed. Reviewers: beanz, chapuni Reviewed By: beanz Subscribers: mgorny Differential Revision: https://reviews.llvm.org/D38389 llvm-svn: 314550
* Cleanup some problems with LLVM_ENABLE_DUMP in release builds, andDon Hinton2017-09-271-4/+0
| | | | | | | | always set LLVM_ENABLE_DUMP=ON for +Asserts builds. Differential Revision: https://reviews.llvm.org/D38306 llvm-svn: 314346
* CMake: Add option to set LLVM_ENABLE_DUMPMatthias Braun2017-09-261-0/+4
| | | | | | Differential Revision: https://reviews.llvm.org/D38267 llvm-svn: 314186
* [lit] Add a test for the builtin config map.Zachary Turner2017-09-211-3/+6
| | | | | | | | | | | | | | | | | | | Config map is not exposed through the command line, so testing this is somewhat tricky. But basically we need a test that if a custom driver builds a config map and passes it to main, it gets respected. A config map allows config files in the source tree to be mapped to alternate config files in the build tree. This particular test works by having two config files in separate directories, and setting up a config map to have that redirects A/lit.site.cfg to B/altconfig. Then, we print a message in A/lit.site.cfg and B/altconfig and check that we do see the output from B but don't see the output from A. Additionally we test that the test suite specified by A's config map is properly discovered. Differential Revision: https://reviews.llvm.org/D38105 llvm-svn: 313887
* [lit] Make lit support config files with .py extension.Zachary Turner2017-09-211-6/+12
| | | | | | | | | | | | | | | | | Many editors and Python-related diagnostics tools such as debuggers break or fail in mysterious ways when python files don't end in .py. This is especially true on Windows, but still exists on other platforms. I don't want to be too heavy handed in changing everything across the board, but I do want to at least *allow* lit configs to have .py extensions. This patch makes the discovery process first look for a config file with a .py extension, and if one is not found, then looks for a config file using the old method. So for existing users, there should be no functional change. Differential Revision: https://reviews.llvm.org/D37838 llvm-svn: 313849
* [cmake] Add an option to build llvm with IR PGOVedant Kumar2017-09-201-5/+19
| | | | | | | | | | | | This adds an LLVM_ENABLE_IR_PGO option to enable building llvm and its tools with IR PGO instrumentation. Usage: -DLLVM_BUILD_INSTRUMENTED=On -DLLVM_ENABLE_IR_PGO=On (both options must be enabled) Differential Revision: https://reviews.llvm.org/D38066 llvm-svn: 313770
* [cmake] Unmark LLVM_BUILD_INSTRUMENTED_COVERAGE as experimentalVedant Kumar2017-09-201-2/+2
| | | | | | | | The coverage bot has been stable for a while: http://lab.llvm.org:8080/coverage/coverage-reports/index.html llvm-svn: 313769
* Make libcxx tests work when llvm sources are not present.Zachary Turner2017-09-201-3/+6
| | | | | | | | | | | | | | | | | | | Despite a strong CMake warning that this is an unsupported libcxx build configuration, some bots still rely on being able to check out lit and libcxx independently with no LLVM sources, and then run lit against libcxx. A previous patch broke that workflow, so this is making it work again. Unfortunately, it breaks generation of the llvm-lit script for libcxx, but we will just have to live with that until a solution is found that allows libcxx to make more use of llvm build pieces. libcxx can still run tests by using the ninja check target, or by running lit.py directly against the build tree or source tree. Differential Revision: https://reviews.llvm.org/D38057 llvm-svn: 313763
* [cmake] Add SOURCE_DIR argument to llvm_check_source_file_listShoaib Meenai2017-09-191-4/+16
| | | | | | | | | The motivation is to be able to check sources outside the current directory. See D31363 for example usage. Differential Revision: https://reviews.llvm.org/D37859 llvm-svn: 313648
* Resubmit "Fix llvm-lit script generation in libcxx."Zachary Turner2017-09-191-3/+3
| | | | | | | | After speaking with the libcxx owners, they agreed that this is a bug in the bot that needs to be fixed by the bot owners, and the CMake changes are correct. llvm-svn: 313643
OpenPOWER on IntegriCloud