Changeset 1424 for trunk/kBuild
- Timestamp:
- Mar 20, 2008, 8:28:38 AM (17 years ago)
- Location:
- trunk/kBuild
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kBuild/footer.kmk
r1417 r1424 1952 1952 1953 1953 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 # @{ 1957 define def_src_handler_c 1958 $(warning def_src_handler_c: source=$(source)) 1959 type := C 1960 $(kb-src-one ) 1961 endef 1962 1963 define def_src_handler_cxx 1964 type := CXX 1965 $(kb-src-one ) 1966 endef 1967 1968 define def_src_handler_objc 1969 type := OBJC 1970 $(kb-src-one ) 1971 endef 1972 1973 define def_src_handler_asm 1974 type := AS 1975 $(kb-src-one ) 1976 endef 1977 1978 define def_src_handler_rc 1979 type := RC 1980 $(kb-src-one ) 1981 endef 1982 1983 define def_src_handler_obj 1984 $(target)_OBJS_ += $(source) 1985 endef 1986 ## @} 1987 1988 ## Handle one source. 1989 # . 1990 define def_src_handler_one 1991 suff := $(suffix $(source)) 1992 src_handler := $(firstword $(filter $(suff):%, $($(target)_$(source)_SRC_HANDLERS) $($(source)_SRC_HANDLERS) $(target_src_handlers) )) 1993 handler := $(patsubst $(suff):%,%,$(src_handler)) 1994 #$ (warning def_src_handler_one: source=$(source) suff=$(suff) src_handler=$(src_handler) handler=$(handler)) 1995 ifneq ($(handler),) 1996 $(eval $(value $(handler))) 1965 1997 else 1966 def_target_source_c_cpp_objc_asm_rc_var = def_target_source_c_cpp_objc_asm_rc_old 1967 endif 1998 othersrc += $(sources) 1999 endif 2000 endef 1968 2001 1969 2002 ## Generic macro for processing all target sources. … … 1971 2004 # @param $(defpath) 1972 2005 # @param much-more... 2006 # @returns othersrc, $(target)_OBJS_, ++ 1973 2007 define 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 2009 target_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)) ) 1999 2018 2000 2019 endef … … 2081 2100 $(target)_OBJS_ := 2082 2101 defpath := $($(target)_PATH) 2102 othersrc := 2083 2103 2084 2104 # source -> object … … 2106 2126 $($(target)_ARFLAGS.$(bld_trg).$(bld_trg_arch)) \ 2107 2127 $($(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_)2123 2128 dirdep := $(call DIRDEP,$(dir $(out))) 2124 2129 deps := $($(target)_DEPS) … … 2127 2132 # Adjust paths if we got a default path. 2128 2133 ifneq ($(defpath),) 2129 objs := $(abspathex $(objs),$(defpath))2134 $(target)_OBJS_ := $(abspathex $($(target)_OBJS_),$(defpath)) 2130 2135 deps := $(abspathex $(deps),$(defpath)) 2131 2136 orderdeps := $(abspathex $(orderdeps),$(defpath)) … … 2196 2201 endif 2197 2202 2203 # eliminate this guy? 2204 objs = $($(target)_OBJS_) 2205 2198 2206 # dependency file 2199 2207 dep := $(out)$(SUFF_DEP) … … 2231 2239 $(target)_OUTPUT_ := $(TOOL_$(tool)_LINK_LIBRARY_OUTPUT) 2232 2240 $(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_) 2234 2242 $(target)_DEPORD_ := $(TOOL_$(tool)_LINK_LIBRARY_DEPORD) $(dirdep) $(orderdeps) 2235 2243 … … 2298 2306 $(target)_OBJS_ := 2299 2307 defpath := $($(target)_PATH) 2308 othersrc := 2300 2309 2301 2310 # source -> object … … 2353 2362 $($(target)_LDFLAGS.$(bld_trg).$(bld_trg_arch))\ 2354 2363 $($(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_)2370 2364 libs :=\ 2371 2365 $($(target)_LIBS.$(bld_trg_cpu))\ … … 2457 2451 ifneq ($(defpath),) 2458 2452 libpath := $(abspathex $(libpath),$(defpath)) 2459 objs := $(abspathex $(objs),$(defpath))2453 $(target)_OBJS_ := $(abspathex $($(target)_OBJS_),$(defpath)) 2460 2454 deps := $(abspathex $(deps),$(defpath)) 2461 2455 orderdeps := $(abspathex $(orderdeps),$(defpath)) … … 2526 2520 endif 2527 2521 2522 # eliminate this guy? 2523 objs = $($(target)_OBJS_) 2524 2528 2525 # installation targets 2529 2526 ifndef $(target)_NOINST … … 2578 2575 $(target)_OUTPUT_ := $(TOOL_$(tool)_$(tool_do)_OUTPUT) 2579 2576 $(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_) 2581 2578 $(target)_DEPORD_ := $(TOOL_$(tool)_$(tool_do)_DEPORD) $(dirdep) $(orderdeps) 2582 2579 -
trunk/kBuild/header.kmk
r1420 r1424 584 584 DEFAULT_MAKEFILE := Makefile.kmk makefile.kmk Makefile makefile 585 585 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. 590 KBUILD_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 \ 586 610 587 611 ## PROPS_TOOLS … … 639 663 # will do the necessary inheritance from templates to targets. 640 664 PROPS_ACCUMULATE_L := \ 641 SDKS SOURCES \665 SDKS SOURCES SRC_HANDLERS \ 642 666 INCS CINCS CXXINCS OBJCINCS ASINCS RCINCS \ 643 667 LIBS LIBPATH \ … … 646 670 # Subset of PROPS_ACCUMULATE_L which applies to all linkable targets. 647 671 PROPS_ACCUMULATE_L_LNK := \ 648 SDKS SOURCES \672 SDKS SOURCES SRC_HANDLERS \ 649 673 INCS CINCS CXXINCS OBJCINCS ASINCS RCINCS \ 650 674 BLDDIRS CLEAN
Note:
See TracChangeset
for help on using the changeset viewer.