Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
88bd3b52
Commit
88bd3b52
authored
Mar 14, 2006
by
Bill Hoffman
Browse files
ENH: add support for removing language flags from shared library and shared module link commands
parent
8e702ac5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Modules/Platform/Darwin.cmake
View file @
88bd3b52
...
...
@@ -24,6 +24,8 @@ IF(NOT XCODE)
SET
(
CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG
"-install_name"
)
ENDIF
(
NOT XCODE
)
SET
(
CMAKE_C_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS -w
)
SET
(
CMAKE_CXX_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS -w
)
SET
(
CMAKE_C_CREATE_SHARED_LIBRARY
"<CMAKE_C_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> <LINK_FLAGS> -o <TARGET> -install_name <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>"
)
SET
(
CMAKE_CXX_CREATE_SHARED_LIBRARY
...
...
Source/cmMakefileLibraryTargetGenerator.cxx
View file @
88bd3b52
...
...
@@ -246,16 +246,23 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
// Add the link message.
std
::
string
buildEcho
=
"Linking "
;
buildEcho
+=
linkLanguage
;
const
char
*
forbiddenFlagVar
=
0
;
switch
(
this
->
Target
->
GetType
())
{
case
cmTarget
::
STATIC_LIBRARY
:
buildEcho
+=
" static library "
;
break
;
buildEcho
+=
" static library "
;
break
;
case
cmTarget
::
SHARED_LIBRARY
:
buildEcho
+=
" shared library "
;
break
;
forbiddenFlagVar
=
"_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS"
;
buildEcho
+=
" shared library "
;
break
;
case
cmTarget
::
MODULE_LIBRARY
:
buildEcho
+=
" shared module "
;
break
;
forbiddenFlagVar
=
"_CREATE_SHARED_MODULE_FORBIDDEN_FLAGS"
;
buildEcho
+=
" shared module "
;
break
;
default:
buildEcho
+=
" library "
;
break
;
buildEcho
+=
" library "
;
break
;
}
buildEcho
+=
targetOutPath
.
c_str
();
this
->
LocalGenerator
->
AppendEcho
(
commands
,
buildEcho
.
c_str
());
...
...
@@ -436,6 +443,13 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
this
->
LocalGenerator
->
AddLanguageFlags
(
langFlags
,
linkLanguage
,
this
->
LocalGenerator
->
m_ConfigurationName
.
c_str
());
// remove any language flags that might not work with the
// particular os
if
(
forbiddenFlagVar
)
{
this
->
RemoveForbiddenFlags
(
forbiddenFlagVar
,
linkLanguage
,
langFlags
);
}
vars
.
LanguageCompileFlags
=
langFlags
.
c_str
();
// Expand placeholders in the commands.
this
->
LocalGenerator
->
m_TargetImplib
=
targetOutPathImport
;
...
...
Source/cmMakefileTargetGenerator.cxx
View file @
88bd3b52
...
...
@@ -799,3 +799,25 @@ void cmMakefileTargetGenerator
delete
this
->
InfoFileStream
;
delete
this
->
FlagFileStream
;
}
void
cmMakefileTargetGenerator
::
RemoveForbiddenFlags
(
const
char
*
flagVar
,
const
char
*
linkLang
,
std
::
string
&
linkFlags
)
{
// check for language flags that are not allowed at link time, and
// remove them, -w on darwin for gcc -w -dynamiclib sends -w to libtool
// which fails, there may be more]
std
::
string
removeFlags
=
"CMAKE_"
;
removeFlags
+=
linkLang
;
removeFlags
+=
flagVar
;
std
::
string
removeflags
=
this
->
Makefile
->
GetSafeDefinition
(
removeFlags
.
c_str
());
std
::
vector
<
std
::
string
>
removeList
;
cmSystemTools
::
ExpandListArgument
(
removeflags
,
removeList
);
for
(
std
::
vector
<
std
::
string
>::
iterator
i
=
removeList
.
begin
();
i
!=
removeList
.
end
();
++
i
)
{
cmSystemTools
::
ReplaceString
(
linkFlags
,
i
->
c_str
(),
""
);
}
}
Source/cmMakefileTargetGenerator.h
View file @
88bd3b52
...
...
@@ -99,7 +99,8 @@ protected:
void
AppendTargetDepends
(
std
::
vector
<
std
::
string
>&
depends
);
virtual
void
CloseFileStreams
();
void
RemoveForbiddenFlags
(
const
char
*
flagVar
,
const
char
*
linkLang
,
std
::
string
&
linkFlags
);
cmStdString
TargetName
;
cmTarget
*
Target
;
cmLocalUnixMakefileGenerator3
*
LocalGenerator
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment