summaryrefslogtreecommitdiffstats
path: root/llvm/cmake
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "Fix llvm-lit script generation in libcxx."Zachary Turner2017-09-191-3/+3
| | | | | | | | | | | | This reverts commit 4ad71811d45268d81b60f27e3b8b2bcbc23bd7b9. There is a bot that is checking out libcxx and lit with nothing else and then running lit.py against the test tree. Since there's no LLVM source tree, there's no LLVM CMake. CMake actually reports this as a warning saying unsupported libcxx configuration, but I guess someone is depending on it anyway. llvm-svn: 313607
* Fix llvm-lit script generation in libcxx.Zachary Turner2017-09-191-3/+3
| | | | | | Differential Revision: https://reviews.llvm.org/D37997 llvm-svn: 313606
* [cmake] Add a simple function to dump all variables.Zachary Turner2017-09-181-0/+7
| | | | | | This is useful when debugging CMake problems. llvm-svn: 313574
* Resubmit "Add a shared llvm.lit module that all test suites can use."Zachary Turner2017-09-161-0/+4
| | | | | | | | There were some issues surrounding Py2 / Py3 compatibility, but I've now tested with both Py2 and Py3 and everything seems to work. llvm-svn: 313467
* Revert lit changes related to lit.llvm module.Zachary Turner2017-09-161-4/+0
| | | | | | | | It looks like this is going to be non-trivial to get working in both Py2 and Py3, so for now I'm reverting until I have time to fully test it under Python 3. llvm-svn: 313429
* Resubmit "[lit] Add a lit.llvm module that all llvm projects can use"Zachary Turner2017-09-161-0/+4
| | | | | | | This was reverted alongside the revert of the lit/llvm-lit refactor, but now that that has re-landed, I'm relanding this as well. llvm-svn: 313426
* Resubmit "[lit] Force site configs to run before source-tree configs"Zachary Turner2017-09-151-8/+66
| | | | | | | | | | | | | | | | | | | | This is a resubmission of r313270. It broke standalone builds of compiler-rt because we were not correctly generating the llvm-lit script in the standalone build directory. The fixes incorporated here attempt to find llvm/utils/llvm-lit from the source tree returned by llvm-config. If present, it will generate llvm-lit into the output directory. Regardless, the user can specify -DLLVM_EXTERNAL_LIT to point to a specific lit.py on their file system. This supports the use case of someone installing lit via a package manager. If it cannot find a source tree, and -DLLVM_EXTERNAL_LIT is either unspecified or invalid, then we print a warning that tests will not be able to run. Differential Revision: https://reviews.llvm.org/D37756 llvm-svn: 313407
* Revert "[lit] Force site configs to run before source-tree configs"Zachary Turner2017-09-151-17/+5
| | | | | | | | This patch is still breaking several multi-stage compiler-rt bots. I already know what the fix is, but I want to get the bots green for now and then try re-applying in the morning. llvm-svn: 313335
* [cmake] Fix a variable shadowing bugReid Kleckner2017-09-151-0/+1
| | | | llvm-svn: 313331
* [lit] Revert "Add a lit.llvm module that all llvm projects can use"Zachary Turner2017-09-151-4/+0
| | | | | | | This is breaking due to some changes I forgot to merge in, so I'm temporarily reverting them until I can re-test that this works. llvm-svn: 313328
* [lit] Add a lit.llvm module that all test suites can use.Zachary Turner2017-09-151-0/+4
| | | | | | | | | | | | | | To further reduce duplicate code, this patch introduces a module that configs can simply import and get access to a lot of useful functionality such as setting up paths, adding features that are useful across all projects, and other utility-type functions. For now this only updates llvm's suite to use this new library, but subsequent patches will update other projects. Differential Revision: https://reviews.llvm.org/D37778 llvm-svn: 313325
* [lit] Force site configs to be run before source-tree configsZachary Turner2017-09-141-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch simplifies LLVM's lit infrastructure by enforcing an ordering that a site config is always run before a source-tree config. A significant amount of the complexity from lit config files arises from the fact that inside of a source-tree config file, we don't yet know if the site config has been run. However it is *always* required to run a site config first, because it passes various variables down through CMake that the main config depends on. As a result, every config file has to do a bunch of magic to try to reverse-engineer the location of the site config file if they detect (heuristically) that the site config file has not yet been run. This patch solves the problem by emitting a mapping from source tree config file to binary tree site config file in llvm-lit.py. Then, during discovery when we find a config file, we check to see if we have a target mapping for it, and if so we use that instead. This mechanism is generic enough that it does not affect external users of lit. They will just not have a config mapping defined, and everything will work as normal. On the other hand, for us it allows us to make many simplifications: * We are guaranteed that a site config will be executed first * Inside of a main config, we no longer have to assume that attributes might not be present and use getattr everywhere. * We no longer have to pass parameters such as --param llvm_site_config=<path> on the command line. * It is future-proof, meaning you don't have to edit llvm-lit.in to add support for new projects. * All of the duplicated logic of trying various fallback mechanisms of finding a site config from the main config are now gone. One potentially noteworthy thing that was required to implement this change is that whereas the ninja check targets previously used the first method to spawn lit, they now use the second. In particular, you can no longer run lit.py against the source tree while specifying the various `foo_site_config=<path>` parameters. Instead, you need to run llvm-lit.py. Differential Revision: https://reviews.llvm.org/D37756 llvm-svn: 313270
* Revert "Determine up front which projects are enabled."Zachary Turner2017-09-131-33/+2
| | | | | | | | | | | This was intended to be a generic CMake solution to a problem shared across several projects. It turns out it doesn't interact very well certain CMake configurations, and furthermore the "problem" is actually not a problem, as the problematic code is never executed to begin with. So this really isn't solving anything. llvm-svn: 313191
* Determine up front which projects are enabled.Zachary Turner2017-09-121-2/+33
| | | | | | | | | | | | | | | | | | | Some projects need to add conditional dependencies on other projects. compiler-rt is already doing this, and I attempted to add this to debuginfo-tests when I ran into the ordering problem, that you can't conditionally add a dependency unless that dependency's CMakeLists.txt has already been run (which would allow you to say if (TARGET foo). The solution to this seems to be to determine very early on the entire set of projects which is enabled. This is complicated by the fact that there are multiple ways to enable projects, and different tree layouts (e.g. mono-repo, out of -tree, external, etc). This patch attempts to centralize all of this into one place, and then updates compiler-rt to demonstrate as a proof of concept how this can simplify code. Differential Revision: https://reviews.llvm.org/D37637 llvm-svn: 313091
* [CMake] Update GetSVN.cmake to handle repoMinSeong Kim2017-09-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When repo is used with git, 'clang --version' option does not display the correct revision information (i.e. git hash on TOP) as the following: clang version 6.0.0 ---> clang version 6.0.0 (clang version) (llvm version) This is because repo also creates .git/svn folder as git-svn does and this makes repo with git uses "git svn info" command, which is only for git-svn, to retrieve its revision information, making null for the info. To correctly distinguish between git-svn and repo with git, the folder hierarchy to specify for git-svn should be .git/svn/refs as the "git svn info" command depends on the revision data in .git/svn/refs. This patch in turn makes repo with git passes through to the third macro, get_source_info_git, in get_source_info function, resulting in correctly retrieving the revision information for repo with git using "git log ..." command. This patch is tested with git, svn, git-svn, and repo with git. Reviewers: llvm-commits, probinson, rnk Reviewed By: rnk Subscribers: rnk, mehdi_amini, beanz, mgorny Differential Revision: https://reviews.llvm.org/D35532 llvm-svn: 312864
* Move some CLI utils out of llvm-isel-fuzzer and into the libraryJustin Bogner2017-09-021-0/+1
| | | | | | | | FuzzMutate might not be the best place for these, but it makes more sense than an entirely new library for now. This will make setting up fuzz targets with consistent CLI handling easier. llvm-svn: 312425
* [CMAKE] Move version control macros to AddLLVM.cmake so they can be reused ↵Don Hinton2017-09-021-0/+33
| | | | | | | | | | | | | by clang, etc. Summary: Move version control macros, find_first_existing_file and find_first_existing_vc_file to AddLLVM.cmake so they can be reused by sub projects like clang. Differential Revision: https://reviews.llvm.org/D36971 llvm-svn: 312419
* Disable 64bit file position on old 32 bit Androids.Eugene Zemtsov2017-09-011-5/+9
| | | | | | | | | | This is needed for building LLVM on Android with new NDK (newer than r15c) and API level < 24. Android C library (Bionic) didn't have support for 64 bit file position until Android N. Differential Revision: https://reviews.llvm.org/D37314 llvm-svn: 312389
* llvm-isel-fuzzer: Make buildable and testable without libFuzzerJustin Bogner2017-09-011-2/+6
| | | | | | | | | | | | | | This adds a dummy main so we can build and run the llvm-isel-fuzzer functionality when we aren't building LLVM with coverage. The approach here should serve as a template to stop in-tree fuzzers from bitrotting (See llvm.org/pr34314). Note that I'll probably move most of the logic in DummyISelFuzzer's `main` to a library so it's easy to reuse it in other fuzz targets, but I'm planning on doing that in a follow up that also consolidates argument handling in our LLVMFuzzerInitialize implementations. llvm-svn: 312338
* Revert r312240Alex Lorenz2017-08-311-2/+0
| | | | | | | The buildbots have shown that -Wstrict-prototypes behaves differently in GCC and Clang so we should keep it disabled until Clang follows GCC's behaviour llvm-svn: 312246
* Build LLVM with -Wstrict-prototypes enabledAlex Lorenz2017-08-311-0/+2
| | | | | | | | | | | Clang 5 supports -Wstrict-prototypes. We should use it to catch any C declarations that declare a non-prototype function. rdar://33705313 Differential Revision: https://reviews.llvm.org/D36669 llvm-svn: 312240
* cmake: Invent add_llvm_fuzzer to set up fuzzer targetsJustin Bogner2017-08-311-0/+7
| | | | | | | | | | | | | | | | This moves the cmake configuration for fuzzers in LLVM to a new macro, add_llvm_fuzzer. This will make it easier to keep things consistent while implementing llvm.org/pr34314. I've also made a couple of minor functional changes here: - the fuzzers now use add_llvm_executable rather than add_llvm_tool. This means they won't create install targets and stuff like that, because those made little sense for these fuzzers. - I've grouped these under "Fuzzers" rather than in with "Tools" for people who build with IDEs. llvm-svn: 312200
* 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-292-0/+10
| | | | | | | | | | | | | | | | | | | 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-282-2/+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-282-0/+2
| | | | | | | | | | | | | | 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
* Remove check for i686.Eric Beckmann2017-07-271-6/+1
| | | | | | | libxml2 is supported for 32 bit, so our build system should be checking the target rather than native os when choosing shared libs. llvm-svn: 309242
* [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
* Close if statement in config-ix.cmake while checking for i686 arch.Eric Beckmann2017-07-261-1/+6
| | | | | | | | Reapply "Set a different var for checking I686, because LLVM_NATIVE_ARCH is" This reverts commit e7400d7cbc2b7539de3aa7a20adc8f4ee0cb7bef. llvm-svn: 309181
* Revert "Set a different var for checking I686, because LLVM_NATIVE_ARCH is"Eric Beckmann2017-07-261-5/+1
| | | | | | This reverts commit 38a6db6397364ee91b04afea2cdcb1b5b4d252bf. llvm-svn: 309179
* Set a different var for checking I686, because LLVM_NATIVE_ARCH isEric Beckmann2017-07-261-1/+5
| | | | | | overwritten. llvm-svn: 309177
* Disable libxml on i686, because it is a 32 bit architecture andEric Beckmann2017-07-261-1/+1
| | | | | | libxml2.so is for 64 bit. llvm-svn: 309169
* [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
* Remove Bitrig: LLVM ChangesErich Keane2017-07-211-4/+0
| | | | | | | | Bitrig code has been merged back to OpenBSD, thus the OS has been abandoned. Differential Revision: https://reviews.llvm.org/D35707 llvm-svn: 308799
* Only use xml if iconv is found, which is a prerequisite.Eric Beckmann2017-07-211-1/+2
| | | | llvm-svn: 308711
* Explicitly disable libxml2 on android.Eric Beckmann2017-07-201-1/+1
| | | | llvm-svn: 308699
* 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
* Only enable libxml2 on linux, because systems like android lack libiconvEric Beckmann2017-07-201-1/+1
| | | | llvm-svn: 308689
* Implement parsing and writing of a single xml manifest file.Eric Beckmann2017-07-201-0/+11
| | | | | | | | | | Summary: Implement parsing and writing of a single xml manifest file. Subscribers: mgorny, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D35425 llvm-svn: 308679
* [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
OpenPOWER on IntegriCloud