mirror of
https://github.com/reactos/CMake.git
synced 2025-02-24 05:53:21 +00:00
Merge topic 'position-independent-targets'
bd34963 Refactor generation of shared library flags 55d7aa4 Add platform variable for flags specific to shared libraries 31d7a0f Add platform variables for position independent code flags
This commit is contained in:
commit
c95d1baa19
@ -100,6 +100,18 @@ IF(NOT CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS)
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
|
||||
ENDIF(NOT CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS)
|
||||
|
||||
IF(NOT CMAKE_CXX_COMPILE_OPTIONS_PIC)
|
||||
SET(CMAKE_CXX_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
|
||||
ENDIF(NOT CMAKE_CXX_COMPILE_OPTIONS_PIC)
|
||||
|
||||
IF(NOT CMAKE_CXX_COMPILE_OPTIONS_PIE)
|
||||
SET(CMAKE_CXX_COMPILE_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE})
|
||||
ENDIF(NOT CMAKE_CXX_COMPILE_OPTIONS_PIE)
|
||||
|
||||
IF(NOT CMAKE_CXX_COMPILE_OPTIONS_DLL)
|
||||
SET(CMAKE_CXX_COMPILE_OPTIONS_DLL ${CMAKE_C_COMPILE_OPTIONS_DLL})
|
||||
ENDIF(NOT CMAKE_CXX_COMPILE_OPTIONS_DLL)
|
||||
|
||||
IF(NOT CMAKE_SHARED_LIBRARY_CXX_FLAGS)
|
||||
SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
|
||||
ENDIF(NOT CMAKE_SHARED_LIBRARY_CXX_FLAGS)
|
||||
|
@ -74,6 +74,18 @@ ENDIF()
|
||||
# catch any modules
|
||||
SET(CMAKE_NEEDS_REQUIRES_STEP_Fortran_FLAG 1)
|
||||
|
||||
IF(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIC)
|
||||
SET(CMAKE_Fortran_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
|
||||
ENDIF(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIC)
|
||||
|
||||
IF(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIE)
|
||||
SET(CMAKE_Fortran_COMPILE_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE})
|
||||
ENDIF(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIE)
|
||||
|
||||
IF(NOT CMAKE_Fortran_COMPILE_OPTIONS_DLL)
|
||||
SET(CMAKE_Fortran_COMPILE_OPTIONS_DLL ${CMAKE_C_COMPILE_OPTIONS_DLL})
|
||||
ENDIF(NOT CMAKE_Fortran_COMPILE_OPTIONS_DLL)
|
||||
|
||||
# Create a set of shared library variable specific to Fortran
|
||||
# For 90% of the systems, these are the same flags as the C versions
|
||||
# so if these are not set just copy the flags from the c version
|
||||
|
@ -21,6 +21,10 @@ set(__COMPILER_GNU 1)
|
||||
macro(__compiler_gnu lang)
|
||||
# Feature flags.
|
||||
set(CMAKE_${lang}_VERBOSE_FLAG "-v")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
endif()
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
|
||||
|
||||
|
@ -20,6 +20,9 @@ set(__COMPILER_SCO 1)
|
||||
|
||||
macro(__compiler_sco lang)
|
||||
# Feature flags.
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC -Kpic)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE -Kpie)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_DLL -belf)
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-Kpic -belf")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-belf -Wl,-Bexport")
|
||||
endmacro()
|
||||
|
@ -1,5 +1,7 @@
|
||||
SET(CMAKE_C_VERBOSE_FLAG "-#")
|
||||
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC -KPIC)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE -KPIE)
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-KPIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-R")
|
||||
|
@ -1,5 +1,7 @@
|
||||
SET(CMAKE_CXX_VERBOSE_FLAG "-v")
|
||||
|
||||
SET(CMAKE_CXX_COMPILE_OPTIONS_PIC -KPIC)
|
||||
SET(CMAKE_CXX_COMPILE_OPTIONS_PIE -KPIE)
|
||||
SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R")
|
||||
|
@ -1,6 +1,8 @@
|
||||
SET(BEOS 1)
|
||||
|
||||
SET(CMAKE_DL_LIBS root be)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-nostart")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
|
||||
|
@ -85,11 +85,15 @@ set(CMAKE_DL_LIBS "dl")
|
||||
macro(__BlueGeneP_set_dynamic_flags compiler_id lang)
|
||||
if (${compiler_id} STREQUAL XL)
|
||||
# Flags for XL compilers if we explicitly detected XL
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-qpic")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-qpie")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-qpic")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-qmkshrobj -qnostaticlink")
|
||||
set(BGP_${lang}_DYNAMIC_EXE_FLAGS "-qnostaticlink -qnostaticlink=libgcc")
|
||||
else()
|
||||
# Assume flags for GNU compilers (if the ID is GNU *or* anything else).
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
|
||||
set(BGP_${lang}_DYNAMIC_EXE_FLAGS "-dynamic")
|
||||
|
@ -35,7 +35,10 @@ macro(__cygwin_compiler_gnu lang)
|
||||
set(CMAKE_${lang}_LINK_EXECUTABLE
|
||||
"<CMAKE_${lang}_COMPILER> <FLAGS> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> ${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
|
||||
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "") # No -fPIC on cygwin
|
||||
# No -fPIC on cygwin
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
|
||||
|
||||
# Initialize C link type selection flags. These flags are used when
|
||||
# building a shared library, shared module, or executable that links
|
||||
|
@ -1,6 +1,8 @@
|
||||
IF(EXISTS /usr/include/dlfcn.h)
|
||||
SET(CMAKE_DL_LIBS "")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") # -shared
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,") # -rpath
|
||||
|
@ -19,6 +19,7 @@ endif()
|
||||
set(__HPUX_COMPILER_HP 1)
|
||||
|
||||
macro(__hpux_compiler_hp lang)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "+Z")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "+Z")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-Wl,-E,+nodefaultrpath -b -L/usr/lib")
|
||||
set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-Wl,+s,-E,+nodefaultrpath")
|
||||
|
@ -1,6 +1,8 @@
|
||||
SET(BEOS 1)
|
||||
|
||||
SET(CMAKE_DL_LIBS root be)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-nostart")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
|
||||
|
@ -31,6 +31,8 @@ if(NOT XIAR)
|
||||
endif(NOT XIAR)
|
||||
|
||||
macro(__linux_compiler_intel lang)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
|
||||
|
||||
|
@ -20,6 +20,8 @@ set(__LINUX_COMPILER_PGI 1)
|
||||
|
||||
macro(__linux_compiler_pgi lang)
|
||||
# Shared library compile and link flags.
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
|
||||
endmacro()
|
||||
|
@ -20,6 +20,8 @@ set(__LINUX_COMPILER_PATHSCALE 1)
|
||||
|
||||
macro(__linux_compiler_pathscale lang)
|
||||
# Shared library compile and link flags.
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
|
||||
set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
|
||||
endmacro()
|
||||
|
@ -1,6 +1,10 @@
|
||||
IF(CMAKE_SYSTEM MATCHES "MP-RAS-02*.")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC -K PIC)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE -K PIE)
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-K PIC")
|
||||
ELSE(CMAKE_SYSTEM MATCHES "MP-RAS-02*.")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC -K PIC)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE -K PIE)
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-K PIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,-Bexport")
|
||||
ENDIF(CMAKE_SYSTEM MATCHES "MP-RAS-02*.")
|
||||
|
@ -1,6 +1,8 @@
|
||||
IF(EXISTS /usr/include/dlfcn.h)
|
||||
SET(CMAKE_DL_LIBS "")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") # -shared
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,") # -rpath
|
||||
|
@ -4,7 +4,9 @@ IF(CMAKE_SYSTEM MATCHES "OSF1-1.[012]")
|
||||
ENDIF(CMAKE_SYSTEM MATCHES "OSF1-1.[012]")
|
||||
IF(CMAKE_SYSTEM MATCHES "OSF1-1.*")
|
||||
# OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fpic") # -pic
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-fpic")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-fpie")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fpic") # -pic
|
||||
SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fpic") # -pic
|
||||
ENDIF(CMAKE_SYSTEM MATCHES "OSF1-1.*")
|
||||
|
||||
|
@ -1,2 +1,4 @@
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC -K PIC)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-K PIC")
|
||||
INCLUDE(Platform/UnixPaths)
|
||||
|
@ -1,6 +1,8 @@
|
||||
IF(CMAKE_SYSTEM MATCHES "SunOS-4.*")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-PIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,-r")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-PIC")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-PIE")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-PIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,-r")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-R")
|
||||
SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
|
||||
ENDIF(CMAKE_SYSTEM MATCHES "SunOS-4.*")
|
||||
|
@ -1,3 +1,5 @@
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC -K PIC)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-K PIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,-Bexport")
|
||||
INCLUDE(Platform/UnixPaths)
|
||||
|
@ -1,3 +1,5 @@
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC -K PIC)
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-K PIC")
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-Wl,-Bexport")
|
||||
INCLUDE(Platform/UnixPaths)
|
||||
|
@ -76,7 +76,8 @@ SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_R
|
||||
|
||||
|
||||
macro(__embarcadero_language lang)
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "${_tD}")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_DLL "${_tD}") # Note: This variable is a ';' separated list
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "${_tD}") # ... while this is a space separated string.
|
||||
|
||||
# compile a source file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
|
@ -77,7 +77,11 @@ macro(__windows_compiler_gnu lang)
|
||||
endforeach(type)
|
||||
endif()
|
||||
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "") # No -fPIC on Windows
|
||||
# No -fPIC on Windows
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
|
||||
|
||||
set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS ${__WINDOWS_GNU_LD_RESPONSE})
|
||||
set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
|
||||
|
||||
|
@ -20,7 +20,8 @@ SET (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT "debug all" )
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "debug all" )
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT "debug all" )
|
||||
|
||||
set (CMAKE_SHARED_LIBRARY_C_FLAGS "-bd" )
|
||||
set(CMAKE_C_COMPILE_OPTIONS_DLL "-bd") # Note: This variable is a ';' separated list
|
||||
set(CMAKE_SHARED_LIBRARY_C_FLAGS "-bd") # ... while this is a space separated string.
|
||||
|
||||
SET(CMAKE_RC_COMPILER "rc" )
|
||||
|
||||
|
@ -10,7 +10,9 @@
|
||||
|
||||
|
||||
SET(CMAKE_DL_LIBS "dl")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
SET(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
|
||||
SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") # -pic
|
||||
SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") # -shared
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib
|
||||
SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
|
||||
|
@ -281,6 +281,10 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv)
|
||||
flag += this->Makefile->GetSafeDefinition("CMAKE_OSX_DEPLOYMENT_TARGET");
|
||||
cmakeFlags.push_back(flag);
|
||||
}
|
||||
if(this->Makefile->GetDefinition("CMAKE_POSITION_INDEPENDENT_CODE")!=0)
|
||||
{
|
||||
fprintf(fout, "SET(CMAKE_POSITION_INDEPENDENT_CODE \"ON\")\n");
|
||||
}
|
||||
|
||||
/* Use a random file name to avoid rapid creation and deletion
|
||||
of the same executable name (some filesystems fail on that). */
|
||||
|
@ -1350,6 +1350,14 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
|
||||
"See that target property for additional information.",
|
||||
false,
|
||||
"Variables that Control the Build");
|
||||
cm->DefineProperty
|
||||
("CMAKE_POSITION_INDEPENDENT_FLAGS", cmProperty::VARIABLE,
|
||||
"Default value for POSITION_INDEPENDENT_CODE of targets.",
|
||||
"This variable is used to initialize the "
|
||||
"POSITION_INDEPENDENT_CODE property on all the targets. "
|
||||
"See that target property for additional information.",
|
||||
false,
|
||||
"Variables that Control the Build");
|
||||
|
||||
// Variables defined when the a language is enabled These variables will
|
||||
// also be defined whenever CMake has loaded its support for compiling (LANG)
|
||||
|
@ -586,6 +586,16 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages,
|
||||
}
|
||||
} // end if in try compile
|
||||
} // end need test language
|
||||
// Store the shared library flags so that we can satisfy CMP0018
|
||||
std::string sharedLibFlagsVar = "CMAKE_SHARED_LIBRARY_";
|
||||
sharedLibFlagsVar += lang;
|
||||
sharedLibFlagsVar += "_FLAGS";
|
||||
const char* sharedLibFlags =
|
||||
mf->GetSafeDefinition(sharedLibFlagsVar.c_str());
|
||||
if (sharedLibFlags)
|
||||
{
|
||||
this->LanguageToOriginalSharedLibFlags[lang] = sharedLibFlags;
|
||||
}
|
||||
} // end for each language
|
||||
|
||||
// Now load files that can override any settings on the platform or for
|
||||
@ -2106,6 +2116,17 @@ cmGlobalGenerator::GenerateRuleFile(std::string const& output) const
|
||||
return ruleFile;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
std::string cmGlobalGenerator::GetSharedLibFlagsForLanguage(
|
||||
std::string const& l)
|
||||
{
|
||||
if(this->LanguageToOriginalSharedLibFlags.count(l) > 0)
|
||||
{
|
||||
return this->LanguageToOriginalSharedLibFlags[l];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmGlobalGenerator::AppendDirectoryForConfig(const char*, const char*,
|
||||
const char*, std::string&)
|
||||
|
@ -277,6 +277,8 @@ public:
|
||||
i.e. "Can I build Debug and Release in the same tree?" */
|
||||
virtual bool IsMultiConfig() { return false; }
|
||||
|
||||
std::string GetSharedLibFlagsForLanguage(std::string const& lang);
|
||||
|
||||
/** Generate an <output>.rule file path for a given command output. */
|
||||
virtual std::string GenerateRuleFile(std::string const& output) const;
|
||||
|
||||
@ -359,6 +361,7 @@ private:
|
||||
std::map<cmStdString, cmStdString> LanguageToOutputExtension;
|
||||
std::map<cmStdString, cmStdString> ExtensionToLanguage;
|
||||
std::map<cmStdString, int> LanguageToLinkerPreference;
|
||||
std::map<cmStdString, cmStdString> LanguageToOriginalSharedLibFlags;
|
||||
|
||||
// Record hashes for rules and outputs.
|
||||
struct RuleHash { char Data[32]; };
|
||||
|
@ -1594,14 +1594,14 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
|
||||
if(strcmp(lang, "CXX") == 0)
|
||||
{
|
||||
this->CurrentLocalGenerator->AddLanguageFlags(cflags, "C", configName);
|
||||
this->CurrentLocalGenerator->AddSharedFlags(cflags, lang, shared);
|
||||
this->CurrentLocalGenerator->AddCMP0018Flags(cflags, &target, "C");
|
||||
}
|
||||
|
||||
// Add language-specific flags.
|
||||
this->CurrentLocalGenerator->AddLanguageFlags(flags, lang, configName);
|
||||
|
||||
// Add shared-library flags if needed.
|
||||
this->CurrentLocalGenerator->AddSharedFlags(flags, lang, shared);
|
||||
this->CurrentLocalGenerator->AddCMP0018Flags(flags, &target, lang);
|
||||
}
|
||||
else if(binary)
|
||||
{
|
||||
|
@ -1549,12 +1549,6 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs,
|
||||
return;
|
||||
}
|
||||
this->AddLanguageFlags(flags, linkLanguage, buildType.c_str());
|
||||
std::string sharedFlagsVar = "CMAKE_SHARED_LIBRARY_";
|
||||
sharedFlagsVar += linkLanguage;
|
||||
sharedFlagsVar += "_FLAGS";
|
||||
flags += " ";
|
||||
flags += this->Makefile->GetSafeDefinition(sharedFlagsVar.c_str());
|
||||
flags += " ";
|
||||
cmOStringStream linklibs;
|
||||
this->OutputLinkLibraries(linklibs, target, false);
|
||||
linkLibs = linklibs.str();
|
||||
@ -1962,6 +1956,111 @@ void cmLocalGenerator::AddSharedFlags(std::string& flags,
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmLocalGenerator::AddCMP0018Flags(std::string &flags, cmTarget* target,
|
||||
std::string const& lang)
|
||||
{
|
||||
int targetType = target->GetType();
|
||||
|
||||
bool shared = ((targetType == cmTarget::SHARED_LIBRARY) ||
|
||||
(targetType == cmTarget::MODULE_LIBRARY));
|
||||
|
||||
if (this->GetShouldUseOldFlags(shared, lang))
|
||||
{
|
||||
this->AddSharedFlags(flags, lang.c_str(), shared);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add position independendent flags, if needed.
|
||||
if (target->GetPropertyAsBool("POSITION_INDEPENDENT_CODE"))
|
||||
{
|
||||
this->AddPositionIndependentFlags(flags, lang, targetType);
|
||||
}
|
||||
if (shared)
|
||||
{
|
||||
this->AppendFeatureOptions(flags, lang.c_str(), "DLL");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmLocalGenerator::GetShouldUseOldFlags(bool shared,
|
||||
const std::string &lang) const
|
||||
{
|
||||
std::string originalFlags =
|
||||
this->GlobalGenerator->GetSharedLibFlagsForLanguage(lang);
|
||||
if (shared)
|
||||
{
|
||||
std::string flagsVar = "CMAKE_SHARED_LIBRARY_";
|
||||
flagsVar += lang;
|
||||
flagsVar += "_FLAGS";
|
||||
const char* flags =
|
||||
this->Makefile->GetSafeDefinition(flagsVar.c_str());
|
||||
|
||||
if (flags && flags != originalFlags)
|
||||
{
|
||||
switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0018))
|
||||
{
|
||||
case cmPolicies::WARN:
|
||||
{
|
||||
cmOStringStream e;
|
||||
e << "Variable " << flagsVar << " has been modified. CMake "
|
||||
"will ignore the POSITION_INDEPENDENT_CODE target property for "
|
||||
"shared libraries and will use the " << flagsVar << " variable "
|
||||
"instead. This may cause errors if the original content of "
|
||||
<< flagsVar << " was removed.\n"
|
||||
<< this->Makefile->GetPolicies()->GetPolicyWarning(
|
||||
cmPolicies::CMP0018);
|
||||
|
||||
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, e.str());
|
||||
// fall through to OLD behaviour
|
||||
}
|
||||
case cmPolicies::OLD:
|
||||
return true;
|
||||
case cmPolicies::REQUIRED_IF_USED:
|
||||
case cmPolicies::REQUIRED_ALWAYS:
|
||||
case cmPolicies::NEW:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmLocalGenerator::AddPositionIndependentFlags(std::string& flags,
|
||||
std::string const& lang,
|
||||
int targetType)
|
||||
{
|
||||
const char* picFlags = 0;
|
||||
|
||||
if(targetType == cmTarget::EXECUTABLE)
|
||||
{
|
||||
std::string flagsVar = "CMAKE_";
|
||||
flagsVar += lang;
|
||||
flagsVar += "_COMPILE_OPTIONS_PIE";
|
||||
picFlags = this->Makefile->GetSafeDefinition(flagsVar.c_str());
|
||||
}
|
||||
if (!picFlags)
|
||||
{
|
||||
std::string flagsVar = "CMAKE_";
|
||||
flagsVar += lang;
|
||||
flagsVar += "_COMPILE_OPTIONS_PIC";
|
||||
picFlags = this->Makefile->GetSafeDefinition(flagsVar.c_str());
|
||||
}
|
||||
if (picFlags)
|
||||
{
|
||||
std::vector<std::string> options;
|
||||
cmSystemTools::ExpandListArgument(picFlags, options);
|
||||
for(std::vector<std::string>::const_iterator oi = options.begin();
|
||||
oi != options.end(); ++oi)
|
||||
{
|
||||
this->AppendFlags(flags, this->EscapeForShell(oi->c_str()).c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmLocalGenerator::AddConfigVariableFlags(std::string& flags,
|
||||
const char* var,
|
||||
|
@ -140,7 +140,8 @@ public:
|
||||
|
||||
void AddLanguageFlags(std::string& flags, const char* lang,
|
||||
const char* config);
|
||||
void AddSharedFlags(std::string& flags, const char* lang, bool shared);
|
||||
void AddCMP0018Flags(std::string &flags, cmTarget* target,
|
||||
std::string const& lang);
|
||||
void AddConfigVariableFlags(std::string& flags, const char* var,
|
||||
const char* config);
|
||||
///! Append flags to a string.
|
||||
@ -425,6 +426,11 @@ protected:
|
||||
private:
|
||||
std::string ConvertToOutputForExistingCommon(const char* remote,
|
||||
std::string const& result);
|
||||
|
||||
void AddSharedFlags(std::string& flags, const char* lang, bool shared);
|
||||
bool GetShouldUseOldFlags(bool shared, const std::string &lang) const;
|
||||
void AddPositionIndependentFlags(std::string& flags, std::string const& l,
|
||||
int targetType);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -245,9 +245,6 @@ std::string cmMakefileTargetGenerator::GetFlags(const std::string &l)
|
||||
std::string flags;
|
||||
const char *lang = l.c_str();
|
||||
|
||||
bool shared = ((this->Target->GetType() == cmTarget::SHARED_LIBRARY) ||
|
||||
(this->Target->GetType() == cmTarget::MODULE_LIBRARY));
|
||||
|
||||
// Add language feature flags.
|
||||
this->AddFeatureFlags(flags, lang);
|
||||
|
||||
@ -260,8 +257,7 @@ std::string cmMakefileTargetGenerator::GetFlags(const std::string &l)
|
||||
this->AddFortranFlags(flags);
|
||||
}
|
||||
|
||||
// Add shared-library flags if needed.
|
||||
this->LocalGenerator->AddSharedFlags(flags, lang, shared);
|
||||
this->LocalGenerator->AddCMP0018Flags(flags, this->Target, lang);
|
||||
|
||||
// Add include directory flags.
|
||||
this->AddIncludeFlags(flags, lang);
|
||||
|
@ -140,11 +140,8 @@ cmNinjaTargetGenerator::ComputeFlagsForObject(cmSourceFile *source,
|
||||
// }
|
||||
|
||||
// Add shared-library flags if needed.
|
||||
{
|
||||
bool shared = ((this->Target->GetType() == cmTarget::SHARED_LIBRARY) ||
|
||||
(this->Target->GetType() == cmTarget::MODULE_LIBRARY));
|
||||
this->GetLocalGenerator()->AddSharedFlags(flags, language.c_str(), shared);
|
||||
}
|
||||
this->LocalGenerator->AddCMP0018Flags(flags, this->Target,
|
||||
language.c_str());
|
||||
|
||||
// TODO: Handle response file.
|
||||
// Add include directory flags.
|
||||
|
@ -463,6 +463,34 @@ cmPolicies::cmPolicies()
|
||||
"The OLD behaviour is to always prefer files from CMAKE_MODULE_PATH over "
|
||||
"files from the CMake modules directory.",
|
||||
2,8,4,0, cmPolicies::WARN);
|
||||
|
||||
this->DefinePolicy(
|
||||
CMP0018, "CMP0018",
|
||||
"Ignore CMAKE_SHARED_LIBRARY_<Lang>_FLAGS variable.",
|
||||
"CMake 2.8.8 and lower compiled sources in SHARED and MODULE libraries "
|
||||
"using the value of the undocumented CMAKE_SHARED_LIBRARY_<Lang>_FLAGS "
|
||||
"platform variable. The variable contained platform-specific flags "
|
||||
"needed to compile objects for shared libraries. Typically it included "
|
||||
"a flag such as -fPIC for position independent code but also included "
|
||||
"other flags needed on certain platforms. CMake 2.8.9 and higher "
|
||||
"prefer instead to use the POSITION_INDEPENDENT_CODE target property to "
|
||||
"determine what targets should be position independent, and new "
|
||||
"undocumented platform variables to select flags while ignoring "
|
||||
"CMAKE_SHARED_LIBRARY_<Lang>_FLAGS completely."
|
||||
"\n"
|
||||
"The default for either approach produces identical compilation flags, "
|
||||
"but if a project modifies CMAKE_SHARED_LIBRARY_<Lang>_FLAGS from its "
|
||||
"original value this policy determines which approach to use."
|
||||
"\n"
|
||||
"The OLD behavior for this policy is to ignore the "
|
||||
"POSITION_INDEPENDENT_CODE property for all targets and use the modified "
|
||||
"value of CMAKE_SHARED_LIBRARY_<Lang>_FLAGS for SHARED and MODULE "
|
||||
"libraries."
|
||||
"\n"
|
||||
"The NEW behavior for this policy is to ignore "
|
||||
"CMAKE_SHARED_LIBRARY_<Lang>_FLAGS whether it is modified or not and "
|
||||
"honor the POSITION_INDEPENDENT_CODE target property.",
|
||||
2,8,9,0, cmPolicies::WARN);
|
||||
}
|
||||
|
||||
cmPolicies::~cmPolicies()
|
||||
|
@ -65,6 +65,9 @@ public:
|
||||
/// target_link_libraries() fails if only argument is not a target
|
||||
CMP0016,
|
||||
CMP0017, ///< Prefer files in CMAKE_ROOT when including from CMAKE_ROOT
|
||||
CMP0018, ///< Ignore language flags for shared libs, and adhere to
|
||||
/// POSITION_INDEPENDENT_CODE property and *_COMPILE_OPTIONS_PI{E,C}
|
||||
/// instead.
|
||||
|
||||
/** \brief Always the last entry.
|
||||
*
|
||||
|
@ -755,6 +755,14 @@ void cmTarget::DefineProperties(cmake *cm)
|
||||
"A target property that can be set to override the prefix "
|
||||
"(such as \"lib\") on a library name.");
|
||||
|
||||
cm->DefineProperty
|
||||
("POSITION_INDEPENDENT_CODE", cmProperty::TARGET,
|
||||
"Whether to create a position-independent target",
|
||||
"The POSITION_INDEPENDENT_CODE property determines whether position "
|
||||
"independent executables or shared libraries will be created. "
|
||||
"This property is true by default for SHARED and MODULE library "
|
||||
"targets and false otherwise.");
|
||||
|
||||
cm->DefineProperty
|
||||
("POST_INSTALL_SCRIPT", cmProperty::TARGET,
|
||||
"Deprecated install support.",
|
||||
@ -1305,6 +1313,13 @@ void cmTarget::SetMakefile(cmMakefile* mf)
|
||||
this->SetProperty("INCLUDE_DIRECTORIES",
|
||||
this->Makefile->GetProperty("INCLUDE_DIRECTORIES"));
|
||||
|
||||
if(this->TargetTypeValue == cmTarget::SHARED_LIBRARY
|
||||
|| this->TargetTypeValue == cmTarget::MODULE_LIBRARY)
|
||||
{
|
||||
this->SetProperty("POSITION_INDEPENDENT_CODE", "True");
|
||||
}
|
||||
this->SetPropertyDefault("POSITION_INDEPENDENT_CODE", 0);
|
||||
|
||||
// Record current policies for later use.
|
||||
this->PolicyStatusCMP0003 =
|
||||
this->Makefile->GetPolicyStatus(cmPolicies::CMP0003);
|
||||
|
@ -315,6 +315,24 @@ IF(BUILD_TESTING)
|
||||
|
||||
ADD_TEST_MACRO(Module.GenerateExportHeader GenerateExportHeader)
|
||||
|
||||
if (APPLE OR CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-fPIE run_pic_test)
|
||||
else()
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "PGI"
|
||||
OR CMAKE_CXX_COMPILER_ID MATCHES "PathScale"
|
||||
OR CMAKE_SYSTEM_NAME MATCHES "IRIX64"
|
||||
OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
set(run_pic_test 0)
|
||||
else()
|
||||
set(run_pic_test 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (run_pic_test)
|
||||
ADD_TEST_MACRO(PositionIndependentTargets PositionIndependentTargets)
|
||||
endif()
|
||||
|
||||
ADD_TEST(LinkFlags-prepare
|
||||
${CMAKE_CTEST_COMMAND} -C \${CTEST_CONFIGURATION_TYPE}
|
||||
--build-and-test
|
||||
|
13
Tests/PositionIndependentTargets/CMakeLists.txt
Normal file
13
Tests/PositionIndependentTargets/CMakeLists.txt
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
project(PositionIndependentTargets)
|
||||
|
||||
include(CheckCXXSourceCompiles)
|
||||
|
||||
include_directories("${CMAKE_CURRENT_SOURCE_DIR}") # For pic_test.h
|
||||
|
||||
add_subdirectory(global)
|
||||
add_subdirectory(targets)
|
||||
|
||||
add_executable(PositionIndependentTargets main.cpp)
|
37
Tests/PositionIndependentTargets/global/CMakeLists.txt
Normal file
37
Tests/PositionIndependentTargets/global/CMakeLists.txt
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE True)
|
||||
|
||||
add_executable(test_target_executable_global
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../pic_main.cpp"
|
||||
)
|
||||
|
||||
add_library(test_target_shared_library_global
|
||||
SHARED "${CMAKE_CURRENT_SOURCE_DIR}/../pic_lib.cpp"
|
||||
)
|
||||
set_target_properties(test_target_shared_library_global
|
||||
PROPERTIES DEFINE_SYMBOL PIC_TEST_BUILD_DLL
|
||||
)
|
||||
|
||||
add_library(test_target_static_library_global
|
||||
STATIC "${CMAKE_CURRENT_SOURCE_DIR}/../pic_lib.cpp"
|
||||
)
|
||||
set_target_properties(test_target_static_library_global
|
||||
PROPERTIES COMPILE_DEFINITIONS PIC_TEST_STATIC_BUILD
|
||||
)
|
||||
|
||||
|
||||
file(READ
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../pic_test.h"
|
||||
PIC_HEADER_CONTENT
|
||||
)
|
||||
|
||||
check_cxx_source_compiles(
|
||||
"
|
||||
${PIC_HEADER_CONTENT}
|
||||
int main(int,char**) { return 0; }\n"
|
||||
PIC_TRY_COMPILE_RESULT
|
||||
)
|
||||
|
||||
if (NOT PIC_TRY_COMPILE_RESULT)
|
||||
message(SEND_ERROR "TRY_COMPILE with content requiring __PIC__ failed. ${OUTPUT}")
|
||||
endif()
|
2
Tests/PositionIndependentTargets/main.cpp
Normal file
2
Tests/PositionIndependentTargets/main.cpp
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
int main(int,char**) { return 0; }
|
12
Tests/PositionIndependentTargets/pic_lib.cpp
Normal file
12
Tests/PositionIndependentTargets/pic_lib.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
#include "pic_test.h"
|
||||
|
||||
class PIC_TEST_EXPORT Dummy
|
||||
{
|
||||
int dummy();
|
||||
};
|
||||
|
||||
int Dummy::dummy()
|
||||
{
|
||||
return 0;
|
||||
}
|
4
Tests/PositionIndependentTargets/pic_main.cpp
Normal file
4
Tests/PositionIndependentTargets/pic_main.cpp
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
#include "pic_test.h"
|
||||
|
||||
int main(int,char**) { return 0; }
|
20
Tests/PositionIndependentTargets/pic_test.h
Normal file
20
Tests/PositionIndependentTargets/pic_test.h
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
#if defined(__ELF__)
|
||||
# if !defined(__PIC__)
|
||||
# error "The POSITION_INDEPENDENT_CODE property should cause __PIC__ to be defined on ELF platforms."
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(PIC_TEST_STATIC_BUILD)
|
||||
# define PIC_TEST_EXPORT
|
||||
#else
|
||||
# if defined(_WIN32) || defined(WIN32) /* Win32 version */
|
||||
# ifdef PIC_TEST_BUILD_DLL
|
||||
# define PIC_TEST_EXPORT __declspec(dllexport)
|
||||
# else
|
||||
# define PIC_TEST_EXPORT __declspec(dllimport)
|
||||
# endif
|
||||
# else
|
||||
# define PIC_TEST_EXPORT
|
||||
# endif
|
||||
#endif
|
20
Tests/PositionIndependentTargets/targets/CMakeLists.txt
Normal file
20
Tests/PositionIndependentTargets/targets/CMakeLists.txt
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
add_executable(test_target_executable_properties "${CMAKE_CURRENT_SOURCE_DIR}/../pic_main.cpp")
|
||||
set_target_properties(test_target_executable_properties
|
||||
PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE True
|
||||
)
|
||||
|
||||
add_library(test_target_shared_library_properties SHARED "${CMAKE_CURRENT_SOURCE_DIR}/../pic_lib.cpp")
|
||||
set_target_properties(test_target_shared_library_properties
|
||||
PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE True
|
||||
DEFINE_SYMBOL PIC_TEST_BUILD_DLL
|
||||
)
|
||||
|
||||
add_library(test_target_static_library_properties STATIC "${CMAKE_CURRENT_SOURCE_DIR}/../pic_lib.cpp")
|
||||
set_target_properties(test_target_static_library_properties
|
||||
PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE True
|
||||
COMPILE_DEFINITIONS PIC_TEST_STATIC_BUILD
|
||||
)
|
@ -30,6 +30,9 @@ CMAKE_SHARED_LIBRARY_RUNTIME_FLAG == "${CMAKE_SHARED_LIBRARY_RUNTIME_FLAG}"
|
||||
CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP == "${CMAKE_SHARED_LIBRARY_RUNTIME_FLAG_SEP}"
|
||||
CMAKE_SHARED_LIBRARY_LINK_STATIC_C_FLAGS == "${CMAKE_SHARED_LIBRARY_LINK_STATIC_C_FLAGS}"
|
||||
CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_C_FLAGS == "${CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_C_FLAGS}"
|
||||
CMAKE_C_COMPILE_OPTIONS_PIC == "${CMAKE_C_COMPILE_OPTIONS_PIC}"
|
||||
CMAKE_C_COMPILE_OPTIONS_PIE == "${CMAKE_C_COMPILE_OPTIONS_PIE}"
|
||||
CMAKE_C_COMPILE_OPTIONS_DLL == "${CMAKE_C_COMPILE_OPTIONS_DLL}"
|
||||
|
||||
// C shared module flags
|
||||
CMAKE_SHARED_MODULE_C_FLAGS == "${CMAKE_SHARED_MODULE_C_FLAGS}"
|
||||
@ -49,6 +52,9 @@ CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG == "${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLA
|
||||
CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP == "${CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP}"
|
||||
CMAKE_SHARED_LIBRARY_LINK_STATIC_CXX_FLAGS == "${CMAKE_SHARED_LIBRARY_LINK_STATIC_CXX_FLAGS}"
|
||||
CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_CXX_FLAGS == "${CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_CXX_FLAGS}"
|
||||
CMAKE_CXX_COMPILE_OPTIONS_PIC == "${CMAKE_CXX_COMPILE_OPTIONS_PIC}"
|
||||
CMAKE_CXX_COMPILE_OPTIONS_PIE == "${CMAKE_CXX_COMPILE_OPTIONS_PIE}"
|
||||
CMAKE_CXX_COMPILE_OPTIONS_DLL == "${CMAKE_CXX_COMPILE_OPTIONS_DLL}"
|
||||
|
||||
// CXX shared module flags
|
||||
CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS == "${CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user