[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 4/7] build: Pre-processing rule for AWK progfiles
Introduces an AWK pre-processing rule as another way for generating source files based on AWK progfiles. One intention of this is to simplify `Makefile.uk` of `lib/syscall_shim`. The source file is treated as the AWK progfile which will be executed over given includes (`AWKINCLUDES[-y]`). Because global flags and includes would not be meaningful for AWK rules, we support only library-local and file-local scopes. Example of compiling `uk_syscall6.o` from `uk_syscall6.awk` in `lib/syscall_shim`: LIBSYSCALL_SHIM_SRCS += $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6.awk>.c LIBSYSCALL_SHIM_GEN_UK_SYSCALL6_AWKFLAGS += -F '-' LIBSYSCALL_SHIM_GEN_UK_SYSCALL6_AWKINCLUDES += $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- support/build/Makefile.rules | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules index 6a8c2099..e1c078c3 100644 --- a/support/build/Makefile.rules +++ b/support/build/Makefile.rules @@ -634,6 +634,30 @@ UK_SRCS-y += $(2) $(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3))) endef +# Pre-processing rule for awk progs +# NOTES: +# $source is the awk progfile and AWKINCLUDES specify the input files to +# process. There are no global scopes for AWKINCLUDES and AWKFLAGS available +# because it would not be meaningful. +define preprule_awk = +$(3): $(2) \ + $$($(call vprefix_lib,$(1),AWKINCLUDES)) $$($(call vprefix_lib,$(1),AWKINCLUDES-y)) \ + $$($(call vprefix_src,$(1),$(2),,AWKINCLUDES)) $$($(call vprefix_src,$(1),$(2),,AWKINCLUDES-y)) \ + | prepare + $(call build_cmd,AWK,$(1),$(3),\ + $(AWK) -f $(2) \ + $$($(call vprefix_lib,$(1),AWKFLAGS)) $$($(call vprefix_lib,$(1),AWKFLAGS-y)) \ + $$($(call vprefix_src,$(1),$(2),,AWKFLAGS)) $$($(call vprefix_src,$(1),$(2),,AWKFLAGS-y)) \ + $(4) \ + $$($(call vprefix_lib,$(1),AWKINCLUDES)) $$($(call vprefix_lib,$(1),AWKINCLUDES-y)) \ + $$($(call vprefix_src,$(1),$(2),,AWKINCLUDES)) $$($(call vprefix_src,$(1),$(2),,AWKINCLUDES-y)) \ + > $(3) + ) + +UK_SRCS-y += $(2) +$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3))) +endef + # wrapper for preprule_*, # selects appropriate pre-process rule depending on file extension # if there is no such pre-process rule available, we throw an error. -- 2.20.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |