build: use CMAKE_POSITION_INDEPENDENT_CODE instead of -fPIC (#21947)

It's simpler to let cmake figure out what flags to add to each platforms
to create position independent code rather than handling it ourselves.

Also remove code that sets POSITION_INDEPENDENT_CODE property on SHARED
and MODULE libraries, as it's already on by default.
This commit is contained in:
dundargoc 2023-01-22 18:02:02 +01:00 committed by GitHub
parent 151b9fc52e
commit 63e67468b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 10 additions and 27 deletions

View File

@ -9,10 +9,8 @@ if(WIN32)
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}) -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
if(NOT MSVC) -DCMAKE_POSITION_INDEPENDENT_CODE=ON)
list(APPEND LIBVTERM_CONFIGURE_COMMAND "-DCMAKE_C_FLAGS:STRING=-fPIC")
endif()
set(LIBVTERM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>) set(LIBVTERM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>)
set(LIBVTERM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) set(LIBVTERM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>)
else() else()

View File

@ -12,7 +12,8 @@ set(LUV_CMAKE_ARGS
-DWITH_SHARED_LIBUV=ON -DWITH_SHARED_LIBUV=ON
-DBUILD_SHARED_LIBS=OFF -DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DBUILD_MODULE=OFF) -DBUILD_MODULE=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON)
if(USE_BUNDLED_LUAJIT) if(USE_BUNDLED_LUAJIT)
list(APPEND LUV_CMAKE_ARGS -DWITH_LUA_ENGINE=LuaJit) list(APPEND LUV_CMAKE_ARGS -DWITH_LUA_ENGINE=LuaJit)
@ -33,16 +34,11 @@ if(USE_BUNDLED_LIBUV)
-DLIBUV_LIBRARIES=uv_a) -DLIBUV_LIBRARIES=uv_a)
endif() endif()
if(MSVC) list(APPEND LUV_CMAKE_ARGS
list(APPEND LUV_CMAKE_ARGS
"-DCMAKE_C_FLAGS:STRING=${LUV_INCLUDE_FLAGS}") "-DCMAKE_C_FLAGS:STRING=${LUV_INCLUDE_FLAGS}")
else() if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND
list(APPEND LUV_CMAKE_ARGS
"-DCMAKE_C_FLAGS:STRING=${LUV_INCLUDE_FLAGS} -fPIC")
if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND
(CMAKE_SYSTEM_NAME MATCHES ".*BSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly")) (CMAKE_SYSTEM_NAME MATCHES ".*BSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly"))
list(APPEND LUV_CMAKE_ARGS -DCMAKE_MAKE_PROGRAM=gmake) list(APPEND LUV_CMAKE_ARGS -DCMAKE_MAKE_PROGRAM=gmake)
endif()
endif() endif()
if(USE_EXISTING_SRC_DIR) if(USE_EXISTING_SRC_DIR)

View File

@ -5,13 +5,9 @@ set(MSGPACK_CMAKE_ARGS
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${BUILD_TYPE_STRING}) ${BUILD_TYPE_STRING})
if(NOT MSVC)
list(APPEND MSGPACK_CMAKE_ARGS
"-DCMAKE_C_FLAGS:STRING=-fPIC")
endif()
if(USE_EXISTING_SRC_DIR) if(USE_EXISTING_SRC_DIR)
unset(MSGPACK_URL) unset(MSGPACK_URL)
endif() endif()

View File

@ -11,7 +11,6 @@ add_library(parser
set_target_properties( set_target_properties(
parser parser
PROPERTIES PROPERTIES
POSITION_INDEPENDENT_CODE ON
OUTPUT_NAME ${PARSERLANG} OUTPUT_NAME ${PARSERLANG}
PREFIX "" PREFIX ""
) )

View File

@ -861,7 +861,6 @@ endif()
set_target_properties( set_target_properties(
libnvim libnvim
PROPERTIES PROPERTIES
POSITION_INDEPENDENT_CODE ON
OUTPUT_NAME ${LIBNVIM_NAME} OUTPUT_NAME ${LIBNVIM_NAME}
) )
target_compile_definitions(libnvim PRIVATE MAKE_LIB) target_compile_definitions(libnvim PRIVATE MAKE_LIB)
@ -885,11 +884,6 @@ else()
target_link_libraries(nvim-test PRIVATE "-framework CoreServices") target_link_libraries(nvim-test PRIVATE "-framework CoreServices")
endif() endif()
target_include_directories(nvim-test PRIVATE ${LUAJIT_INCLUDE_DIRS}) target_include_directories(nvim-test PRIVATE ${LUAJIT_INCLUDE_DIRS})
set_target_properties(
nvim-test
PROPERTIES
POSITION_INDEPENDENT_CODE ON
)
target_compile_definitions(nvim-test PRIVATE UNIT_TESTING) target_compile_definitions(nvim-test PRIVATE UNIT_TESTING)
endif() endif()