Skip to content

Commit

Permalink
[CMake] compiler-rt: Add COMPILER_RT_BUILTINS_ENABLE_PIC
Browse files Browse the repository at this point in the history
The configuration for -fPIC in the builtins library when built standalone
is unconditional, stating that the flags would "normally be added... by
the llvm cmake step"

This is untrue, as the llvm cmake step checks LLVM_ENABLE_PIC, which allows
a client to turn off -fPIC.

I've added an option when compiler-rt builtins are configured standalone, such
as when built as part of the LLVM runtimes system, to guard the application of
-fPIC for users that want it.

Patch By: JamesNagurne

Differential Revision: https://reviews.llvm.org/D72950
  • Loading branch information
petrhosek committed Jan 31, 2020
1 parent b33e5f3 commit c96eeeb
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion compiler-rt/lib/builtins/CMakeLists.txt
Expand Up @@ -26,6 +26,16 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
include(AddCompilerRT)
endif()

if (COMPILER_RT_STANDALONE_BUILD)
# When compiler-rt is being built standalone, possibly as a cross-compilation
# target, the target may or may not want position independent code. This
# option provides an avenue through which the flag may be controlled when an
# LLVM configuration is not being utilized.
option(COMPILER_RT_BUILTINS_ENABLE_PIC
"Turns on or off -fPIC for the builtin library source"
ON)
endif()

include(builtin-config-ix)

# TODO: Need to add a mechanism for logging errors when builtin source files are
Expand Down Expand Up @@ -576,7 +586,9 @@ else ()
# These flags would normally be added to CMAKE_C_FLAGS by the llvm
# cmake step. Add them manually if this is a standalone build.
if(COMPILER_RT_STANDALONE_BUILD)
append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC BUILTIN_CFLAGS)
if(COMPILER_RT_BUILTINS_ENABLE_PIC)
append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC BUILTIN_CFLAGS)
endif()
append_list_if(COMPILER_RT_HAS_FNO_BUILTIN_FLAG -fno-builtin BUILTIN_CFLAGS)
if(NOT ANDROID)
append_list_if(COMPILER_RT_HAS_VISIBILITY_HIDDEN_FLAG -fvisibility=hidden BUILTIN_CFLAGS)
Expand Down

0 comments on commit c96eeeb

Please sign in to comment.