cmake: pass -fno-PIC in building static libgo
LLVM builds may default to PIC, and it may pass -fPIC implicitly
to C compilations, including the C code in libgo. We pass
-fno-PIC to cancel this. This can be overridden by
GOLLVM_EXTRA_CFLAGS, in case we want a PIC static libgo.
Change-Id: I0e8ac1eb70ddd3d503096c4b672397673c1ffc73
Reviewed-on: https://go-review.googlesource.com/c/gollvm/+/186920
Reviewed-by: Than McIntosh <thanm@google.com>
diff --git a/cmake/modules/LibbacktraceUtils.cmake b/cmake/modules/LibbacktraceUtils.cmake
index d5fa7e9..1581cbf 100644
--- a/cmake/modules/LibbacktraceUtils.cmake
+++ b/cmake/modules/LibbacktraceUtils.cmake
@@ -75,17 +75,16 @@
add_library(libbacktrace_nonpiclib
OBJECT EXCLUDE_FROM_ALL ${libbacktracecfiles})
set_target_properties(libbacktrace_nonpiclib
- PROPERTIES COMPILE_FLAGS "${libbacktraceflags}")
+ PROPERTIES COMPILE_FLAGS "-fno-PIC ${libbacktraceflags}")
target_include_directories(libbacktrace_nonpiclib
BEFORE PRIVATE "${libgo_binroot}/libbacktrace")
# pic
- string(APPEND libbacktraceflags " -fPIC")
add_library(libbacktrace_piclib
OBJECT EXCLUDE_FROM_ALL ${libbacktracecfiles})
target_include_directories(libbacktrace_piclib
BEFORE PRIVATE "${libgo_binroot}/libbacktrace")
set_target_properties(libbacktrace_piclib
- PROPERTIES COMPILE_FLAGS "${libbacktraceflags}")
+ PROPERTIES COMPILE_FLAGS "-fPIC ${libbacktraceflags}")
endfunction()
diff --git a/cmake/modules/LibffiUtils.cmake b/cmake/modules/LibffiUtils.cmake
index e96f931..8f5bfeb 100644
--- a/cmake/modules/LibffiUtils.cmake
+++ b/cmake/modules/LibffiUtils.cmake
@@ -82,12 +82,11 @@
# Create libffi object libraries
add_library(libffi_nonpiclib OBJECT EXCLUDE_FROM_ALL ${c_srcs} ${asm_srcs})
- set_target_properties(libffi_nonpiclib PROPERTIES COMPILE_FLAGS "${libffiflags}")
+ set_target_properties(libffi_nonpiclib PROPERTIES COMPILE_FLAGS "-fno-PIC ${libffiflags}")
target_include_directories(libffi_nonpiclib PUBLIC "${libffi_srcroot}/include")
- string(APPEND libffiflags " -fPIC")
add_library(libffi_piclib OBJECT EXCLUDE_FROM_ALL ${c_srcs} ${asm_srcs})
- set_target_properties(libffi_piclib PROPERTIES COMPILE_FLAGS "${libffiflags}")
+ set_target_properties(libffi_piclib PROPERTIES COMPILE_FLAGS "-fPIC ${libffiflags}")
target_include_directories(libffi_piclib PUBLIC "${libffi_srcroot}/include")
endfunction()
diff --git a/libgo/CMakeLists.txt b/libgo/CMakeLists.txt
index 1bdd7d6..3db46ee 100644
--- a/libgo/CMakeLists.txt
+++ b/libgo/CMakeLists.txt
@@ -477,7 +477,7 @@
# Library with non-PIC-compiled objects from libgo C code
add_library(libgo_c_nonpiclib OBJECT EXCLUDE_FROM_ALL ${runtimecpaths})
-set_target_properties(libgo_c_nonpiclib PROPERTIES COMPILE_FLAGS "${baseopts}")
+set_target_properties(libgo_c_nonpiclib PROPERTIES COMPILE_FLAGS "-fno-PIC ${baseopts}")
target_include_directories(libgo_c_nonpiclib PUBLIC
"${libgo_csrcroot}/runtime"
"${libgo_binroot}/runtime"