summaryrefslogtreecommitdiffstats
path: root/llvm/cmake/modules
Commit message (Collapse)AuthorAgeFilesLines
...
* Enable building LLVMgold.dll under mingw.Stephen Hines2017-08-291-1/+1
| | | | | | | | | | | | | | | | | Summary: Plugins can (and should) be enabled under mingw if we are building libLLVM.dll, so this is just a missed case. This allows LLVMgold.dll to be built now under mingw. Reviewers: llvm-commits, pirama, beanz, chapuni Reviewed By: chapuni Subscribers: chapuni, mgorny Differential Revision: https://reviews.llvm.org/D37116 llvm-svn: 311973
* Re-apply "Fix cmake check for futimens when deploying to earlier macOS ↵Juergen Ributzka2017-08-291-0/+1
| | | | | | | | | | | | | | | | | | | releases." This fixes an issue with the use of LLVM_PARALLEL_LINK_JOBS. Original commit message: macOS 10.13 added a new API (futimens). This API is only available on macOS 10.13 and later, but the cmake check we have in place only tests if the symbol is present and ignores the availability attribute. Luckily we have new warning for this and by making this warning an error the cmake check will return the correct result. See also rdar://problem/33992750. Differential Revision: https://reviews.llvm.org/D37027 llvm-svn: 311965
* Revert "Fix cmake check for futimens when deploying to earlier macOS releases."Juergen Ributzka2017-08-281-1/+0
| | | | | | This reverts r311949. The ARM bots don't like it. llvm-svn: 311953
* Fix cmake check for futimens when deploying to earlier macOS releases.Juergen Ributzka2017-08-281-0/+1
| | | | | | | | | | | | | | macOS 10.13 added a new API (futimens). This API is only available on macOS 10.13 and later, but the cmake check we have in place only tests if the symbol is present and ignores the availability attribute. Luckily we have new warning for this and by making this warning an error the cmake check will return the correct result. See also rdar://problem/33992750. Differential Revision: https://reviews.llvm.org/D37027 llvm-svn: 311949
* Update LLVM fuzzers to use the libFuzzer bundled with the compiler toolchainGeorge Karpenkov2017-08-231-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D37041 llvm-svn: 311515
* [CMake][LLVM] Remove duplicated library mask. Broken clang linking against ↵Oleg Ranevskyy2017-08-101-6/+3
| | | | | | | | | | | | | | | | | | | clangShared Summary: The `LLVM${c}Info` mask is listed twice in LLVM-Config.cmake. This results in the libraries such as LLVMARMInfo, LLVMAArch4Info, etc appearing twice in `extract_symbols.py` command line while building `clangShared`. `Extract_symbols.py` does not work well in such a case and completely ignores the symbols from the duplicated libraries. Thus, the LLVM(...)Info symbols do not get exported from `clangShared` and linking clang against it fails with unresolved dependencies. Seems to be a mere copy-paste mistake. Reviewers: beanz, chapuni Reviewed By: chapuni Subscribers: chapuni, aemerson, mgorny, kristof.beyls, llvm-commits, asl Differential Revision: https://reviews.llvm.org/D36119 llvm-svn: 310590
* [OCaml] Pass -D/-UNDEBUG through to ocamlcMichal Gorny2017-07-291-0/+5
| | | | | | | | | | Detect [/-][DU]NDEBUG in CMAKE_C_FLAGS* and pass them through to ocamlc. This is necessary because their value might affect visibility of dump functions in LLVM and ocamlc uses its own compiler and flags by default. Differential Revision: https://reviews.llvm.org/D35898 llvm-svn: 309483
* [OCaml] Install dynamic libraries in 'stubdirs' directoryMichal Gorny2017-07-291-1/+1
| | | | | | | | | | | | | | | | Install the OCaml dynamic libraries in the 'stubdirs' directory rather than the llvm subdirectory in order to fix running executables created by ocamlc. Otherwise, the executables fail to run being unable to locate the libraries (unless the LLVM directory is explicitly added to LD_LIBRARY_PATH). The staging directories are not altered since they work for our development setup anyway, and installing into two directories would unnecessarily make the code more complex. Differential Revision: https://reviews.llvm.org/D35995 llvm-svn: 309481
* [CMake] NFC. Add intrinsics_gen target to CMake ExportsChris Bieneman2017-07-281-0/+7
| | | | | | By creating a dummy of this target in LLVMConfig.cmake, projects that can build against out-of-tree LLVM can freely depend on the target without needing to have conditionals for if LLVM is in-tree or out-of-tree. llvm-svn: 309389
* Revert rL309320 - "[OCaml] Respect CMAKE_C_FLAGS for OCaml C files"Michal Gorny2017-07-281-1/+1
| | | | | | | This causes buildbot breakage for systems where OCaml files are built with a different compiler. llvm-svn: 309364
* [OCaml] Respect CMAKE_C_FLAGS for OCaml C filesMichal Gorny2017-07-271-1/+1
| | | | | | | | | | | | | | | Pass the values of CMAKE_C_FLAGS and CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE} as -ccopt to ocamlc. This enforces the specific flags used for the LLVM build to be used for OCaml bindings as well, notably -O and -march flags. This also solves the issue of the user being unable to force specific flags for OCaml bindings builds. Gentoo needs this to enforce -DNDEBUG consistently between the LLVM build and the split OCaml bindings build. Differential Revision: https://reviews.llvm.org/D35898 llvm-svn: 309320
* [CMake] Disable -Werror for CMake checksPetr Hosek2017-07-261-0/+1
| | | | | | | | | -Werror may cause some of the CMake checks to fail, so we disable it even if it's enabled for the build itself. Differential Revision: https://reviews.llvm.org/D35924 llvm-svn: 309235
* [CMake] Fix broken builds from r309029Chris Bieneman2017-07-251-1/+1
| | | | | | Fixing the mismatched beginning if and endif contents. llvm-svn: 309030
* [CMake] Allow TableGen.cmake to be included multiple timesChris Bieneman2017-07-251-1/+1
| | | | | | This patch allows TableGen.cmake to be safely included multiple times in sub-projects. llvm-svn: 309029
* Generate a compile_commands.json DB for external projects.George Karpenkov2017-07-201-0/+1
| | | | | | | | | | | compile_commands.json file is very useful both for tooling and for reproducible builds. For files generated from recursive CMake invocation this information was not previously generated. Differential Review: https://reviews.llvm.org/D35219 llvm-svn: 308698
* [cmake] GetSVN.cmake takes a list of argumentsBrian Gesiak2017-07-191-12/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: GetSVN.cmake currently takes one or two pairs of <source directory path, name>, then attempts to get the remote repository URL and source control revision of the repositories at those one or two paths. It takes two pairs in order for Clang to get the revision of both itself, and its dependency LLVM. For projects that rely upon both LLVM and Clang (Apple's Swift is one example, but there are others), GetSVN.cmake is used to fetch *three* revisions: Swift, Clang, and LLVM. To support this use case, change GetSVN.cmake: instead of taking one or two pairs (specified via `FIRST_SOURCE_DIR`/`FIRST_NAME`, have it take a list of pairs (`SOURCE_DIRS`/`NAMES`). In order to allow Clang to migrate, have GetSVN.cmake support both sets of arguments for now. The old arguments can be removed once Clang begins using the new arguments, and Swift can follow when it updates its copy of LLVM. Test Plan: 1. Perform a clean build of Clang, verify that `clang --version` still prints the correct LLVM and Clang revision information. 2. Modify Clang's CMake to use the new arguments, then perform another clean build. `clang --version` should still print the correct revision information. Reviewers: jordan_rose, beanz, probinson Subscribers: echristo, chapuni, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D35132 llvm-svn: 308507
* [Solaris] Detect Solaris LD, use detection results to pass Solaris-ld optionsRui Ueyama2017-07-121-2/+17
| | | | | | | | | | | | Solaris ld is not the only linker available on Solaris. Introducing linker detection and using LLVM_LINKER_IS_SOLARISLD to select Solaris-ld specific handling. Patch by: Fedor Sergeev Differential Revision: https://reviews.llvm.org/D35325 llvm-svn: 307852
* Use --color-diagnostics instead of -color-diagnostics.Rui Ueyama2017-07-121-2/+2
| | | | | | | | | Solaris ld interprets -color-diagnostics as a -c option, so it is better to use --color-diagnostics instead. lld accepts both. Differential Revision: https://reviews.llvm.org/D35327 llvm-svn: 307850
* [CMake] Support multi-target runtimes buildPetr Hosek2017-07-111-1/+9
| | | | | | | | | | | | | | | | | | | | | This changes adds support for building runtimes for multiple different targets using LLVM runtimes directory. The implementation follow the model used already by the builtins build which already supports this option. To specify the runtimes targets to be built, use the LLVM_RUNTIME_TARGETS variable, where the valuae is the list of targets to build runtimes for. To pass a per target variable to the runtimes build, you can set RUNTIMES_<target>_<variable> where <variable> will be passed to the runtimes build for <target>. Each runtime target (except for the default one) will be installed into lib/<target> subdirectory. Build targets will be suffixed with the target name. Differential Revision: https://reviews.llvm.org/D32816 llvm-svn: 307731
* [cmake] Remove obsolete unset in CMake.George Karpenkov2017-07-101-5/+0
| | | | | | Differential Revision: https://reviews.llvm.org/D35024 llvm-svn: 307569
* CMake: Add LLVM_UTILS_INSTALL_DIR optionTom Stellard2017-07-051-1/+1
| | | | | | | | | | | | | | | | | | Summary: This is like the LLVM_TOOLS_INSTALL_DIR option, but for the utils that are installed when the LLVM_INSTALL_UTILS. This option defaults to 'bin' to remain consistent with the current behavior, but distros may want to install these to libexec/llvm. Reviewers: beanz Reviewed By: beanz Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D30655 llvm-svn: 307150
* TableGen.cmake: Use DEPFILE for Ninja Generator with CMake>=3.7.NAKAMURA Takumi2017-06-211-3/+26
| | | | | | | | | | | CMake emits build targets as relative paths (from build.ninja) but Ninja doesn't identify absolute path (in *.d) as relative path (in build.ninja). So, let file names, in the command line, relative from ${CMAKE_BINARY_DIR}, where build.ninja is. Note that tblgen is executed on ${CMAKE_BINARY_DIR} as working directory. Differential Revision: https://reviews.llvm.org/D33707 llvm-svn: 305961
* [cmake] Add support for using the standalone leaks sanitizer with LLVM.Michael Gottesman2017-06-201-0/+3
| | | | | | | | | | This commit causes LLVM_USE_SANITIZER to now accept the "Leaks" option. This will cause cmake to pass in -fsanitize=leak in all of the appropriate places. I am making this change so that I can setup a linux bot that only detects leaks. llvm-svn: 305839
* [CMake] Get rid of generating obj.*-tblgen if CMake >= 3.9 for Ninja generator.NAKAMURA Takumi2017-06-171-1/+2
| | | | | | CMake-3.9 doesn't let compilation units depend on their dependent libraries. llvm-svn: 305635
* [CMake] Introduce LLVM_TARGET_TRIPLE_ENV as an option to override ↵NAKAMURA Takumi2017-06-171-0/+13
| | | | | | | | | | | | | | | | | | | LLVM_DEFAULT_TARGET_TRIPLE at runtime. No behavior is changed if LLVM_TARGET_TRIPLE_ENV is blank or undefined. If LLVM_TARGET_TRIPLE_ENV is "TEST_TARGET_TRIPLE" and $TEST_TARGET_TRIPLE is not blank, llvm::sys::getDefaultTargetTriple() returns $TEST_TARGET_TRIPLE. Lit resets config.target_triple and config.environment[LLVM_TARGET_TRIPLE_ENV] to change the default target. Without changing LLVM_DEFAULT_TARGET_TRIPLE nor rebuilding, lit can be run; TEST_TARGET_TRIPLE=i686-pc-win32 bin/llvm-lit -sv path/to/test/ TEST_TARGET_TRIPLE=i686-pc-win32 ninja check-clang-tools Differential Revision: https://reviews.llvm.org/D33662 llvm-svn: 305632
* Addressed Takumi's comment about redundancy.Galina Kistanova2017-06-121-32/+18
| | | | llvm-svn: 305222
* TableGen.cmake: Try to fix build breakage introduce in r305142.NAKAMURA Takumi2017-06-111-1/+1
| | | | | | | | | | | | LLVM_TABLEGEN_TARGET is undefined in clang standalone build. STREQUAL cannot omit LHS. Then I saw an error; CMake Error at /path/to/install/llvm/lib/cmake/llvm/TableGen.cmake:40 (if): if given arguments: "STREQUAL" "/path/to/install/llvm/bin/llvm-tblgen.exe" Unknown arguments specified llvm-svn: 305159
* Added dependency on the TableGen executable file.Galina Kistanova2017-06-101-13/+37
| | | | | | | | | | | | For the case when LLVM_OPTIMIZED_TABLEGEN is ON (enables LLVM_USE_HOST_TOOLS), we need both _TABLEGEN_TARGET and _TABLEGEN_EXE in the DEPENDS list to have .inc files rebuilt on a tablegen change, as cmake does not propagate file-level dependencies of custom targets. We could always have just one dependency on both the target and the file, but the 2 cases would produce cleaner cmake files. llvm-svn: 305142
* Enable c++1z experimental builds.Vassil Vassilev2017-06-091-0/+3
| | | | | | Patch by David Abdurachmanov! llvm-svn: 305123
* [cmake] Enable reverse iteration by default through build macroMandeep Singh Grang2017-06-061-0/+4
| | | | | | | | | | | | | | | | | | Summary: Reverse iteration can be turned on, by default, by setting -DLLVM_REVERSE_ITERATION:BOOL=ON during cmake. With this enabled, we can uncover lots of cases of non-determinism in codegen by simply running our tests (without any other change). We can then setup a buildbot which will have this turned on by default. Initially, a lot of unit tests will fail in this configuration. Once we start fixing non-determinism issues, we can gradually make this a blocker for patches. Reviewers: davide, dblaikie, mehdi_amini, dberlin Reviewed By: dblaikie Subscribers: probinson, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D33908 llvm-svn: 304757
* CMake: Fix docs-llvm-man target when clang+llvm is in the same source treeTom Stellard2017-05-151-2/+2
| | | | | | | | | | | | | | | | Summary: This was broken by r302499. Configuring with -DLLVM_BUILD_DOCS=ON would cause the docs-llvm-man target not to be created. Reviewers: anemet, beanz Reviewed By: anemet Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D33146 llvm-svn: 303042
* Revert "Revert "CMake: Move sphinx detection into AddSphinxTarget.cmake""Tom Stellard2017-05-091-0/+13
| | | | | | | | This reverts commit r302054. Re-commit now that I have fixes for clang/lld. llvm-svn: 302499
* Revert "CMake: Move sphinx detection into AddSphinxTarget.cmake"Tom Stellard2017-05-031-13/+0
| | | | | | | | This reverts commit r302025. clang and lld need to be updated too so they don't break with this patch. llvm-svn: 302054
* CMake: Move sphinx detection into AddSphinxTarget.cmakeTom Stellard2017-05-031-0/+13
| | | | | | | | | | | | Reviewers: chandlerc, beanz, mgorny Reviewed By: beanz Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31773 llvm-svn: 302025
* CMake: Silence more stderr when running git.Tim Northover2017-05-021-1/+2
| | | | | | It can confuse bots collecting errors. llvm-svn: 301934
* limit to 2 parallel links when using thinltoBob Haarman2017-04-281-7/+11
| | | | | | | | | | | | | | | | Summary: When using ThinLTO, the linker performs its own parallelism. This change limits the number of parallel link jobs that Ninja will issue to keep the total number of threads reasonable when linking with ThinLTO. Reviewers: hans, ruiu Subscribers: mgorny, mehdi_amini, Prazek Differential Revision: https://reviews.llvm.org/D31990 llvm-svn: 301676
* CMake: ignore git stderr when trying to sort out revision. NFC.Tim Northover2017-04-281-1/+2
| | | | llvm-svn: 301650
* [LLVM][MIPS] Fix different definition of off_t in LLDB and LLVM.Nitesh Jain2017-04-241-0/+7
| | | | | | | | | | Reviewers: beanz Subscribers: jaydeep, bhushan, lldb-commits, slthakur, llvm-commits, krytarowski, emaste Differential Revision: https://reviews.llvm.org/D32125 llvm-svn: 301171
* Add a linker script to version LLVM symbolsSylvestre Ledru2017-04-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds a very simple linker script to version the lib's symbols and thus trying to avoid crashes if an application loads two different LLVM versions (as long as they do not share data between them). Note that we deliberately *don't* make LLVM_5.0 depend on LLVM_4.0: they're incompatible and the whole point of this patch is to tell the linker that. Avoid unexpected crashes when two LLVM versions are used in the same process. Author: Rebecca N. Palmer <rebecca_palmer@zoho.com> Author: Lisandro Damían Nicanor Pérez Meyer <lisandro@debian.org> Author: Sylvestre Ledru <sylvestre@debian.org> Bug-Debian: https://bugs.debian.org/848368 Reviewers: beanz, rnk Reviewed By: rnk Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D31524 llvm-svn: 300496
* Reverting cmake/modules/AddLLVM.cmake changes from revision 300184 (Added by ↵Ayman Musa2017-04-131-2/+1
| | | | | | mistake). llvm-svn: 300185
* [X86] Change instructions names to keep consistency with the naming ↵Ayman Musa2017-04-131-1/+2
| | | | | | | | convention. NFC Differential Revision: https://reviews.llvm.org/D31743 llvm-svn: 300184
* Support: Add a VCSRevision.h header file.Peter Collingbourne2017-04-131-38/+46
| | | | | | | | | | | | | | | | | | | | | This is a magic header file supported by the build system that provides a single definition, LLVM_REVISION, containing an LLVM revision identifier, if available. This functionality previously lived in the LTO library, but I am moving it out to lib/Support because I want to also start using it in lib/Object to create the IR symbol table. This change also fixes a bug where LLVM_REVISION was never actually being used in lib/LTO because the macro HAS_LLVM_REVISION was never defined (it was misspelled as HAVE_SVN_VERSION_INC in lib/LTO/CMakeLists.txt, and was only being defined in a non-existent file Version.cpp). I also changed the code to use "git rev-parse --git-dir" to locate the .git directory, instead of looking for it in the LLVM source root directory, which makes this compatible with monorepos as well as git worktrees. Differential Revision: https://reviews.llvm.org/D31985 llvm-svn: 300160
* Append -w when LLVM_ENABLE_WARNINGS is Off.Vassil Vassilev2017-04-121-0/+4
| | | | | | Reviewed by rnk (D31702)! llvm-svn: 300100
* Respect CMAKE_INSTALL_MANDIR for sphinx generated manpagesJonathan Roelofs2017-04-051-1/+6
| | | | | | | | This is a re-work of r297516, which was reverted in r297545. https://reviews.llvm.org/D30906 llvm-svn: 299547
* Fix evaluation of LLVM_DEFINITIONSSerge Pavlov2017-03-211-10/+22
| | | | | | | | | | | | | | | | CMake variable LLVM_DEFINITIONS collects preprocessor definitions provided for host compiler that builds llvm components. A function add_llvm_definitions was introduced in AddLLVMDefinitions.cmake to keep track of these definitions and was intended to be a replacement for CMake command add_definitions. Actually in many cases add_definitions is still used and the content of LLVM_DEFINITIONS is not actual now. On the other hand the current version of CMake allows getting set of definitions in a more convenient way. This fix implements evaluation of the variable by reading corresponding cmake property. Differential Revision: https://reviews.llvm.org/D31125 llvm-svn: 298336
* [cmake] Refactor warning flag logic to use Unix warnings with clang-clReid Kleckner2017-03-161-137/+146
| | | | | | | | | | | | | | | | | | | | | | | Summary: clang-cl understands the GCC-style -W[no-]foo flags, and for the most part ignores MSVC -wd flags. So, let's pass the curated set of warning flags we use on Unix on Windows. We can also stop passing /W4 -wd*, which for the most part corresponds to -Wall -Wextra with a bunch of flags that we mostly ignore. I had to disable -Wnon-virtual-dtor on Windows, because it fires on every COM class ever. I filed PR32286 to fix this. So far I've only found two instances of -Wstring-conversion in the WinASan code, which I'll fix. Other than that we seem clean. Reviewers: hans Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D30992 llvm-svn: 297964
* Re-apply r296730, "cmake: Configure the ThinLTO cache directory when using ↵Peter Collingbourne2017-03-151-5/+14
| | | | | | | | | ELF lld or gold." All known cache-related bugs observed when self hosting have been fixed (r296907 and r297853). llvm-svn: 297854
* Revert r297516 - Respect CMAKE_INSTALL_MANDIR for sphinx generated manpagesEric Fiselier2017-03-111-1/+1
| | | | | | | | When CMAKE_INSTALL_MANDIR isn't defined it ends up attempting to install the man pages under "/man1" and we really don't want to accidentally install stuff at the filesystem root. llvm-svn: 297545
* Respect CMAKE_INSTALL_MANDIR for sphinx generated manpagesJonathan Roelofs2017-03-101-1/+1
| | | | llvm-svn: 297516
* CMake: Don't install llvm-tblgen twiceTom Stellard2017-03-091-1/+1
| | | | | | | | | | | | | | | | | | | | Summary: The add_tablegen macros defines its own install target, and it was also calling add_llvm_utility which adds another install target. Configuring with -DLLVM_TOOLS_INSTALL_DIR set to something other than 'bin' along with -DLLVM_INSTALL_UTILS=ON was causing llvm-tablgen to be installed to two separate directories. Reviewers: beanz, hans Reviewed By: beanz Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D30656 llvm-svn: 297403
OpenPOWER on IntegriCloud