From 2c5e0b8b981dc9d1ea575037b9befa8c3b6102b8 Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Sun, 9 Jan 2011 14:34:39 +0000 Subject: [PATCH] Rewrite handling of LLVM_ENABLE_PIC. It was being processed after config.h was generated, so it had no effect on it. Thanks to arrowdodger for pointing out this and a tentative patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123119 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 32 ++++++++++++++++-------------- cmake/config-ix.cmake | 7 ++----- include/llvm/Config/config.h.cmake | 2 +- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e27c6f82e4..7daaa82eef4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,27 +195,29 @@ else(WIN32) endif(UNIX) endif(WIN32) -include(config-ix) - option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON) -set(ENABLE_PIC 0) if( LLVM_ENABLE_PIC ) - if( XCODE ) - # Xcode has -mdynamic-no-pic on by default, which overrides -fPIC. I don't - # know how to disable this, so just force ENABLE_PIC off for now. - message(STATUS "Warning: -fPIC not supported with Xcode.") - else( XCODE ) - if( SUPPORTS_FPIC_FLAG ) + if( XCODE ) + # Xcode has -mdynamic-no-pic on by default, which overrides -fPIC. I don't + # know how to disable this, so just force ENABLE_PIC off for now. + message(WARNING "-fPIC not supported with Xcode.") + elseif( WIN32 ) + # On Windows all code is PIC. MinGW warns if -fPIC is used. + else() + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag("-fPIC" SUPPORTS_FPIC_FLAG) + if( SUPPORTS_FPIC_FLAG ) message(STATUS "Building with -fPIC") - add_llvm_definitions(-fPIC) - set(ENABLE_PIC 1) - else( SUPPORTS_FPIC_FLAG ) - message(STATUS "Warning: -fPIC not supported.") - endif() - endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + else( SUPPORTS_FPIC_FLAG ) + message(WARNING "-fPIC not supported.") + endif() + endif() endif() +include(config-ix) + set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} ) set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib ) set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib ) diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index 27f2964038b..f0e11767e34 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -162,12 +162,9 @@ llvm_find_program(dotty) # Define LLVM_MULTITHREADED if gcc atomic builtins exists. include(CheckAtomic) +set(ENABLE_PIC ${LLVM_ENABLE_PIC}) + include(CheckCXXCompilerFlag) -# On windows all code is position-independent and mingw warns if -fPIC -# is in the command-line. -if( NOT WIN32 ) - check_cxx_compiler_flag("-fPIC" SUPPORTS_FPIC_FLAG) -endif() check_cxx_compiler_flag("-Wno-variadic-macros" SUPPORTS_NO_VARIADIC_MACROS_FLAG) diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake index 4ebae94944e..255816ac230 100644 --- a/include/llvm/Config/config.h.cmake +++ b/include/llvm/Config/config.h.cmake @@ -31,7 +31,7 @@ #define CXX_INCLUDE_64BIT_DIR "${CXX_INCLUDE_64BIT_DIR}" /* Define if position independent code is enabled */ -#cmakedefine ENABLE_PIC ${ENABLE_PIC} +#cmakedefine ENABLE_PIC /* Define if threads enabled */ #cmakedefine ENABLE_THREADS ${ENABLE_THREADS}