فهرست منبع

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
6فایلهای تغییر یافته به همراه23 افزوده شده و 4 حذف شده
  1. 1 1
      Modules/CMakeGenericSystem.cmake
  2. 1 1
      Modules/Platform/BlueGeneL.cmake
  3. 1 1
      Modules/Platform/Generic.cmake
  4. 4 1
      Source/cmAddLibraryCommand.cxx
  5. 13 0
      Source/cmake.cxx
  6. 3 0
      Source/cmake.h

+ 1 - 1
Modules/CMakeGenericSystem.cmake

@@ -20,7 +20,7 @@ SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
 SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
 
 # 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
      "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 
-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_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
 
 # (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 "cmake.h"
+
 // cmLibraryCommand
 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 
     yet its linker language. */
   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 ";
     msg += args[0];

+ 13 - 0
Source/cmake.cxx

@@ -128,6 +128,7 @@ cmake::cmake()
   cmTarget::DefineProperties(this);
   cmMakefile::DefineProperties(this);
   cmTest::DefineProperties(this);
+  cmake::DefineProperties(this);
 
 #ifdef __APPLE__
   struct rlimit rlp;
@@ -2930,6 +2931,18 @@ int cmake::ExecuteLinkScript(std::vector<std::string>& args)
   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,
                            const char *ShortDescription,
                            const char *FullDescription,

+ 3 - 0
Source/cmake.h

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