瀏覽代碼

STYLE: change global cmake variable CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS
to the first global cmake property TARGET_SUPPORTS_SHARED_LIBS

Alex

Alexander Neundorf 18 年之前
父節點
當前提交
f8261ff9f7

+ 1 - 1
Modules/CMakeGenericSystem.cmake

@@ -20,7 +20,7 @@ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
 SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
 SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
 
 
 # basically all general purpose OSs support shared libs
 # basically all general purpose OSs support shared libs
-SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS FALSE)
+SET_PROPERTIES(GLOBAL PROPERTIES TARGET_SUPPORTS_SHARED_LIBS TRUE)
 
 
 SET (CMAKE_SKIP_RPATH "NO" CACHE BOOL
 SET (CMAKE_SKIP_RPATH "NO" CACHE BOOL
      "If set, runtime paths are not added when using shared libraries.")
      "If set, runtime paths are not added when using shared libraries.")

+ 1 - 1
Modules/Platform/BlueGeneL.cmake

@@ -1,5 +1,5 @@
 #the compute nodes on BlueGene/L don't support shared libs 
 #the compute nodes on BlueGene/L don't support shared libs 
-SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS TRUE)
+SET_PROPERTIES(GLOBAL PROPERTIES TARGET_SUPPORTS_SHARED_LIBS FALSE)
 
 
 SET(CMAKE_SHARED_LIBRARY_C_FLAGS "")            # -pic 
 SET(CMAKE_SHARED_LIBRARY_C_FLAGS "")            # -pic 
 SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "")       # -shared
 SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "")       # -shared

+ 1 - 1
Modules/Platform/Generic.cmake

@@ -8,5 +8,5 @@
 # and/or ${CMAKE_SYSTEM_NAME}-<compiler_basename>-${CMAKE_SYSTEM_PROCESSOR}.cmake
 # and/or ${CMAKE_SYSTEM_NAME}-<compiler_basename>-${CMAKE_SYSTEM_PROCESSOR}.cmake
 
 
 # (embedded) targets without operating system usually don't support shared libraries
 # (embedded) targets without operating system usually don't support shared libraries
-SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS TRUE)
+SET_PROPERTIES(GLOBAL PROPERTIES TARGET_SUPPORTS_SHARED_LIBS FALSE)
 
 

+ 4 - 1
Source/cmAddLibraryCommand.cxx

@@ -16,6 +16,8 @@
 =========================================================================*/
 =========================================================================*/
 #include "cmAddLibraryCommand.h"
 #include "cmAddLibraryCommand.h"
 
 
+#include "cmake.h"
+
 // cmLibraryCommand
 // cmLibraryCommand
 bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
 bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
 {
 {
@@ -82,7 +84,8 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
     STATIC. But at this point we know only the name of the target, but not 
     STATIC. But at this point we know only the name of the target, but not 
     yet its linker language. */
     yet its linker language. */
   if ((type != cmTarget::STATIC_LIBRARY) && 
   if ((type != cmTarget::STATIC_LIBRARY) && 
-       (this->Makefile->IsOn("CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS")))
+       (this->Makefile->GetCMakeInstance()->GetPropertyAsBool(
+                                      "TARGET_SUPPORTS_SHARED_LIBS") == false))
     {
     {
     std::string msg = "ADD_LIBRARY for library ";
     std::string msg = "ADD_LIBRARY for library ";
     msg += args[0];
     msg += args[0];

+ 13 - 0
Source/cmake.cxx

@@ -128,6 +128,7 @@ cmake::cmake()
   cmTarget::DefineProperties(this);
   cmTarget::DefineProperties(this);
   cmMakefile::DefineProperties(this);
   cmMakefile::DefineProperties(this);
   cmTest::DefineProperties(this);
   cmTest::DefineProperties(this);
+  cmake::DefineProperties(this);
 
 
 #ifdef __APPLE__
 #ifdef __APPLE__
   struct rlimit rlp;
   struct rlimit rlp;
@@ -2930,6 +2931,18 @@ int cmake::ExecuteLinkScript(std::vector<std::string>& args)
   return result;
   return result;
 }
 }
 
 
+void cmake::DefineProperties(cmake *cm)
+{
+  cm->DefineProperty
+    ("TARGET_SUPPORTS_SHARED_LIBS", cmProperty::GLOBAL, 
+     "Does the target platform support shared libraries.",
+     "TARGET_SUPPORTS_SHARED_LIBS is a boolean specifying whether the target "
+     "platform supports shared libraries. Basically all current general "
+     "general purpose OS do so, the exception are usually embedded systems "
+     "with no or special OSs.");
+}
+
+
 void cmake::DefineProperty(const char *name, cmProperty::ScopeType scope,
 void cmake::DefineProperty(const char *name, cmProperty::ScopeType scope,
                            const char *ShortDescription,
                            const char *ShortDescription,
                            const char *FullDescription,
                            const char *FullDescription,

+ 3 - 0
Source/cmake.h

@@ -312,6 +312,9 @@ class cmake
   bool IsPropertyDefined(const char *name, cmProperty::ScopeType scope);
   bool IsPropertyDefined(const char *name, cmProperty::ScopeType scope);
   bool IsPropertyChained(const char *name, cmProperty::ScopeType scope);
   bool IsPropertyChained(const char *name, cmProperty::ScopeType scope);
 
 
+  // Define the properties
+  static void DefineProperties(cmake *cm);
+
 protected:
 protected:
   cmPropertyMap Properties;
   cmPropertyMap Properties;