PCH: PIC/PIE mismatch when using REUSE_FROM
I'm defining a dummy static library to share precompiled headers between targets, like this: ```cmake function(ADD_ARROW_PRECOMPILED_HEADER_LIB LIB_NAME HEADER) add_library(${LIB_NAME} STATIC "dummy.cc") if(ARROW_USE_PRECOMPILED_HEADERS) target_precompile_headers(${LIB_NAME} PUBLIC ${HEADER}) endif() endfunction() add_arrow_precompiled_header_lib(arrow_testing_pch "$<$<COMPILE_LANGUAGE:CXX>:arrow/testing/pch.h>") ``` Then I'm trying to reuse those headers when building an executable, like this: ```cmake add_executable(${TEST_NAME} ${SOURCES}) target_precompile_headers(${TEST_NAME} REUSE_FROM arrow_testing_pch) ``` However I'm getting the following errors: ```cmake FAILED: src/arrow/CMakeFiles/arrow-tensor-test.dir/tensor_test.cc.o /usr/bin/clang++-9 -DARROW_EXTRA_ERROR_CONTEXT -DARROW_USE_SIMD -DARROW_WITH_BROTLI -DARROW_WITH_BZ2 -DARROW_WITH_LZ4 -DARROW_WITH_SNAPPY -DARROW_WITH_TIMING_TESTS -DARROW_WITH_ZLIB -DARROW_WITH_ZSTD -DURI_STATIC_BUILD -Isrc -I../src -I../src/generated -isystem ../thirdparty/flatbuffers/include -isystem /home/antoine/miniconda3/envs/pyarrow/include -isystem ../thirdparty/hadoop/include -Qunused-arguments -fcolor-diagnostics -fuse-ld=gold -ggdb -O0 -Wall -Wextra -Wdocumentation -Wno-missing-braces -Wno-unused-parameter -Wno-unknown-warning-option -Wno-constant-logical-operand -Werror -Wno-unknown-warning-option -msse4.2 -maltivec -D_GLIBCXX_USE_CXX11_ABI=1 -D_GLIBCXX_USE_CXX11_ABI=1 -g -fPIE -pthread -std=gnu++11 -Xclang -include-pch -Xclang /home/antoine/arrow/dev/cpp/build-pch/src/arrow/CMakeFiles/arrow_testing_pch.dir/cmake_pch.hxx.pch -MD -MT src/arrow/CMakeFiles/arrow-tensor-test.dir/tensor_test.cc.o -MF src/arrow/CMakeFiles/arrow-tensor-test.dir/tensor_test.cc.o.d -o src/arrow/CMakeFiles/arrow-tensor-test.dir/tensor_test.cc.o -c ../src/arrow/tensor_test.cc error: is pie differs in PCH file vs. current file ``` If I try to disable PIC on the executable: ```cmake set_property(TARGET ${TEST_NAME} PROPERTY POSITION_INDEPENDENT_CODE 0) ``` Then I get another similar error: ```cmake FAILED: src/arrow/CMakeFiles/arrow-sparse-tensor-test.dir/sparse_tensor_test.cc.o /usr/bin/clang++-9 -DARROW_EXTRA_ERROR_CONTEXT -DARROW_USE_SIMD -DARROW_WITH_BROTLI -DARROW_WITH_BZ2 -DARROW_WITH_LZ4 -DARROW_WITH_SNAPPY -DARROW_WITH_TIMING_TESTS -DARROW_WITH_ZLIB -DARROW_WITH_ZSTD -DURI_STATIC_BUILD -Isrc -I../src -I../src/generated -isystem ../thirdparty/flatbuffers/include -isystem /home/antoine/miniconda3/envs/pyarrow/include -isystem ../thirdparty/hadoop/include -Qunused-arguments -fcolor-diagnostics -fuse-ld=gold -ggdb -O0 -Wall -Wextra -Wdocumentation -Wno-missing-braces -Wno-unused-parameter -Wno-unknown-warning-option -Wno-constant-logical-operand -Werror -Wno-unknown-warning-option -msse4.2 -maltivec -D_GLIBCXX_USE_CXX11_ABI=1 -D_GLIBCXX_USE_CXX11_ABI=1 -g -pthread -std=gnu++11 -Xclang -include-pch -Xclang /home/antoine/arrow/dev/cpp/build-pch/src/arrow/CMakeFiles/arrow_testing_pch.dir/cmake_pch.hxx.pch -MD -MT src/arrow/CMakeFiles/arrow-sparse-tensor-test.dir/sparse_tensor_test.cc.o -MF src/arrow/CMakeFiles/arrow-sparse-tensor-test.dir/sparse_tensor_test.cc.o.d -o src/arrow/CMakeFiles/arrow-sparse-tensor-test.dir/sparse_tensor_test.cc.o -c ../src/arrow/sparse_tensor_test.cc error: __PIC__ level differs in PCH file vs. current file ```
issue