ENH: print a warning if ADD_LIBRARY( SHARED/MODULE ) is used and the target
platform doesn't support shared libraries Alex
This commit is contained in:
parent
7f1fbe4e4c
commit
1383368628
|
@ -19,6 +19,9 @@ SET(CMAKE_DL_LIBS "dl")
|
||||||
SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
|
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
|
||||||
|
SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS FALSE)
|
||||||
|
|
||||||
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.")
|
||||||
|
|
||||||
|
|
|
@ -6,3 +6,7 @@
|
||||||
# about the platform. So everything has to be specified
|
# about the platform. So everything has to be specified
|
||||||
# in the system/compiler files ${CMAKE_SYSTEM_NAME}-<compiler_basename>.cmake
|
# in the system/compiler files ${CMAKE_SYSTEM_NAME}-<compiler_basename>.cmake
|
||||||
# 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
|
||||||
|
SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS TRUE)
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,22 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
|
||||||
cmSystemTools::Message(msg.c_str() ,"Warning");
|
cmSystemTools::Message(msg.c_str() ,"Warning");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ideally we should check whether for the linker language of the target
|
||||||
|
CMAKE_${LANG}_CREATE_SHARED_LIBRARY is defined and if not default to
|
||||||
|
STATIC. But at this point we know only the name of the target, but not
|
||||||
|
yet its linker language. */
|
||||||
|
if ((shared != 0) &&
|
||||||
|
(this->Makefile->IsOn("CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS")))
|
||||||
|
{
|
||||||
|
std::string msg = "ADD_LIBRARY for library ";
|
||||||
|
msg += args[0];
|
||||||
|
msg += " is used with the SHARED or MODULE option, but the target "
|
||||||
|
"platform supports only STATIC libraries. Building it STATIC instead. "
|
||||||
|
"This may lead to problems.";
|
||||||
|
cmSystemTools::Message(msg.c_str() ,"Warning");
|
||||||
|
shared = 0;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<std::string> srclists;
|
std::vector<std::string> srclists;
|
||||||
while (s != args.end())
|
while (s != args.end())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue