Simplify handling of <library-file> feature.
* common.jam (resolve-library-files): Remove * msvc.jam, cw.jam: Add 'flags' invocation for library-file feature. [SVN r31918]
This commit is contained in:
parent
13d6eaa4dd
commit
e8b3e6c725
@ -447,34 +447,6 @@ rule prepend-path-variable-command ( variable : paths * )
|
||||
}
|
||||
|
||||
|
||||
# Returns the list of libraries from the <library> property
|
||||
# in their actualized form.
|
||||
rule resolve-library-files ( properties * )
|
||||
{
|
||||
local libraries ;
|
||||
|
||||
for local p in $(properties)
|
||||
{
|
||||
if $(p:G) = <library-file> &&
|
||||
! [ type.is-derived [ $(p:G=).type ] SHARED_LIB ]
|
||||
{
|
||||
libraries += $(p:G=) ;
|
||||
}
|
||||
}
|
||||
|
||||
# Get real jam targets
|
||||
|
||||
local xlibraries ;
|
||||
|
||||
for local l in $(libraries)
|
||||
{
|
||||
xlibraries += [ $(l).actualize ] ;
|
||||
}
|
||||
|
||||
return $(xlibraries) ;
|
||||
}
|
||||
|
||||
|
||||
# Return a command which can create a file. If 'r' is result of invocation,
|
||||
# then
|
||||
# r foobar
|
||||
|
@ -177,53 +177,40 @@ flags cw.link LINKPATH <library-path> ;
|
||||
flags cw.link FINDLIBS_ST <find-static-library> ;
|
||||
flags cw.link FINDLIBS_SA <find-shared-library> ;
|
||||
flags cw.link LIBRARY_OPTION <toolset>cw : "" : unchecked ;
|
||||
|
||||
rule archive ( targets + : sources * : properties * )
|
||||
{
|
||||
flags cw.link LIBRARIES
|
||||
[ common.resolve-library-files properties ] ;
|
||||
}
|
||||
|
||||
rule link ( targets + : sources * : properties * )
|
||||
{
|
||||
flags cw.link LIBRARIES
|
||||
[ common.resolve-library-files properties ] ;
|
||||
}
|
||||
flags cw.link LIBRARIES_MENTIONED_BY_FILE : <library-file> ;
|
||||
|
||||
rule link.dll ( targets + : sources * : properties * )
|
||||
{
|
||||
flags cw.link LIBRARIES
|
||||
[ common.resolve-library-files properties ] ;
|
||||
DEPENDS $(<) : [ on $(<) return $(DEF_FILE) ] ;
|
||||
}
|
||||
|
||||
if [ os.name ] in NT
|
||||
{
|
||||
actions archive bind
|
||||
actions archive
|
||||
{
|
||||
if exist "$(<[1])" DEL "$(<[1])"
|
||||
$(.LD) -library -o "$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) -library -o "$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
}
|
||||
}
|
||||
else # cygwin
|
||||
{
|
||||
actions archive bind
|
||||
actions archive
|
||||
{
|
||||
_bbv2_out_="$(<)"
|
||||
if test -f "$_bbv2_out_" ; then
|
||||
_bbv2_existing_="$(<:W)"
|
||||
fi
|
||||
$(.LD) -library -o "$(<:W)" $_bbv2_existing_ @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) -library -o "$(<:W)" $_bbv2_existing_ @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
}
|
||||
}
|
||||
|
||||
actions link bind DEF_FILE
|
||||
{
|
||||
$(.LD) -o "$(<[1]:W)" -L"$(LINKPATH)" $(LINKFLAGS) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) -o "$(<[1]:W)" -L"$(LINKPATH)" $(LINKFLAGS) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
}
|
||||
|
||||
actions link.dll bind DEF_FILE
|
||||
{
|
||||
$(.LD) -o "$(<[1]:W)" -implib "$(<[2]:W)" -L"$(LINKPATH)" $(LINKFLAGS) -f "$(DEF_FILE)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) -o "$(<[1]:W)" -implib "$(<[2]:W)" -L"$(LINKPATH)" $(LINKFLAGS) -f "$(DEF_FILE)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
}
|
||||
|
||||
|
@ -560,12 +560,12 @@ flags msvc.compile UNDEFS <undef> ;
|
||||
flags msvc.compile INCLUDES <include> ;
|
||||
|
||||
# The actions differ only by explicit selection of input language
|
||||
actions compile.c bind
|
||||
actions compile.c
|
||||
{
|
||||
$(.CC) /Zm800 -nologo -TC -U$(UNDEFS) $(CFLAGS) $(USER_CFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)"
|
||||
}
|
||||
|
||||
actions compile.c++ bind
|
||||
actions compile.c++
|
||||
{
|
||||
$(.CC) /Zm800 -nologo -TP -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(USER_CFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)"
|
||||
}
|
||||
@ -624,24 +624,11 @@ flags msvc.link LINKPATH <library-path> ;
|
||||
flags msvc.link FINDLIBS_ST <find-static-library> ;
|
||||
flags msvc.link FINDLIBS_SA <find-shared-library> ;
|
||||
flags msvc.link LIBRARY_OPTION <toolset>msvc : "" : unchecked ;
|
||||
flags msvc.link LIBRARIES_MENTIONED_BY_FILE : <library-file> ;
|
||||
|
||||
|
||||
rule archive ( targets + : sources * : properties * )
|
||||
{
|
||||
flags msvc.link LIBRARIES
|
||||
[ common.resolve-library-files properties ] ;
|
||||
}
|
||||
|
||||
rule link ( targets + : sources * : properties * )
|
||||
{
|
||||
flags msvc.link LIBRARIES
|
||||
[ common.resolve-library-files properties ] ;
|
||||
}
|
||||
|
||||
rule link.dll ( targets + : sources * : properties * )
|
||||
{
|
||||
flags msvc.link LIBRARIES
|
||||
[ common.resolve-library-files properties ] ;
|
||||
DEPENDS $(<) : [ on $(<) return $(DEF_FILE) ] ;
|
||||
}
|
||||
|
||||
@ -653,18 +640,18 @@ if [ os.name ] in NT
|
||||
{
|
||||
# The 'DEL' command would issue a message to stdout
|
||||
# if the file does not exist, so need a check.
|
||||
actions archive bind
|
||||
actions archive
|
||||
{
|
||||
if exist "$(<[1])" DEL "$(<[1])"
|
||||
$(.LD) /lib /NOLOGO /out:"$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) /lib /NOLOGO /out:"$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
actions archive bind
|
||||
actions archive
|
||||
{
|
||||
$(RM) "$(<[1])"
|
||||
$(.LD) /lib /NOLOGO /out:"$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) /lib /NOLOGO /out:"$(<[1])" @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
}
|
||||
}
|
||||
|
||||
@ -682,13 +669,13 @@ else
|
||||
|
||||
actions link bind DEF_FILE
|
||||
{
|
||||
$(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(MANIFEST)$(<[1]).manifest $(OUTPUTRESOURCE)$(<[1]);1
|
||||
}
|
||||
|
||||
actions link.dll bind DEF_FILE
|
||||
{
|
||||
$(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /IMPLIB:"$(<[2]:W)" /LIBPATH:"$(LINKPATH:W)" /def:$(DEF_FILE) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /IMPLIB:"$(<[2]:W)" /LIBPATH:"$(LINKPATH:W)" /def:$(DEF_FILE) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
|
||||
$(MANIFEST)$(<[1]).manifest $(OUTPUTRESOURCE)$(<[1]);2
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user