1. 27 Jun, 2012 1 commit
  2. 12 Jun, 2012 1 commit
    • Stephen Kelly's avatar
      Refactor generation of shared library flags · bd349630
      Stephen Kelly authored
      CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a
      variety of purposes that are correlated with shared libraries but not
      exclusive to them.  Refactor generation of these flags to use new
      purpose-specific platform variables
      
        CMAKE_<lang>_COMPILE_OPTIONS_DLL
        CMAKE_<lang>_COMPILE_OPTIONS_PIC
        CMAKE_<lang>_COMPILE_OPTIONS_PIE
      
      Activate the DLL flags specifically for shared libraries.  Add a new
      POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and
      default to true for shared libraries to preserve default behavior.
      Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to
      allow easy global configuration in projects.
      
      Although the default behavior is unchanged by this refactoring, the new
      approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely.  We must
      leave it set in case projects reference the value.  Furthermore, if a
      project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new
      value to be used.  Add policy CMP0018 to handle compatibility with
      projects that modify this platform variable.
      
      Add a PositionIndependentCode test on platforms where we can get
      meaningful results.
      bd349630