Changeset 1424 for trunk/kBuild


Ignore:
Timestamp:
Mar 20, 2008, 8:28:38 AM (17 years ago)
Author:
bird
Message:

SRC_HANDLERS - more flexible source file handling. Fixes #24.

Location:
trunk/kBuild
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/kBuild/footer.kmk

    r1417 r1424  
    19521952
    19531953
    1954 ## Generic macro for processing C, C++ and Assembly sources.
    1955 # @param    $(target)     Normalized target name.
    1956 # @param    $(source)     Source file name.
    1957 # @param    $(type)       Source type. {C,CXX,AS,OBJC}
    1958 # @param    bld_type      Build type.
    1959 # @param    bld_trg       Build target.
    1960 # @param    bld_trg_arch  Build target arch.
    1961 # @param    bld_trg_cpu   Build target cpu.
    1962 def_target_source_c_cpp_objc_asm_rc_new = $(kb-src-one )
    1963 ifdef KMK_VERSION
    1964  def_target_source_c_cpp_objc_asm_rc_var = def_target_source_c_cpp_objc_asm_rc_new
     1954## def_src_handler_*
     1955#
     1956# @{
     1957define def_src_handler_c
     1958$(warning def_src_handler_c: source=$(source))
     1959type := C
     1960 $(kb-src-one )
     1961endef
     1962
     1963define def_src_handler_cxx
     1964type := CXX
     1965 $(kb-src-one )
     1966endef
     1967
     1968define def_src_handler_objc
     1969type := OBJC
     1970 $(kb-src-one )
     1971endef
     1972
     1973define def_src_handler_asm
     1974type := AS
     1975 $(kb-src-one )
     1976endef
     1977
     1978define def_src_handler_rc
     1979type := RC
     1980 $(kb-src-one )
     1981endef
     1982
     1983define def_src_handler_obj
     1984$(target)_OBJS_ += $(source)
     1985endef
     1986## @}
     1987
     1988## Handle one source.
     1989# .
     1990define def_src_handler_one
     1991suff := $(suffix $(source))
     1992src_handler := $(firstword $(filter $(suff):%, $($(target)_$(source)_SRC_HANDLERS) $($(source)_SRC_HANDLERS) $(target_src_handlers) ))
     1993handler := $(patsubst $(suff):%,%,$(src_handler))
     1994#$ (warning def_src_handler_one: source=$(source) suff=$(suff) src_handler=$(src_handler) handler=$(handler))
     1995ifneq ($(handler),)
     1996$(eval $(value $(handler)))
    19651997else
    1966  def_target_source_c_cpp_objc_asm_rc_var = def_target_source_c_cpp_objc_asm_rc_old
    1967 endif
     1998othersrc += $(sources)
     1999endif
     2000endef
    19682001
    19692002## Generic macro for processing all target sources.
     
    19712004# @param    $(defpath)
    19722005# @param    much-more...
     2006# @returns      othersrc, $(target)_OBJS_, ++
    19732007define def_target_sources
    1974 #$ (warning def_target_sources)
    1975 # C sources
    1976 type := C
    1977 $(foreach source, $(filter %.c             , $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
    1978    ,$(eval $(value $(def_target_source_c_cpp_objc_asm_rc_var))) )
    1979 
    1980 # C++ sources
    1981 type := CXX
    1982 $(foreach source, $(filter %.cpp %.cxx %.xx, $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
    1983         ,$(eval $(value $(def_target_source_c_cpp_objc_asm_rc_var))) )
    1984 
    1985 # Objective-C sources
    1986 type := OBJC
    1987 $(foreach source, $(filter %.m,              $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
    1988         ,$(eval $(value $(def_target_source_c_cpp_objc_asm_rc_var))) )
    1989 
    1990 # ASM sources
    1991 type := AS
    1992 $(foreach source, $(filter %.asm %.s %.S   , $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
    1993         ,$(eval $(value $(def_target_source_c_cpp_objc_asm_rc_var))) )
    1994 
    1995 # Resource sources
    1996 type := RC
    1997 $(foreach source, $(filter %.rc            , $($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)))\
    1998         ,$(eval $(value $(def_target_source_c_cpp_objc_asm_rc_var))) )
     2008
     2009target_src_handlers := $($(target)_SRC_HANDLERS) $(KBUILD_SRC_HANDLERS)
     2010$(foreach source,\
     2011        $($(target)_SOURCES)\
     2012        $($(target)_SOURCES.$(bld_trg))\
     2013        $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch))\
     2014        $($(target)_SOURCES.$(bld_trg_arch))\
     2015        $($(target)_SOURCES.$(bld_trg_cpu))\
     2016        $($(target)_SOURCES.$(bld_type))\
     2017        ,$(eval $(value def_src_handler_one)) )
    19992018
    20002019endef
     
    20812100$(target)_OBJS_ :=
    20822101defpath := $($(target)_PATH)
     2102othersrc :=
    20832103
    20842104# source -> object
     
    21062126        $($(target)_ARFLAGS.$(bld_trg).$(bld_trg_arch)) \
    21072127        $($(target)_ARFLAGS.$(bld_trg_cpu))
    2108 othersrc    := $(filter-out %.c %.cpp %.cxx %.cc %.m %.s %.S %.asm %.rc %.o %.obj %.res,\
    2109         $($(target)_SOURCES) \
    2110         $($(target)_SOURCES.$(bld_trg)) \
    2111         $($(target)_SOURCES.$(bld_trg_arch)) \
    2112         $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) \
    2113         $($(target)_SOURCES.$(bld_trg_cpu)) \
    2114         $($(target)_SOURCES.$(bld_type)))
    2115 objs         = $(filter %.o %.obj %.res, \
    2116         $($(target)_SOURCES) \
    2117         $($(target)_SOURCES.$(bld_trg)) \
    2118         $($(target)_SOURCES.$(bld_trg_arch)) \
    2119         $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) \
    2120         $($(target)_SOURCES.$(bld_trg_cpu)) \
    2121         $($(target)_SOURCES.$(bld_type))) \
    2122     $($(target)_OBJS_)
    21232128dirdep      := $(call DIRDEP,$(dir $(out)))
    21242129deps        := $($(target)_DEPS)
     
    21272132# Adjust paths if we got a default path.
    21282133ifneq ($(defpath),)
    2129  objs := $(abspathex $(objs),$(defpath))
     2134 $(target)_OBJS_ := $(abspathex $($(target)_OBJS_),$(defpath))
    21302135 deps := $(abspathex $(deps),$(defpath))
    21312136 orderdeps := $(abspathex $(orderdeps),$(defpath))
     
    21962201endif
    21972202
     2203# eliminate this guy?
     2204objs = $($(target)_OBJS_)
     2205
    21982206# dependency file
    21992207dep := $(out)$(SUFF_DEP)
     
    22312239$(target)_OUTPUT_ := $(TOOL_$(tool)_LINK_LIBRARY_OUTPUT)
    22322240$(target)_OUTPUT_MAYBE_ := $(TOOL_$(tool)_LINK_LIBRARY_OUTPUT_MAYBE)
    2233 $(target)_DEPEND_ := $(TOOL_$(tool)_LINK_LIBRARY_DEPEND) $(deps) $(objs)
     2241$(target)_DEPEND_ := $(TOOL_$(tool)_LINK_LIBRARY_DEPEND) $(deps) $($(target)_OBJS_)
    22342242$(target)_DEPORD_ := $(TOOL_$(tool)_LINK_LIBRARY_DEPORD) $(dirdep) $(orderdeps)
    22352243
     
    22982306$(target)_OBJS_  :=
    22992307defpath := $($(target)_PATH)
     2308othersrc :=
    23002309
    23012310# source -> object
     
    23532362        $($(target)_LDFLAGS.$(bld_trg).$(bld_trg_arch))\
    23542363        $($(target)_LDFLAGS.$(bld_trg_cpu))
    2355 othersrc    := $(filter-out %.c %.cpp %.cxx %.cc %.m %.s %.S %.asm %.rc %.o %.obj %.res,\
    2356         $($(target)_SOURCES)\
    2357         $($(target)_SOURCES.$(bld_trg)) \
    2358         $($(target)_SOURCES.$(bld_trg_arch)) \
    2359         $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) \
    2360         $($(target)_SOURCES.$(bld_trg_cpu)) \
    2361         $($(target)_SOURCES.$(bld_type)))
    2362 objs         = $(filter %.o %.obj %.res, \
    2363         $($(target)_SOURCES) \
    2364         $($(target)_SOURCES.$(bld_trg)) \
    2365         $($(target)_SOURCES.$(bld_trg_arch)) \
    2366         $($(target)_SOURCES.$(bld_trg).$(bld_trg_arch)) \
    2367         $($(target)_SOURCES.$(bld_trg_cpu)) \
    2368         $($(target)_SOURCES.$(bld_type))) \
    2369         $($(target)_OBJS_)
    23702364libs        :=\
    23712365        $($(target)_LIBS.$(bld_trg_cpu))\
     
    24572451ifneq ($(defpath),)
    24582452 libpath := $(abspathex $(libpath),$(defpath))
    2459  objs := $(abspathex $(objs),$(defpath))
     2453 $(target)_OBJS_ := $(abspathex $($(target)_OBJS_),$(defpath))
    24602454 deps := $(abspathex $(deps),$(defpath))
    24612455 orderdeps := $(abspathex $(orderdeps),$(defpath))
     
    25262520endif
    25272521
     2522# eliminate this guy?
     2523objs = $($(target)_OBJS_)
     2524
    25282525# installation targets
    25292526ifndef $(target)_NOINST
     
    25782575$(target)_OUTPUT_ := $(TOOL_$(tool)_$(tool_do)_OUTPUT)
    25792576$(target)_OUTPUT_MAYBE_ := $(TOOL_$(tool)_$(tool_do)_OUTPUT_MAYBE)
    2580 $(target)_DEPEND_ := $(TOOL_$(tool)_$(tool_do)_DEPEND) $(deps) $(objs)
     2577$(target)_DEPEND_ := $(TOOL_$(tool)_$(tool_do)_DEPEND) $(deps) $($(target)_OBJS_)
    25812578$(target)_DEPORD_ := $(TOOL_$(tool)_$(tool_do)_DEPORD) $(dirdep) $(orderdeps)
    25822579
  • trunk/kBuild/header.kmk

    r1420 r1424  
    584584DEFAULT_MAKEFILE := Makefile.kmk makefile.kmk Makefile makefile
    585585
     586## KBUILD_SRC_HANDLERS
     587# The list of source handlers, pair of extension and handler.
     588# The user can overload this list to provide additional or custom
     589# handlers. On a per-target/template see SRC_HANDLERS.
     590KBUILD_SRC_HANDLERS := \
     591  .c:def_src_handler_c \
     592  .C:def_src_handler_c \
     593.cxx:def_src_handler_cxx \
     594.CXX:def_src_handler_cxx \
     595.cpp:def_src_handler_cxx \
     596.CPP:def_src_handler_cxx \
     597 .cc:def_src_handler_cxx \
     598 .CC:def_src_handler_cxx \
     599  .m:def_src_handler_objc \
     600.asm:def_src_handler_asm \
     601.ASM:def_src_handler_asm \
     602  .s:def_src_handler_asm \
     603  .S:def_src_handler_asm \
     604 .rc:def_src_handler_rc \
     605.obj:def_src_handler_obj \
     606  .o:def_src_handler_obj \
     607.res:def_src_handler_obj \
     608.lib:def_src_handler_obj \
     609  .a:def_src_handler_obj \
    586610
    587611## PROPS_TOOLS
     
    639663# will do the necessary inheritance from templates to targets.
    640664PROPS_ACCUMULATE_L := \
    641         SDKS SOURCES \
     665        SDKS SOURCES SRC_HANDLERS \
    642666        INCS CINCS CXXINCS OBJCINCS ASINCS RCINCS \
    643667        LIBS LIBPATH \
     
    646670# Subset of PROPS_ACCUMULATE_L which applies to all linkable targets.
    647671PROPS_ACCUMULATE_L_LNK := \
    648         SDKS SOURCES \
     672        SDKS SOURCES SRC_HANDLERS \
    649673        INCS CINCS CXXINCS OBJCINCS ASINCS RCINCS \
    650674        BLDDIRS CLEAN
Note: See TracChangeset for help on using the changeset viewer.