Explorar o código

Drop executable symbol export if platform does not support shared libs

Instead of always adding CMAKE_SHARED_LIBRARY_LINK_<LANG>_FLAGS to
executables, or just when the ENABLE_EXPORTS property is set (CMP0065),
make sure that the target platform also actually supports shared
libraries.  If not, then the executable cannot possibly provide symbols
to them anyway.
Chuck Atkins %!s(int64=10) %!d(string=hai) anos
pai
achega
e90f463a31
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      Source/cmLocalGenerator.cxx

+ 3 - 1
Source/cmLocalGenerator.cxx

@@ -1542,7 +1542,9 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries,
     this->Makefile->GetSafeDefinition("CMAKE_LIBRARY_PATH_TERMINATOR");
 
   // Flags to link an executable to shared libraries.
-  if( tgt.GetType() == cmTarget::EXECUTABLE )
+  if (tgt.GetType() == cmTarget::EXECUTABLE &&
+      this->StateSnapshot.GetState()->
+        GetGlobalPropertyAsBool("TARGET_SUPPORTS_SHARED_LIBS"))
     {
     bool add_shlib_flags = false;
     switch(tgt.Target->GetPolicyStatusCMP0065())