diff options
author | Brad King <brad.king@kitware.com> | 2003-12-12 19:35:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2003-12-12 19:35:18 (GMT) |
commit | c1add9106c5a382d3e668dc2ea99ccfd7163c96e (patch) | |
tree | 9a90edcd50285f00cfc987eea75e8a34124ed119 | |
parent | 9a096e8488e13021920f68ce69c38445c0487f44 (diff) | |
download | CMake-c1add9106c5a382d3e668dc2ea99ccfd7163c96e.zip CMake-c1add9106c5a382d3e668dc2ea99ccfd7163c96e.tar.gz CMake-c1add9106c5a382d3e668dc2ea99ccfd7163c96e.tar.bz2 |
ENH: Using separate CMAKE_SHARED_LIBRARY_SONAME flags for C and CXX.
-rw-r--r-- | Modules/CMakeDefaultMakeRuleVariables.cmake | 4 | ||||
-rw-r--r-- | Modules/Platform/Linux.cmake | 3 | ||||
-rw-r--r-- | Modules/Platform/SunOS.cmake | 11 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator.cxx | 7 |
4 files changed, 15 insertions, 10 deletions
diff --git a/Modules/CMakeDefaultMakeRuleVariables.cmake b/Modules/CMakeDefaultMakeRuleVariables.cmake index 55a839a..17893f8 100644 --- a/Modules/CMakeDefaultMakeRuleVariables.cmake +++ b/Modules/CMakeDefaultMakeRuleVariables.cmake @@ -43,7 +43,7 @@ # create a shared C++ library IF(NOT CMAKE_CXX_CREATE_SHARED_LIBRARY) SET(CMAKE_CXX_CREATE_SHARED_LIBRARY - "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") + "<CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ENDIF(NOT CMAKE_CXX_CREATE_SHARED_LIBRARY) # create a c++ shared module copy the shared library rule by default @@ -54,7 +54,7 @@ ENDIF(NOT CMAKE_CXX_CREATE_SHARED_MODULE) # create a C shared library IF(NOT CMAKE_C_CREATE_SHARED_LIBRARY) SET(CMAKE_C_CREATE_SHARED_LIBRARY - "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") + "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_C_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ENDIF(NOT CMAKE_C_CREATE_SHARED_LIBRARY) # create a C shared module just copy the shared library rule diff --git a/Modules/Platform/Linux.cmake b/Modules/Platform/Linux.cmake index ec699bd..02c809e 100644 --- a/Modules/Platform/Linux.cmake +++ b/Modules/Platform/Linux.cmake @@ -7,4 +7,5 @@ SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") SET(CMAKE_SHARED_LIBRARY_LINK_FLAGS "-rdynamic") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG "-Wl,-rpath,") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP ":") -SET(CMAKE_SHARED_LIBRARY_SONAME_FLAG "-Wl,-soname,") +SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") +SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,") diff --git a/Modules/Platform/SunOS.cmake b/Modules/Platform/SunOS.cmake index 2f5edb6..ea2ecd9 100644 --- a/Modules/Platform/SunOS.cmake +++ b/Modules/Platform/SunOS.cmake @@ -3,7 +3,8 @@ IF(CMAKE_SYSTEM MATCHES "SunOS-4.*") SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,-r") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG "-Wl,-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP ":") - SET(CMAKE_SHARED_LIBRARY_SONAME_FLAG "-h") + SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h") + SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h") ENDIF(CMAKE_SYSTEM MATCHES "SunOS-4.*") IF(CMAKE_SYSTEM MATCHES "SunOS-5*.") @@ -11,7 +12,8 @@ IF(CMAKE_SYSTEM MATCHES "SunOS-5*.") SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG "-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP ":") - SET(CMAKE_SHARED_LIBRARY_SONAME_FLAG "-h") + SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h") + SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h") SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC") SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G") SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R") @@ -21,20 +23,21 @@ IF(CMAKE_SYSTEM MATCHES "SunOS-5*.") SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG "-Wl,-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP ":") - SET(CMAKE_SHARED_LIBRARY_SONAME_FLAG "-Wl,-h") + SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-h") ENDIF(CMAKE_COMPILER_IS_GNUCC) IF(CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fPIC") SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-shared") SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-Wl,-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":") + SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-h") ENDIF(CMAKE_COMPILER_IS_GNUCXX) ENDIF(CMAKE_SYSTEM MATCHES "SunOS-5*.") IF(CMAKE_COMPILER_IS_GNUCXX) IF(CMAKE_COMPILER_IS_GNUCC) SET(CMAKE_CXX_CREATE_SHARED_LIBRARY - "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") + "<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>") ELSE(CMAKE_COMPILER_IS_GNUCC) # Take default rule from CMakeDefaultMakeRuleVariables.cmake. ENDIF(CMAKE_COMPILER_IS_GNUCC) diff --git a/Source/cmLocalUnixMakefileGenerator.cxx b/Source/cmLocalUnixMakefileGenerator.cxx index d8e05ff..d656860 100644 --- a/Source/cmLocalUnixMakefileGenerator.cxx +++ b/Source/cmLocalUnixMakefileGenerator.cxx @@ -935,7 +935,8 @@ static RuleVariables ruleReplaceVars[] = {"<CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS>", "CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS"}, {"<CMAKE_SHARED_MODULE_CREATE_C_FLAGS>", "CMAKE_SHARED_MODULE_CREATE_C_FLAGS"}, - {"<CMAKE_SHARED_LIBRARY_SONAME_FLAG>", "CMAKE_SHARED_LIBRARY_SONAME_FLAG"}, + {"<CMAKE_SHARED_LIBRARY_SONAME_C_FLAG>", "CMAKE_SHARED_LIBRARY_SONAME_C_FLAG"}, + {"<CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG>", "CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG"}, {"<CMAKE_C_LINK_FLAGS>", "CMAKE_C_LINK_FLAGS"}, {"<CMAKE_AR>", "CMAKE_AR"}, @@ -1020,7 +1021,7 @@ cmLocalUnixMakefileGenerator::ExpandRuleVariables(std::string& s, } if(targetSOName) { - if(m_Makefile->GetDefinition("CMAKE_SHARED_LIBRARY_SONAME_FLAG")) + if(m_Makefile->GetDefinition("CMAKE_SHARED_LIBRARY_SONAME_C_FLAG")) { cmSystemTools::ReplaceString(s, "<TARGET_SONAME>", targetSOName); } @@ -3114,7 +3115,7 @@ void cmLocalUnixMakefileGenerator::GetLibraryNames(const char* n, const char* soversion = t.GetProperty("SOVERSION"); if((t.GetType() != cmTarget::SHARED_LIBRARY && t.GetType() != cmTarget::MODULE_LIBRARY) || - !m_Makefile->GetDefinition("CMAKE_SHARED_LIBRARY_SONAME_FLAG")) + !m_Makefile->GetDefinition("CMAKE_SHARED_LIBRARY_SONAME_C_FLAG")) { // Versioning is supported only for shared libraries and modules, // and then only when the platform supports an soname flag. |