summaryrefslogtreecommitdiffstats
path: root/llvm/cmake/modules
Commit message (Collapse)AuthorAgeFilesLines
...
* [CMake] Feed BUNDLE_PATH through llvm target wrappersChris Bieneman2019-05-311-4/+4
| | | | | | This feeds the new llvm_codsign BUNDLE_PATH option through from the llvm target wrapper functions, so that you can specify the BUNDLE_PATH on the target's codesign. llvm-svn: 362248
* [CMake] Provide an option to use relative paths in debug infoPetr Hosek2019-05-312-0/+18
| | | | | | | | | | | | | | | | | CMake always uses absolute file paths in the generated compiler invocation which results in absolute file paths being embedded in debug info. This is undesirable when building a toolchain e.g. on bots as the debug info may embed the bot source checkout path which is meaningless anywhere else. This change introduces the LLVM_USE_RELATIVE_PATHS_IN_DEBUG_INFO which uses -fdebug-prefix-map (where supported) options to rewrite paths embedded into debug info with relative ones. Additionally, LLVM_SOURCE_PREFIX can be used to override the path to source directory with a different one. Differential Revision: https://reviews.llvm.org/D62622 llvm-svn: 362185
* Support codesigning bundles and forcingChris Bieneman2019-05-301-3/+11
| | | | | | | | | | | | | | | | | | | | | | | Summary: Clangd's framework is assembled by copying binaries from the lib and bin directories into a bundle shape. This results in an invalid bundle code signature because the signature only applies to the binaries not the resources. This patch adds two new options to `llvm_codesign` to enable re-signing the library and XPC service as bundles. The `BUNDLE_PATH` option allow specifying an explicit path to codesign, which enables signing bundles which aren't generated using CMake's `FRAMEWORK` or `BUNDLE` target properties. The `FORCE` option allows re-signing binaries that have already been signed. This is required for how clangd exposes the clangd library and tools as both XPC and non-XPC services using the same binary. Reviewers: jkorous, bogner Reviewed By: bogner Subscribers: mgorny, ilya-biryukov, dexonsmith, arphaman, kadircet, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D62693 llvm-svn: 362169
* Revert r361826, as it still breaks LLDB.Alexandre Ganea2019-05-282-33/+1
| | | | llvm-svn: 361837
* [CMake] Default options for faster executables on MSVCAlexandre Ganea2019-05-282-1/+33
| | | | | | Differential Revision: https://reviews.llvm.org/D55056 llvm-svn: 361826
* Revert [test] Fix plugin testsDon Hinton2019-05-281-0/+8
| | | | | | | | This reverts r361790 (git commit fe5eaab2b5b4523886bd63aebcfea8cfce586fa1) It's causing buildbot breakage, so reverting while I investigate. llvm-svn: 361793
* [test] Fix plugin testsDon Hinton2019-05-281-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The following changes were required to fix these tests: 1) Change LLVM_ENABLE_PLUGINS to an option and move it to llvm/CMakeLists.txt with an appropriate default -- which matches the original default behavior. 2) Move the plugins directory from clang/test/Analysis clang/lib/Analysis. It's not enough to add an exclude to the lit.local.cfg file because add_lit_testsuites recurses the tree and automatically adds the appropriate `check-` targets, which don't make sense for the plugins because they aren't tests and don't have `RUN` statements. Here's a list of the `clang-check-anlysis*` targets with this change: ``` $ ninja -t targets all| sed -n "s/.*\/\(check[^:]*\):.*/\1/p" | sort -u | grep clang-analysis check-clang-analysis check-clang-analysis-checkers check-clang-analysis-copypaste check-clang-analysis-diagnostics check-clang-analysis-engine check-clang-analysis-exploration_order check-clang-analysis-html_diagnostics check-clang-analysis-html_diagnostics-relevant_lines check-clang-analysis-inlining check-clang-analysis-objc check-clang-analysis-unified-sources check-clang-analysis-z3 ``` 3) Simplify the logic and only include the subdirectories under clang/lib/Analysis/plugins if LLVM_ENABLE_PLUGINS is set. Reviewed By: NoQ Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D62445 llvm-svn: 361790
* Revert "[Analysis] Link library dependencies to Analysis plugins"Akira Hatanaka2019-05-251-7/+3
| | | | | | | | | | | This reverts commit r361340. The following builder has been broken for the past few days because of this commit: http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan/ Also revert r361399, which was committed to fix r361340. llvm-svn: 361685
* Fix BUILD_SHARED_LIBS builds after r361567Daniel Sanders2019-05-241-1/+1
| | | | | | Also fixed a comment I noticed while debugging this build llvm-svn: 361591
* Break false dependencies on target librariesDaniel Sanders2019-05-231-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: For the most part this consists of replacing ${LLVM_TARGETS_TO_BUILD} with some combination of AllTargets* so that they depend on specific components of a target backend rather than all of it. The overall effect of this is that, for example, tools like opt no longer falsely depend on the disassembler, while tools like llvm-ar no longer depend on the code generator. There's a couple quirks to point out here: * AllTargetsCodeGens is a bit more prevalent than expected. Tools like dsymutil seem to need it which I was surprised by. * llvm-xray linked to all the backends but doesn't seem to need any of them. It builds and passes the tests so that seems to be correct. * I left gold out as it's not built when binutils is not available so I'm unable to test it Reviewers: bogner, JDevlieghere Reviewed By: bogner Subscribers: mehdi_amini, mgorny, steven_wu, dexonsmith, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62331 llvm-svn: 361567
* Unbreak non-PIC builds after r361340/D62174David Zarzycki2019-05-221-1/+1
| | | | llvm-svn: 361399
* [Analysis] Link library dependencies to Analysis pluginsPetr Hosek2019-05-221-3/+7
| | | | | | | | | These are needed to avoid undefined symbols which aren't satisfied by Clang itself. Differential Revision: https://reviews.llvm.org/D62174 llvm-svn: 361340
* [cmake] Add custom command to touch archives on Darwin so ninja won't ↵Don Hinton2019-05-211-0/+12
| | | | | | | | | | | | | | | | | | | | rebuild them. Summary: clang and newer versions of ninja use high-resolutions timestamps, but older versions of libtool on Darwin don't, so the archive will often get an older timestamp than the last object that was added or updated. To fix this, we add a custom command to touch the archive after it's been built so that ninja won't rebuild it unnecessarily the next time it's run. Reviewed By: beanz Tags: #llvm Differential Revision: https://reviews.llvm.org/D62172 llvm-svn: 361280
* [CMake] Specify component for all target typesPetr Hosek2019-05-211-4/+3
| | | | | | | | | | This addresses an issue introduced in r360230 which broke existing use cases of LLVM_DISTRIBUTION_COMPONENTS since ARCHIVE and LIBRARY target types are no longer handled as components. Differential Revision: https://reviews.llvm.org/D62176 llvm-svn: 361223
* Tweaks for setting CMAKE_LINKER to lld-linkNico Weber2019-05-211-8/+2
| | | | | | | | | | | | | | | - Just look for "lld-link", not "lld-link.exe". llvm/cmake/platforms/WinMsvc.cmake for example sets CMAKE_LINKER to lld-link without .exe - Stop passing -gwarf to the compiler in sanitizer options when lld is enabled -- there's no reason to use different debug information keyed off the linker. (If this was for MinGW, we should check for that instead.) Differential Revision: https://reviews.llvm.org/D62111 llvm-svn: 361214
* build: use clang-cl for runtimes when targeting WindowsSaleem Abdulrasool2019-05-171-3/+18
| | | | | | | | When targeting Windows and building a runtime (subproject) prefer to use `clang-cl` rather than the `clang` driver. This allows us to cross-compile runtimes for the Windows environment from Linux. llvm-svn: 361072
* [Analysis] Only run plugins tests if plugins are actually enabledPetr Hosek2019-05-171-7/+3
| | | | | | | | | | | | | | When plugins aren't enabled, don't try to run plugins tests. Don't enable plugins unconditionally based on the platform, instead check if LLVM shared library is actually being built which may not be the case for every host configuration, even if the host itself supports plugins. This addresses test failures introduced by r360891/D59464. Differential Revision: https://reviews.llvm.org/D62050 llvm-svn: 360991
* [cmake] Remove MSVC C4800 overrideSimon Pilgrim2019-05-101-1/+0
| | | | | | | | | | Remove C4800 : ''type' : forcing value to bool 'true' or 'false' (performance warning)' from the list of forced disabled warnings. I'm not seeing any regressions in VS2017/VS2019 llvm/clang builds from removing this. Differential Revision: https://reviews.llvm.org/D61730 llvm-svn: 360417
* [cmake] Remove MSVC C4355 overrideSimon Pilgrim2019-05-101-1/+0
| | | | | | | | | | Remove C4355 : ''this' : used in base member initializer list' from the list of forced disabled warnings. I'm not seeing any regressions in VS2017/VS2019 llvm/clang builds from removing this. Differential Revision: https://reviews.llvm.org/D61757 llvm-svn: 360413
* Fix whitespace mismatches. NFCI.Simon Pilgrim2019-05-081-5/+5
| | | | | | Tabs are not our friends. llvm-svn: 360248
* [CMake] Install import librariesMartin Storsjo2019-05-081-16/+3
| | | | | | | | | | | | Simplify the cmake logic to install both runtime and import libraries (treated as ARCHIVE), as the later are needed to link against llvm. Patch by Julien Schueller! Differential Revision: https://reviews.llvm.org/D61425 llvm-svn: 360230
* Add libc++ to link XRay test cases if libc++ is used to build CLANGXing Xue2019-05-061-0/+2
| | | | | | | | | | | | | | Summary: When libc++ is used to build CLANG, its XRay libraries libclang_rt.xray-*.a have dependencies on libc++. Therefore, libc++ is needed to link and run XRay test cases. For Linux -rpath is also needed to specify where to load libc++. This change sets macro LLVM_LIBCXX_USED to 1 if libc++ is actually used in the build. XRay tests then check the flag and add -L<llvm_shlib_dir> -lc++ and -Wl,-rpath=<llvm_shlib_dir> if needed. Reviewers: hubert.reinterpretcast, amyk, dberris, jasonliu, sfertile, EricWF Subscribers: dberris, mgorny, jsji, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61016 llvm-svn: 360060
* Fix CMake Invalid Escape SequenceAlexandre Ganea2019-05-061-1/+1
| | | | | | | | Patch by xoviat Differential Revision: https://reviews.llvm.org/D60658 llvm-svn: 360045
* build: add option to disable unwind tablesSaleem Abdulrasool2019-05-021-0/+4
| | | | | | | | | The unwind tables (`.eh_frame`, `.arm.extab`) add a significant chunk of data to the final binaries. These should not be needed normally, particularly when exceptions are disabled. This enables shrinking `lldb-server` by ~18% (3 MiB) when built with gold. llvm-svn: 359819
* Add llvm-profdata to LLVM_TOOLCHAIN_TOOLSRussell Gallop2019-04-301-0/+1
| | | | | | | | | | This is required for using PGO on Windows but isn't in the Windows release packages. Windows packages are built with LLVM_INSTALL_TOOLCHAIN_ONLY so only includes llvm "tools" listed here. Differential Revision: https://reviews.llvm.org/D61317 llvm-svn: 359569
* [cmake] Fix error message on simulated VS version checkRussell Gallop2019-04-301-1/+1
| | | | | | | | | | | | | | For clang-cl self hosts in VS2015 environment this was reporting: "Host Clang must have at least -fms-compatibility-version=19.00.24213.1, your version is 9.0.0". This check fires as CMake detects the simulated environment as _MSC_VER 1900, which is truncated. This makes it less than the required 19.00.24213.1. Differential revision: https://reviews.llvm.org/D61188 llvm-svn: 359556
* [cmake] Disable a GCC optimization when building LLVM for MIPSSimon Atanasyan2019-04-271-0/+5
| | | | | | | | | | | | | | | GCC when compiling LLVM for MIPS can introduce a jump to an uninitialized value when shrink wrapping is enabled. As shrink wrapping is enabled in GCC at all optimization levels, it must be disabled. This bug exists for all versions of GCC since 4.9.2. This partially resolves PR37701 / GCC PR target/86069. Patch by Simon Dardis. Differential Revision: https://reviews.llvm.org/D48069 llvm-svn: 359376
* [CMake] Use add_dependencies in add_llvm_install_targetsAlex Langford2019-04-231-2/+16
| | | | | | | | | | | Summary: The CMake documentation says that the `DEPENDS` field of add_custom_target is for files and output of custom commands. Adding a dependency on a target should be done with `add_dependency`. Differential Revision: https://reviews.llvm.org/D60879 llvm-svn: 359042
* [cmake] Fix bug in r358779 - [CMake] Pass monorepo build settings in cross ↵Don Hinton2019-04-211-2/+7
| | | | | | | | | compile Escape semicolons in the targets list so that cmake doesn't expand them to spaces. llvm-svn: 358859
* [CMake] Pass monorepo build settings in cross compileChris Bieneman2019-04-191-0/+2
| | | | | | | | This allows the cross compiled build targets to configure the LLVM tools and sub-projects that are part of the main build. This is needed for generating native non llvm *-tablegen tools when cross compiling clang in the monorepo build environment. llvm-svn: 358779
* [CMake] Allow custom extensions for externalized debug infoStefan Granitz2019-04-181-5/+12
| | | | | | | | | | | | | | | | Summary: Extra flexibility for emitting debug info to external files (remains Darwin only for now). LLDB needs this functionality to emit a LLDB.framework.dSYM instead of LLDB.dSYM when building the framework, because the latter could conflict with the driver's lldb.dSYM when emitted in the same directory on case-insensitive file systems. Reviewers: friss, bogner, beanz Subscribers: mgorny, aprantl, llvm-commits, #lldb Tags: #llvm Differential Revision: https://reviews.llvm.org/D60862 llvm-svn: 358685
* Removed CMake cache upgrade code from 2011Dmitri Gribenko2019-04-161-9/+0
| | | | | | | | | | | | | | | Summary: This code was added in r141266 to make a breaking change to CMake, but still be compatible with existing cache files. The cache files from 2011 are irrelevant today in 2019. Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60711 llvm-svn: 358482
* [cmake] Fix dependency issue in TableGenPengxuan Zheng2019-04-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: There is a bug in add_tablegen which causes cmake to fail with the following error message if LLVM_TABLEGEN is set. CMake Error at cmake/modules/TableGen.cmake:147 (add_dependencies): The dependency target "LLVM-tablegen-host" of target "CLANG-tablegen-host" does not exist. Call Stack (most recent call first): tools/clang/utils/TableGen/CMakeLists.txt:3 (add_tablegen) The issue happens because setting LLVM_TABLEGEN causes cmake to skip generating the LLVM-tablegen-host target. As a result, a non-existent target was added for CLANG-tablegen-host causing cmake to fail. In order to fix this issue, this patch adds a guard to check the validity of the dependency target before adding it as a dependency. Reviewers: aganea, smeenai Reviewed By: aganea Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60576 llvm-svn: 358226
* [CMake] Fix accidentally swapped input/output parameters of string(REPLACE) ↵Martin Storsjo2019-04-091-1/+1
| | | | | | for mingw llvm-svn: 357979
* [CMake] Move configuration of LLVM_CXX_STD to HandleLLVMOptions.cmakeJustin Bogner2019-04-091-0/+10
| | | | | | | | | | | Standalone builds of projects other than llvm itself (lldb, libcxx, etc) include HandleLLVMOptions but not the top level llvm CMakeLists, so we need to set this variable here to ensure that it always has a value. This should fix the build issues some folks have been seeing. llvm-svn: 357976
* [CMake] Replace LLVM_ENABLE_CXX1Y and friends with LLVM_CXX_STDJustin Bogner2019-04-081-17/+10
| | | | | | | | | | | | | Simplify building with particular C++ standards by replacing the specific "enable standard X" flags with a flag that allows specifying the standard you want directly. We preserve compatibility with the existing flags so that anyone with those flags in existing caches won't break mysteriously. Differential Revision: https://reviews.llvm.org/D60399 llvm-svn: 357899
* [llvm] [cmake] Add additional headers only if they existMichal Gorny2019-04-041-1/+9
| | | | | | | | | | | Modify the add_header_files_for_glob() function to only add files that do exist, rather than all matches of the glob. This fixes CMake error when one of the include directories (which happen to include /usr/include) contain broken symlinks. Differential Revision: https://reviews.llvm.org/D59632 llvm-svn: 357701
* [cmake] Add function for building native toolShoaib Meenai2019-04-022-18/+31
| | | | | | | | | | | | | | | | | | Instead of duplicating functionality for building native versions of tblgen and llvm-config, add a function to set up a native tool build. This will also be used for llvm-nm in a follow-up. This should be NFC for tblgen, besides the slightly different COMMENT for the custom command (it'll display the tablegen target name instead of always saying TableGen). For the native llvm-config, it's a behavior change in that we'll use llvm_ExternalProject_BuildCmd instead of constructing the build command manually, always build in Release, and reference the correct binary path for multi-config generators. I believe all of these changes to be bug fixes. Differential Revision: https://reviews.llvm.org/D60024 llvm-svn: 357486
* [cmake] Remove use of deprecated generator expression. NFCShoaib Meenai2019-03-301-1/+1
| | | | | | | Use $<CONFIG> instead of $<CONFIGURATION>, since the latter has been deprecated since CMake 3.0, and the former is entirely equivalent. llvm-svn: 357338
* [cmake] Reset variable before using itShoaib Meenai2019-03-262-0/+4
| | | | | | | | | | | | | | | | A bunch of macros use the same variable name, and since CMake macros don't get their own scope, the value persists across macro invocations, and we can end up exporting targets which shouldn't be exported. Clear the variable before each use to avoid this. Converting these macros to functions would also help, since it would avoid the variable leaking into its parent scope, and that's something I plan to follow up with. It won't fully address the problem, however, since functions still inherit variables from their parent scopes, so if someone in the parent scope just happened to use the same variable name we'd still have the same issue. llvm-svn: 357036
* Moved everything SMT-related to LLVM and updated the cmake scripts.Mikhail R. Gadelha2019-03-252-0/+112
| | | | | | Differential Revision: https://reviews.llvm.org/D54978 llvm-svn: 356929
* [CMake] Correct CMake message modeAlex Langford2019-03-151-1/+1
| | | | | | | | | | | | | | | | Summary: This wasn't actually printing out a CMake warning, it was prepending "WARN" to the message. Reviewers: zturner Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59432 llvm-svn: 356297
* [AIX][CMake] Changes for building on AIX with XL and GCCJason Liu2019-03-132-6/+33
| | | | | | | | | | | | | | | | | | | Summary: In support of IBM's efforts to produce a viable C and C++ LLVM compiler for AIX (ref: RFC at http://lists.llvm.org/pipermail/llvm-dev/2019-February/130175.html), this patch adds customizations to the CMake files in order to properly invoke the host toolchain for the build on AIX. Additional changes to enable a successful build will follow. Patch by Xing Xue Reviewers: hubert.reinterpretcast, jasonliu, sfertile Reviewed by: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D58250 llvm-svn: 356104
* Use AIX version detection at LLVM run-timeHubert Tong2019-03-131-1/+2
| | | | | | | | | | | | | | | | | | | | | | | Summary: AIX compilers define macros based on the version of the operating system. This patch implements updating of versionless AIX triples to include the host AIX version. Also, the host triple detection in the build system is adjusted to strip the AIX version information so that the run-time detection is preferred. Reviewers: xingxue, stefanp, nemanjai, jasonliu Reviewed By: xingxue Subscribers: mgorny, kristina, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58798 llvm-svn: 355995
* [CMake] Support stripping and linking output to .build-id directoryPetr Hosek2019-03-091-2/+8
| | | | | | | | | | | | | | | | | | | | | When installing runtimes with install-runtimes-stripped, we don't want to just strip them, we also want to preserve the debugging information for potential debugging. To make it possible to later find the stripped debugging information, we want to use the .build-id layout: https://fedoraproject.org/wiki/RolandMcGrath/BuildID#Find_files_by_build_ID That is, for libfoo.so with build ID abcdef1234, the debugging information will be installed into lib/debug/.build-id/ab/cdef1234. llvm-objcopy already has support for stripping files and linking the debugging stripped output into the right location. However, CMake doesn't support customizing strip invocation for the *-stripped targets. So instead, we replace CMAKE_STRIP with a custom script that invokes llvm-objcopy with the right command line flags. Differential Revision: https://reviews.llvm.org/D59127 llvm-svn: 355765
* Add secondary libstdc++ 4.8 and 5.1 detection mechanismsHubert Tong2019-03-071-1/+15
| | | | | | | | | | | | | | | | | | | | | | | Summary: The date-based approach to detecting unsupported versions of libstdc++ does not handle bug fix releases of older versions. As an example, the `__GLIBCXX__` value associated with version 5.1, `20150422`, is less than the values associated with versions 4.8.5 and 4.9.3. This patch adds secondary checks based on certain properties in sufficiently new versions of libstdc++. Reviewers: jfb, tstellar, rnk, sfertile, nemanjai Reviewed By: jfb Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58682 llvm-svn: 355638
* [PGO] Context sensitive PGO (part 4)Rong Xu2019-03-061-0/+14
| | | | | | | | | | | Part 4 of CSPGO changes: (1) add support in cmake for cspgo build. (2) fix an issue in big endian. (3) test cases. Differential Revision: https://reviews.llvm.org/D54175 llvm-svn: 355541
* [OptRemarks] Make OptRemarks more generic: rename OptRemarks to RemarksFrancis Visoiu Mistrih2019-03-051-1/+1
| | | | | | | | | | | | | | | Getting rid of the name "optimization remarks" for anything that involves handling remarks on the client side. It's safer to do this now, before we get stuck with that name in all the APIs and public interfaces we decide to export to users in the future. This renames llvm/tools/opt-remarks to llvm/tools/remarks-shlib, and now generates `libRemarks.dylib` instead of `libOptRemarks.dylib`. Differential Revision: https://reviews.llvm.org/D58535 llvm-svn: 355439
* [cmake] Create exports for umbrella library targetsShoaib Meenai2019-03-051-0/+2
| | | | | | | | | | When using the umbrella llvm-libraries and clang-libraries targets, we should export all library targets, otherwise they'll be part of our distribution but not usable from the CMake package. Differential Revision: https://reviews.llvm.org/D58862 llvm-svn: 355354
* Revert duplicate check for DragonFly BSDKamil Rytarowski2019-03-041-1/+0
| | | | | | | | | | | | | | | | | | Summary: Revert duplicate check for DragonFly BSD Submitted by tuxillo. Reviewers: krytarowski Reviewed By: krytarowski Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58907 llvm-svn: 355319
OpenPOWER on IntegriCloud