From f8701cd3522f4e87344661f8ae7dcc3def35d5fd Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Mon, 5 Dec 2005 15:18:16 +0000 Subject: [PATCH] Simplify handling of feature. * common.jam (resolve-library-files): Remove * msvc.jam, cw.jam: Add 'flags' invocation for library-file feature. [SVN r31918] --- src/tools/common.jam | 28 ---------------------------- src/tools/cw.jam | 27 +++++++-------------------- src/tools/msvc.jam | 31 +++++++++---------------------- 3 files changed, 16 insertions(+), 70 deletions(-) diff --git a/src/tools/common.jam b/src/tools/common.jam index 4f2d4026b..7a6c15135 100644 --- a/src/tools/common.jam +++ b/src/tools/common.jam @@ -447,34 +447,6 @@ rule prepend-path-variable-command ( variable : paths * ) } -# Returns the list of libraries from the property -# in their actualized form. -rule resolve-library-files ( properties * ) -{ - local libraries ; - - for local p in $(properties) - { - if $(p:G) = && - ! [ 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 diff --git a/src/tools/cw.jam b/src/tools/cw.jam index 90bfa6a8c..c57600e63 100644 --- a/src/tools/cw.jam +++ b/src/tools/cw.jam @@ -177,53 +177,40 @@ flags cw.link LINKPATH ; flags cw.link FINDLIBS_ST ; flags cw.link FINDLIBS_SA ; flags cw.link LIBRARY_OPTION 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 : ; 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)")" } diff --git a/src/tools/msvc.jam b/src/tools/msvc.jam index 55734d350..115ca38ce 100644 --- a/src/tools/msvc.jam +++ b/src/tools/msvc.jam @@ -560,12 +560,12 @@ flags msvc.compile UNDEFS ; flags msvc.compile INCLUDES ; # 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 ; flags msvc.link FINDLIBS_ST ; flags msvc.link FINDLIBS_SA ; flags msvc.link LIBRARY_OPTION msvc : "" : unchecked ; +flags msvc.link LIBRARIES_MENTIONED_BY_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 }