123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- # C/C++ build script
- _FUNC_EXT2O = $(patsubst %.$(3),$(1)/%.o,$(2))
- _FUNC_C2O = $(call _FUNC_EXT2O,$(1),$(2),c)
- _FUNC_CPP2O = $(call _FUNC_EXT2O,$(1),$(2),cpp)
- # parameter :
- # $(1) - C/C++ soruce file
- # $(2) - output path
- # $(3) - .ext
- CONVERT_ESC_EXT_TO_O = $(addprefix $(2)/,$(call CONVERT_4MAKE_TO_OUT,$(patsubst %.$(3),%.o,$(1))))
- CONVERT_ESC_C_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),c)
- CONVERT_ESC_CPP_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),cpp)
- # parameter :
- # $(1) - encoded one C/C++ soruce file
- # $(2) - output path
- # $(3) - ext title (C/C++)
- # $(4) - ext (c/cpp)
- # $(5) - compiler ($(CC)/$(CXX))
- # $(6) - build opt
- # $(7) - build opt file
- # output :
- # $(8) - output files list
- define C_BUILD_PROC_RAW
- $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4)) : $(call DECODE_4MAKE,$(1)) $(7)
- @echo ' Building file: $$<'
- @echo ' Invoking: $(3) Compiler'
- $$(call MAKEDIRS,$$(@D))
- $(5) -c "$$<" -o "$$@" $(6) @$(7)
- @echo ' Finished building: $$<'
- $(8) += $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4))
- endef
- # parameter :
- # $(1) - output paths
- # $(2) - src paths
- # $(3) - inc paths
- # $(4) - inc files
- # $(5) - Defs
- # $(6) - UnDefs
- # $(7) - compiler opt
- # $(8) - compiler opt file
- # $(9) - ext title (C/C++)
- # $(10) - ext (c/cpp)
- # $(11) - compiler ($(CC)/$(CXX))
- # output :
- # $(12) - OBJS
- # return :
- # none
- define C_PROC_RAW
- _OUTPUT_DIR := $$(strip $(1))#
- _SRCS := $(2)#
- _INCS := $(3)#
- _INC_FILES := $(4)#
- _DEFS := $(5)#
- _UNDEFS := $(6)#
- _OPT := $(7)
- _OPT_FILE := $(8)
- _EXT_TITLE := $(9)
- _EXT := $(10)
- _COMPILER := $(11)
- #_OUTPUT_FILES := $(12)
- _ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
- _ENC_SRCS := $$(filter %.$$(_EXT),$$(_ENC_SRCS))
- ifneq ($$(strip $$(_SRCS)),)
- _NORMAL_SRCS := $$(filter-out %*.$$(_EXT),$$(_ENC_SRCS))
- _WIDLCARD_SRCS := $$(filter %*.$$(_EXT),$$(_ENC_SRCS))
- _ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
- $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
- ifneq ($$(strip $$(_ALL_SRCS)),)
- _ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
- _CDEFS := $$(CDEFS)
- _CDEFS += $$(addprefix -D,$$(_DEFS))
- _CDEFS += $$(addprefix -U,$$(_UNDEFS))
- _ENC_C_INCS := $$(call ENCODE_4MAKE,$$(_INCS))
- _ENC_C_INCS := $$(addprefix -I,$$(_ENC_C_INCS))
-
- _ENC_INC_FILES := $$(call ENCODE_4MAKE,$$(_INC_FILES))
- _ENC_INC_FILES += $$(addprefix -include,$$(_ENC_INC_FILES))
- _C_INCS := $$(call DECODE_4MAKE,$$(_ENC_C_INCS) $$(_ENC_C_INC_FILES))
- _DEFS := $$(_CDEFS) $$(_C_INCS) -I"pch" $$(_OPT)
- $$(foreach var,$$(_ENC_SRCS),$$(eval $$(call C_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_EXT_TITLE),$$(_EXT),$$(_COMPILER),$$(_DEFS),$$(_OPT_FILE),$(12))))
- endif # (_(strip _(_ALL_SRCS)),)
- endif # (_(strip _(_SRCS)),)
- endef
|