Changeset 130 for trunk/kBuild/tools


Ignore:
Timestamp:
Jun 29, 2004, 7:30:14 PM (21 years ago)
Author:
bird
Message:

DLL

Location:
trunk/kBuild/tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/tools/GCC.kmk

    r129 r130  
    5858TOOL_GCC_LDFLAGS.debug      := -g
    5959TOOL_GCC_LDFLAGS.release    := -s
     60TOOL_GCC_LDFLAGS.dll.os2    := -Zdll
     61ifndef TOOL_GCC_LDFLAGS.$(BUILD_TARGET)
     62TOOL_GCC_LDFLAGS.dll        := -shared
     63else
     64TOOL_GCC_LDFLAGS.dll        := $(TOOL_GCC_LDFLAGS.$(BUILD_TARGET))
     65endif
    6066
    6167
     
    138144# @param        $(dirdep)   Directory creation dependency.
    139145# @param        $(deps)         Other dependencies.
    140 # @param        $(deffile)  Definition file. (optional, PC only)
     146# @param        $(othersrc) Unhandled sources.
    141147# @param        $(custom_pre)   Custom step invoked before linking.
    142148# @param        $(custom_post)  Custom step invoked after linking.
     
    158164endef
    159165
     166
     167## Link program
     168# @param    $(target)   Normalized main target name.
     169# @param    $(exe)              Program name.
     170# @param    $(objs)     Object files to link together.
     171# @param    $(libs)     Libraries to search.
     172# @param    $(libpath)  Library search paths.
     173# @param    $(flags)    Flags.
     174# @param        $(dirdep)   Directory creation dependency.
     175# @param        $(deps)         Other dependencies.
     176# @param        $(othersrc) Unhandled sources.
     177# @param        $(custom_pre)   Custom step invoked before linking.
     178# @param        $(custom_post)  Custom step invoked after linking.
     179#
     180# @param    $(outbase)  Output basename (full). Use this for list files and such.
     181define TOOL_GCC_LINK_DLL
     182#$ (warning dbg: TOOL_GCC_LINK_DLL: target=$(target) exe=$(exe) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) deffile=$(deffile) outbase=$(outbase))
     183$(exe): $(dirdep) $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(deps)
     184        $(call MSG_L1,Creating Program $$@)
     185ifneq ($(custom_pre),)
     186        $(eval $(custom_pre))
     187endif   
     188        $(TOOL_GCC_LD) $(TOOL_GCC_LDFLAGS.dll) $(flags) -o $$@ $(objs) \
     189        $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
     190ifneq ($(custom_post),)
     191        $(eval $(custom_post))
     192endif   
     193       
     194endef
     195
  • trunk/kBuild/tools/GCC3.kmk

    r129 r130  
    5757TOOL_GCC3_LDFLAGS.debug      := -g
    5858TOOL_GCC3_LDFLAGS.release    := -s
     59ifndef TOOL_GCC3_LDFLAGS.$(BUILD_TARGET)
     60TOOL_GCC3_LDFLAGS.dll        := -shared
     61else
     62TOOL_GCC3_LDFLAGS.dll        := $(TOOL_GCC3_LDFLAGS.$(BUILD_TARGET))
     63endif
    5964
    6065
     
    137142# @param        $(dirdep)   Directory creation dependency.
    138143# @param        $(deps)         Other dependencies.
    139 # @param        $(deffile)  Definition file. (optional, PC only)
     144# @param        $(othersrc) Unhandled sources.
    140145# @param        $(custom_pre)   Custom step invoked before linking.
    141146# @param        $(custom_post)  Custom step invoked after linking.
     
    155160        $(eval $(custom_post))
    156161endif   
    157         $(MKDIR) -p $(PATH_BIN)
    158         $(CP) $$@ $(PATH_BIN)/
    159162       
    160163endef
    161164
     165
     166## Link DLL
     167# @param    $(target)   Normalized main target name.
     168# @param    $(dll)              Program name.
     169# @param    $(objs)     Object files to link together.
     170# @param    $(libs)     Libraries to search.
     171# @param    $(libpath)  Library search paths.
     172# @param    $(flags)    Flags.
     173# @param        $(dirdep)   Directory creation dependency.
     174# @param        $(deps)         Other dependencies.
     175# @param        $(othersrc) Unhandled sources.
     176# @param        $(custom_pre)   Custom step invoked before linking.
     177# @param        $(custom_post)  Custom step invoked after linking.
     178#
     179# @param    $(outbase)  Output basename (full). Use this for list files and such.
     180define TOOL_GCC3_LINK_DLL
     181#$ (warning dbg: TOOL_GCC3_LINK_PROGRAM: target=$(target) dll=$(dll) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) deffile=$(deffile) outbase=$(outbase))
     182$(dll): $(dirdep) $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(deps)
     183        $(call MSG_L1,Creating Program $$@)
     184ifneq ($(custom_pre),)
     185        $(eval $(custom_pre))
     186endif   
     187        $(TOOL_GCC3_LD) $(TOOL_GCC3_LDFLAGS.dll) $(flags) -o $$@ $(objs) \
     188        $(foreach p,$(libpath), -L$(p)) \
     189        $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))
     190ifneq ($(custom_post),)
     191        $(eval $(custom_post))
     192endif   
     193       
     194endef
     195
  • trunk/kBuild/tools/MINGW32.kmk

    r129 r130  
    171171# @param        $(dirdep)   Directory creation dependency.
    172172# @param        $(deps)         Other dependencies.
    173 # @param        $(deffile)  Definition file. (optional, PC only)
     173# @param        $(othersrc) Unhandled sources.
    174174# @param        $(custom_pre)   Custom step invoked before linking.
    175175# @param        $(custom_post)  Custom step invoked after linking.
     
    189189        $(eval $(custom_post))
    190190endif   
    191         $(MKDIR) -p $(PATH_BIN)
    192         $(CP) $$@ $(PATH_BIN)/
    193191       
    194192endef
  • trunk/kBuild/tools/VCC70.kmk

    r129 r130  
    143143# @param        $(dirdep)   Directory creation dependency.
    144144# @param        $(deps)         Other dependencies.
    145 # @param        $(deffile)  Definition file. (optional, PC only)
     145# @param        $(othersrc) Unhandled sources.
    146146# @param        $(custom_pre)   Custom step invoked before linking.
    147147# @param        $(custom_post)  Custom step invoked after linking.
     
    149149# @param    $(outbase)  Output basename (full). Use this for list files and such.
    150150define TOOL_VCC70_LINK_PROGRAM
    151 #$ (warning dbg: TOOL_VCC70_LINK_PROGRAM: target=$(target) exe=$(exe) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) deffile=$(deffile) outbase=$(outbase))
     151#$ (warning dbg: TOOL_VCC70_LINK_PROGRAM: target=$(target) exe=$(exe) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) othersrc=$(othersrc) outbase=$(outbase))
    152152$(exe): $(dirdep) $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(deps)
    153153        $(call MSG_L1,Creating Program $$@)
     
    159159                /MAPINFO:EXPORTS /MAPINFO:LINES \
    160160                /MAP:$(outbase).map \
     161                $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \
     162                $(filter %.exp %.res,$(othersrc)) \
     163                $(foreach p,$(libpath), /LIBPATH:$(p)) \
    161164                $(subst /,\\,$(objs)) \
    162165                $(subst /,\\,$(libs))
    163         $(MKDIR) -p $(PATH_BIN)
    164         $(CP) $$@ $(PATH_BIN)/
    165166ifneq ($(custom_post),)
    166167        $(eval $(custom_post))
     
    180181# @param        $(dirdep)   Directory creation dependency.
    181182# @param        $(deps)         Other dependencies.
    182 # @param        $(deffile)  Definition file. (optional, PC only)
     183# @param        $(othersrc) Unhandled sources.
    183184# @param        $(custom_pre)   Custom step invoked before linking.
    184185# @param        $(custom_post)  Custom step invoked after linking.
     
    186187# @param    $(outbase)  Output basename (full). Use this for list files and such.
    187188define TOOL_VCC70_LINK_SYSMOD
    188 #$ (warning dbg: TOOL_VCC70_LINK_SYSMOD: target=$(target) sys=$(sys) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) deffile=$(deffile) outbase=$(outbase))
     189#$ (warning dbg: TOOL_VCC70_LINK_SYSMOD: target=$(target) sys=$(sys) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) othersrc=$(othersrc) outbase=$(outbase))
    189190$(sys): $(dirdep) $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(deps)
    190191        $(call MSG_L1,Creating Program $$@)
     
    196197                /MAPINFO:EXPORTS /MAPINFO:LINES \
    197198                /MAP:$(outbase).map \
     199                $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \
     200                $(filter %.exp %.res,$(othersrc)) \
     201                $(foreach p,$(libpath), /LIBPATH:$(p)) \
    198202                $(subst /,\\,$(objs)) \
    199203                $(subst /,\\,$(libs))
    200         $(MKDIR) -p $(PATH_BIN)
    201         $(CP) $$@ $(PATH_BIN)/
    202204ifneq ($(custom_post),)
    203205        $(eval $(custom_post))
     
    207209endef
    208210
     211
     212## Link system module (windows aka driver, linux aka kernel module)
     213# @param    $(target)   Normalized main target name.
     214# @param    $(dll)              System module name.
     215# @param    $(objs)     Object files to link together.
     216# @param    $(libs)     Libraries to search.
     217# @param    $(libpath)  Library search paths.
     218# @param    $(flags)    Flags.
     219# @param        $(dirdep)   Directory creation dependency.
     220# @param        $(deps)         Other dependencies.
     221# @param        $(othersrc) Unhandled sources.
     222# @param        $(custom_pre)   Custom step invoked before linking.
     223# @param        $(custom_post)  Custom step invoked after linking.
     224#
     225# @param    $(outbase)  Output basename (full). Use this for list files and such.
     226define TOOL_VCC70_LINK_DLL
     227#$ (warning dbg: TOOL_VCC70_LINK_DLL: target=$(target) dll=$(dll) objs=$(objs) libs=$(libs) deps=$(deps) flags=$(flags) dirdep=$(dirdep) othersrc=$(othersrc) outbase=$(outbase))
     228$(dll): $(dirdep) $(call DIRDEP,$(PATH_LIB)) $(objs) $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(deps)
     229        $(call MSG_L1,Creating Program $$@)
     230ifneq ($(custom_pre),)
     231        $(eval $(custom_pre))
     232endif   
     233        $(TOOL_VCC70_LD) $(flags) \
     234                /OUT:$(dll) \
     235                /IMPLIB:$(outbase).lib \
     236                /MAPINFO:EXPORTS /MAPINFO:LINES \
     237                /MAP:$(outbase).map \
     238                /DLL \
     239                $(foreach def,$(filter %.def,$(othersrc)), /DEF:$(def)) \
     240                $(filter %.exp %.res,$(othersrc)) \
     241                $(foreach p,$(libpath), /LIBPATH:$(p)) \
     242                $(subst /,\\,$(objs)) \
     243                $(subst /,\\,$(libs))
     244ifeq ($(filter %.exp .def,$(othersrc)),)
     245        $(CP) $(outbase).exp $(outbase).lib $(PATH_LIB)/
     246endif
     247ifneq ($(custom_post),)
     248        $(eval $(custom_post))
     249endif   
     250_OUT_FILES += $(outbase).map $(outbase).lib $(outbase).exp
     251
     252endef
     253
Note: See TracChangeset for help on using the changeset viewer.