From 8acda7d04de1515debf6a638aad6cead3fc20d4e Mon Sep 17 00:00:00 2001 From: Chris Burel Date: Mon, 14 Feb 2022 16:23:27 -0800 Subject: [PATCH] Prefer CMake's built-in `-fPIC` and `-fpie` support CMake has a built-in property, `POSITION_INDEPENDENT_CODE`, that determines if code will be built with `-fPIC`. This property is `True` by default for `SHARED` and `MODULE` library targets and `False` otherwise. Previously, we were always passing the `-fPIC` flag manually. With this change, we set the appropriate CMake variable that will enable the property for all compile jobs. Furthermore, with CMake policy CMP0083 set to "new" (which happens by default when the `cmake_minimum_required` version is >=3.14), CMake has built-in support for passing the `-fpie` flag when building executables. It uses the same property, `POSITION_INDEPENDENT_CODE`, so setting this property (and enabling it with the CMake `CheckPIESupported` module) allows us to use CMake's built-in support for these flags. Signed-off-by: Chris Burel --- cmake/Platform/Common/Clang/Configurations_clang.cmake | 2 -- cmake/Platform/Common/Configurations_common.cmake | 5 +++++ cmake/Platform/Linux/Configurations_linux.cmake | 2 -- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cmake/Platform/Common/Clang/Configurations_clang.cmake b/cmake/Platform/Common/Clang/Configurations_clang.cmake index fee81f7132..88789ad0d2 100644 --- a/cmake/Platform/Common/Clang/Configurations_clang.cmake +++ b/cmake/Platform/Common/Clang/Configurations_clang.cmake @@ -20,8 +20,6 @@ ly_append_configurations_options( -Wall -Werror - -fpie # Position-Independent Executables - ################### # Disabled warnings (please do not disable any others without first consulting sig-build) ################### diff --git a/cmake/Platform/Common/Configurations_common.cmake b/cmake/Platform/Common/Configurations_common.cmake index d16dfa3eea..c2ba5477e7 100644 --- a/cmake/Platform/Common/Configurations_common.cmake +++ b/cmake/Platform/Common/Configurations_common.cmake @@ -62,3 +62,8 @@ if(CMAKE_GENERATOR MATCHES "Ninja") ly_set(CMAKE_JOB_POOL_LINK link_job_pool) endif() endif() + +set(CMAKE_POSITION_INDEPENDENT_CODE True) + +include(CheckPIESupported) +check_pie_supported() diff --git a/cmake/Platform/Linux/Configurations_linux.cmake b/cmake/Platform/Linux/Configurations_linux.cmake index 3c3ea5bf62..37ef2f8fc3 100644 --- a/cmake/Platform/Linux/Configurations_linux.cmake +++ b/cmake/Platform/Linux/Configurations_linux.cmake @@ -16,7 +16,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") __linux__ LINUX64 COMPILATION - -fPIC -msse4.1 LINK_NON_STATIC -Wl,-undefined,error @@ -47,7 +46,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") __linux__ LINUX64 COMPILATION - -fPIC -msse4.1 LINK_NON_STATIC ${LY_GCC_GCOV_LFLAGS}