VirtualBox

Changeset 844 in kBuild


Ignore:
Timestamp:
Feb 4, 2007 2:17:25 PM (18 years ago)
Author:
bird
Message:

Library merging. Make use of -filelist on Mac OS X.

Location:
trunk/kBuild
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/header.kmk

    r830 r844  
    795795 # @param 3     The link tool operation (LINK_LIBRARY,LINK_PROGRAM,LINK_DLL,LINK_SYSMOD,++).
    796796 MSG_LINK     ?= $(call MSG_L1,Linking $1,=> $2)
     797 ## Merging a library into the target (during library linking).
     798 # @param 1     Target name.
     799 # @param 2     The output library name.
     800 # @param 3     The input library name.
     801 MSG_AR_MERGE ?= $(call MSG_L1,Merging $2 into $1, ($2))
    797802 ## Creating a directory (build).
    798803 # @param 1     Directory name.
  • trunk/kBuild/msgstyles/brief.kmk

    r819 r844  
    7171# @param 3     The link tool operation (LINK_LIBRARY,LINK_PROGRAM,LINK_DLL,LINK_SYSMOD,++).
    7272MSG_LINK     ?= $(call MSG_L1,$(if $(eq $3,LINK_LIBRARY),AR,LD)   $1,=> $2)
     73## Merging a library into the target (during library linking).
     74# @param 1     Target name.
     75# @param 2     The output library name.
     76# @param 3     The input library name.
     77MSG_AR_MERGE ?= $(NO_SUCH_VARIABLE)
    7378## Creating a directory (build).
    7479# @param 1     Directory name.
  • trunk/kBuild/tools/GCC4MACHO.kmk

    r819 r844  
    3131TOOL_GCC4MACHO_CXX ?= g++$(HOSTSUFF_EXE)
    3232TOOL_GCC4MACHO_AS  ?= gcc$(HOSTSUFF_EXE)
    33 TOOL_GCC4MACHO_AR_IMP ?= $(ECHO) not supported!
    34 TOOL_GCC4MACHO_LD ?= g++$(HOSTSUFF_EXE)
     33TOOL_GCC4MACHO_LD  ?= g++$(HOSTSUFF_EXE)
    3534TOOL_GCC4MACHO_LD_SYSMOD ?= g++$(HOSTSUFF_EXE)
    3635ifndef TOOL_GCC4MACHO_LDFLAGS.$(BUILD_TARGET)
     
    4140TOOL_GCC4MACHO_LDFLAGS.sysmod ?= -r
    4241#TOOL_GCC4MACHO_LD_SONAME = -Wl,-dylib_install_name $(firstword $($(1)_SONAME.$(BUILD_TARGET).$(BUILD_TYPE)) $($(1)_SONAME.$(BUILD_TARGET)) $($(1)_SONAME.$(BUILD_TYPE)) $($(1)_SONAME) $(notdir $(2)))
    43 TOOL_GCC4MACHO_LD_MAP ?=
    44 TOOL_GCC4MACHO_LD_SYSMOD_MAP ?=
    4542
    4643ifdef SLKRUNS
     
    168165TOOL_GCC4MACHO_LINK_LIBRARY_DEPORD =
    169166define TOOL_GCC4MACHO_LINK_LIBRARY_CMDS
    170         $(QUIET)$(TOOL_GCC4MACHO_AR) $(flags) $(out) $(objs) $(othersrc)
     167        $(call xargs,$(QUIET)$(TOOL_GCC4MACHO_AR) $(flags) $(out),$(objs))
     168        $(foreach lib,$(othersrc)\
     169                ,$(NL)$(TAB)$(call MSG_AR_MERGE,$(target),$(out),$(lib)) \
     170                $(NL)$(TAB)$(QUIET)$(RM_EXT) -f $(dir $(outbase))ar.tmp.dir/* \
     171                $(NL)$(TAB)$(QUIET)$(MKDIR) -p $(dir $(outbase))/ar.tmp.dir/ \
     172                $(NL)$(TAB)$(QUIET)(cd $(dir $(outbase))ar.tmp.dir/ \
     173                        && $(TOOL_GCC4MACHO_AR) -x $(abspath $(lib)) \
     174                        && $(TOOL_GCC4MACHO_AR) $(flags) $(out) *) \
     175                $(NL)$(TAB)$(QUIET)$(RM_EXT) -f $(dir $(outbase))/ar.tmp.dir/* \
     176                $(NL)$(TAB)$(QUIET)$(RMDIR) $(dir $(outbase))ar.tmp.dir/)
    171177endef
    172178
     
    185191# @param    $(custom_post)  Custom step invoked after linking.
    186192# @param    $(outbase)  Output basename (full). Use this for list files and such.
    187 TOOL_GCC4MACHO_LINK_PROGRAM_OUTPUT = $(outbase).map
     193TOOL_GCC4MACHO_LINK_PROGRAM_OUTPUT = $(outbase).map $(outbase).rsp
    188194TOOL_GCC4MACHO_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
    189195TOOL_GCC4MACHO_LINK_PROGRAM_DEPORD =
    190196define TOOL_GCC4MACHO_LINK_PROGRAM_CMDS
    191         $(QUIET)$(TOOL_GCC4MACHO_LD) $(flags) -o $(out) $(objs)\
     197        $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     198        $(QUIET)$(TOOL_GCC4MACHO_LD) $(flags) -o $(out)\
     199                -filelist $(outbase).rsp\
    192200                $(foreach p,$(libpath), -L$(p))\
    193                 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\
    194                 $(call TOOL_GCC4MACHO_LD_MAP,$(outbase).map)
     201                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
    195202endef
    196203
     
    209216# @param    $(custom_post)  Custom step invoked after linking.
    210217# @param    $(outbase)  Output basename (full). Use this for list files and such.
    211 TOOL_GCC4MACHO_LINK_DLL_OUTPUT = $(outbase).map
     218TOOL_GCC4MACHO_LINK_DLL_OUTPUT = $(outbase).rsp
    212219TOOL_GCC4MACHO_LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
    213220TOOL_GCC4MACHO_LINK_DLL_DEPORD =
    214221define TOOL_GCC4MACHO_LINK_DLL_CMDS
     222        $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
    215223        $(QUIET)$(TOOL_GCC4MACHO_LD) $(TOOL_GCC4MACHO_LDFLAGS.dll) $(flags) -o $(out)\
    216                 $(if $(filter-out win32 os2, $(BUILD_TARGET)),$(call TOOL_GCC4MACHO_LD_SONAME,$(target),$(out)))\
    217                 $(objs)\
     224                $(call TOOL_GCC4MACHO_LD_SONAME,$(target),$(out))\
     225                -filelist $(outbase).rsp\
    218226                $(foreach p,$(libpath), -L$(p))\
    219                 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\
    220                 $(call TOOL_GCC4MACHO_LD_MAP,$(outbase).map)
     227                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
    221228endef
    222229
     
    235242# @param    $(custom_post)  Custom step invoked after linking.
    236243# @param    $(outbase)  Output basename (full). Use this for list files and such.
    237 TOOL_GCC4MACHO_LINK_SYSMOD_OUTPUT = $(outbase).map
     244TOOL_GCC4MACHO_LINK_SYSMOD_OUTPUT = $(outbase).rsp
    238245TOOL_GCC4MACHO_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
    239246TOOL_GCC4MACHO_LINK_SYSMOD_DEPORD =
    240247define TOOL_GCC4MACHO_LINK_SYSMOD_CMDS
    241         $(QUIET)$(TOOL_GCC4MACHO_LD_SYSMOD) $(TOOL_GCC4MACHO_LDFLAGS.sysmod) $(flags) -o $(out) $(objs)\
     248        $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
     249        $(QUIET)$(TOOL_GCC4MACHO_LD_SYSMOD) $(TOOL_GCC4MACHO_LDFLAGS.sysmod) $(flags) -o $(out)\
     250                -filelist $(outbase).rsp\
    242251                $(foreach p,$(libpath), -L$(p))\
    243                 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\
    244                 $(call TOOL_GCC4MACHO_LD_SYSMOD_MAP,$(outbase).map)
    245 endef
    246 
     252                $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
     253endef
     254
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette