From fcdc4bf6b38dd834449fe376a2ce5471005b9125 Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Fri, 30 Dec 2016 16:41:25 +0100 Subject: [PATCH] cmake: hopefully fix relocation R_X86_64_32 errors with static builds --- CMakeLists.txt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e575da..d93906c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ ############################################################################# cmake_minimum_required(VERSION 2.8) +cmake_policy(SET CMP0018 NEW) include(CheckIncludeFiles) include(CheckFunctionExists) @@ -122,10 +123,23 @@ message(STATUS "GMIO_TARGET_ARCH_BIT_SIZE = ${GMIO_TARGET_ARCH_BIT_SIZE}") include(TestBigEndian) test_big_endian(GMIO_HOST_IS_BIG_ENDIAN) -# Adapt C compiler flags to enable strict ISO C99 conformance +# Adapt C compiler flags for GCC if(CMAKE_C_COMPILER_IS_GCC_COMPATIBLE) + # Enable strict ISO C99 conformance set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -pedantic-errors") add_definitions(-D_POSIX_SOURCE) + + # cmake < v2.8.9 does not support CMAKE_POSITION_INDEPENDENT_CODE + # For this project, gcc needs -fPIC option on x86_64 UNIX platform + if(NOT (WIN32 OR CYGWIN) + AND (CMAKE_VERSION VERSION_LESS 2.8.9) + AND (${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86") + AND (GMIO_TARGET_ARCH_BIT_SIZE EQUAL 64)) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_SHARED_LIBRARY_C_FLAGS}") + endif() + + # Force PIC + set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS}") @@ -287,9 +301,6 @@ if(CMAKE_C_COMPILER_IS_GCC_COMPATIBLE) if (NOT GMIO_GCC_DOESNT_WARN_UNIVERSAL_0_INITIALIZER) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces -Wno-missing-field-initializers") endif() - - # Force PIC for GCC - set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() # Specific flags for Clang