From: cocodery Date: Fri, 17 Nov 2023 16:17:03 +0000 (+0800) Subject: build: guarantee files generated by awk-file before others rely on them X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b1afc08db76ae095f062fafe0d29f4f692032c9d;p=unikraft%2Funikraft.git build: guarantee files generated by awk-file before others rely on them Fix sub-problem of issue#1147 when enable libukrust, which will throw an error that `fatal error: 'uk/bits/libid.h' file not found` because of wrong commands order. this header file is needed by `bindings_helper.h` but command generates 'uk/bits/libid/h' is ahead from the bindgen command. Signed-off-by: Chris Wu --- diff --git a/lib/uklibid/Makefile.uk b/lib/uklibid/Makefile.uk index b18c5e23e..16be6a33d 100644 --- a/lib/uklibid/Makefile.uk +++ b/lib/uklibid/Makefile.uk @@ -54,8 +54,30 @@ LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-$(CONFIG_LIBUKLIBID_INFO_COMPILEDATE) += -DUK_UT LIBUKLIBID_LIBINFO_GLOBAL_CDEPS-$(CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ) += $(LIBUKLIBID_BUILD)/config.gz LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-$(CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ) += -DUK_CONFIGGZINC="$(LIBUKLIBID_BUILD)/config.gz" +$(LIBUKLIBID_LIBID_SUBBUILD)/libid.h: $(LIBUKLIBID_BUILD)/libraries.in + $(call build_cmd, AWK,libid.h, $@, \ + $(AWK) -f $(LIBUKLIBID_BASE)/libid.awk $< \ + > $@) + +$(LIBUKLIBID_BUILD)/namemap.c: $(LIBUKLIBID_BUILD)/libraries.in + $(call build_cmd, AWK, namemap.c, $@, \ + $(AWK) -f $(LIBUKLIBID_BASE)/namemap.awk $< \ + > $@) + +$(LIBUKLIBID_BUILD)/selfids.c: $(LIBUKLIBID_BUILD)/libraries.in + $(call build_cmd, AWK, selfids.c, $@, \ + $(AWK) -f $(LIBUKLIBID_BASE)/selfids.awk $< \ + > $@) + +$(LIBUKLIBID_BUILD)/exportsyms.uk: $(LIBUKLIBID_BUILD)/libraries.in + $(call build_cmd, AWK, exportsyms.uk, $@, \ + $(AWK) -f $(LIBUKLIBID_BASE)/exportsyms.awk $< \ + > $@) + $(LIBUKLIBID_BUILD)/config.gz: $(UK_CONFIG_OUT) $(call build_cmd,GZ,libuklibid,$@, \ $(GZIP) -f -9 -c $< >$@) -UK_PREPARE-$(CONFIG_LIBUKLIBID) += $(LIBUKLIBID_BUILD)/libraries.in.new +UK_PREPARE-$(CONFIG_LIBUKLIBID) += $(LIBUKLIBID_BUILD)/libraries.in.new \ + $(LIBUKLIBID_LIBID_SUBBUILD)/libid.h $(LIBUKLIBID_BUILD)/namemap.c \ + $(LIBUKLIBID_BUILD)/selfids.c $(LIBUKLIBID_BUILD)/exportsyms.uk diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules index 16f660f29..f3c41e1d7 100644 --- a/support/build/Makefile.rules +++ b/support/build/Makefile.rules @@ -869,23 +869,23 @@ endef # 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) -UK_PREPROCESS-y += $(3) -$(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3))) +# $(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) +# UK_PREPROCESS-y += $(3) +# $(eval $(call vprefix_lib,$(1),CLEAN-y) += $(call build_clean,$(3))) endef # wrapper for preprule_*,