-
Notifications
You must be signed in to change notification settings - Fork 749
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Prepare Compiler-RT for GnuInstallDirs, matching libcxx, document all
This is a second attempt at D101497, which landed as 9a9bc76 but had to be reverted in 8cf7ddb. This issue was that in the case that `COMPILER_RT_INSTALL_PATH` is empty, expressions like "${COMPILER_RT_INSTALL_PATH}/bin" evaluated to "/bin" not "bin" as intended and as was originally. One solution is to make `COMPILER_RT_INSTALL_PATH` always non-empty, defaulting it to `CMAKE_INSTALL_PREFIX`. D99636 adopted that approach. But, I think it is more ergonomic to allow those project-specific paths to be relative the global ones. Also, making install paths absolute by default inhibits the proper behavior of functions like `GNUInstallDirs_get_absolute_install_dir` which make relative install paths absolute in a more complicated way. Given all this, I will define a function like the one asked for in https://gitlab.kitware.com/cmake/cmake/-/issues/19568 (and needed for a similar use-case). --- Original message: Instead of using `COMPILER_RT_INSTALL_PATH` through the CMake for complier-rt, just use it to define variables for the subdirs which themselves are used. This preserves compatibility, but later on we might consider getting rid of `COMPILER_RT_INSTALL_PATH` and just changing the defaults for the subdir variables directly. --- There was a seaming bug where the (non-Apple) per-target libdir was `${target}` not `lib/${target}`. I suspect that has to do with the docs on `COMPILER_RT_INSTALL_PATH` saying was the library dir when that's no longer true, so I just went ahead and fixed it, allowing me to define fewer and more sensible variables. That last part should be the only behavior changes; everything else should be a pure refactoring. --- I added some documentation of these variables too. In particular, I wanted to highlight the gotcha where `-DSomeCachePath=...` without the `:PATH` will lead CMake to make the path absolute. See [1] for discussion of the problem, and [2] for the brief official documentation they added as a result. [1]: https://cmake.org/pipermail/cmake/2015-March/060204.html [2]: https://cmake.org/cmake/help/latest/manual/cmake.1.html#options In 38b2dec the problem was somewhat misidentified and so `:STRING` was used, but `:PATH` is better as it sets the correct type from the get-go. --- D99484 is the main thrust of the `GnuInstallDirs` work. Once this lands, it should be feasible to follow both of these up with a simple patch for compiler-rt analogous to the one for libcxx. Reviewed By: phosek, #libc_abi, #libunwind Differential Revision: https://reviews.llvm.org/D105765
- Loading branch information
1 parent
fb44c32
commit 1e03c37
Showing
13 changed files
with
205 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
.. _BuildingCompilerRT: | ||
|
||
=============== | ||
Building Compiler-RT | ||
=============== | ||
|
||
.. contents:: | ||
:local: | ||
|
||
.. _build instructions: | ||
|
||
The instructions on this page are aimed at vendors who ship Compiler-RT as part of an | ||
operating system distribution, a toolchain or similar shipping vehicules. If you | ||
are a user merely trying to use Compiler-RT in your program, you most likely want to | ||
refer to your vendor's documentation, or to the general documentation for using | ||
LLVM, Clang, the various santizers, etc. | ||
|
||
CMake Options | ||
============= | ||
|
||
Here are some of the CMake variables that are used often, along with a | ||
brief explanation and LLVM-specific notes. For full documentation, check the | ||
CMake docs or execute ``cmake --help-variable VARIABLE_NAME``. | ||
|
||
**CMAKE_BUILD_TYPE**:STRING | ||
Sets the build type for ``make`` based generators. Possible values are | ||
Release, Debug, RelWithDebInfo and MinSizeRel. On systems like Visual Studio | ||
the user sets the build type with the IDE settings. | ||
|
||
**CMAKE_INSTALL_PREFIX**:PATH | ||
Path where LLVM will be installed if "make install" is invoked or the | ||
"INSTALL" target is built. | ||
|
||
**CMAKE_CXX_COMPILER**:STRING | ||
The C++ compiler to use when building and testing Compiler-RT. | ||
|
||
|
||
.. _compiler-rt-specific options: | ||
|
||
Compiler-RT specific options | ||
----------------------- | ||
|
||
.. option:: COMPILER_RT_INSTALL_PATH:PATH | ||
|
||
**Default**: ```` (empty relative path) | ||
|
||
Prefix for directories where built Compiler-RT artifacts should be installed. | ||
Can be an absolute path, like the default empty string, in which case it is | ||
relative ``CMAKE_INSTALL_PREFIX``. If setting a relative path, make sure to | ||
include the ``:PATH`` with your ``-D``, i.e. use | ||
``-DCOMPILER_RT_INSTALL_PATH:PATH=...`` not | ||
``-DCOMPILER_RT_INSTALL_PATH=...``, otherwise CMake will convert the | ||
path to an absolute path. | ||
|
||
.. option:: COMPILER_RT_INSTALL_LIBRARY_DIR:PATH | ||
|
||
**Default**: ``lib`` | ||
|
||
Path where built Compiler-RT libraries should be installed. If a relative | ||
path, relative to ``COMPILER_RT_INSTALL_PATH``. | ||
|
||
.. option:: COMPILER_RT_INSTALL_BINARY_DIR:PATH | ||
|
||
**Default**: ``bin`` | ||
|
||
Path where built Compiler-RT executables should be installed. If a relative | ||
path, relative to ``COMPILER_RT_INSTALL_PATH``. | ||
|
||
.. option:: COMPILER_RT_INSTALL_INCLUDE_DIR:PATH | ||
|
||
**Default**: ``include`` | ||
|
||
Path where Compiler-RT headers should be installed. If a relative | ||
path, relative to ``COMPILER_RT_INSTALL_PATH``. | ||
|
||
.. option:: COMPILER_RT_INSTALL_DATA_DIR:PATH | ||
|
||
**Default**: ``share`` | ||
|
||
Path where Compiler-RT data should be installed. If a relative | ||
path, relative to ``COMPILER_RT_INSTALL_PATH``. | ||
|
||
.. _LLVM-specific variables: | ||
|
||
LLVM-specific options | ||
--------------------- | ||
|
||
.. option:: LLVM_LIBDIR_SUFFIX:STRING | ||
|
||
Extra suffix to append to the directory where libraries are to be | ||
installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64`` | ||
to install libraries to ``/usr/lib64``. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.