]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
build: guarantee files generated by awk-file before others rely on them
authorcocodery <cocodery@outlook.com>
Fri, 17 Nov 2023 16:17:03 +0000 (00:17 +0800)
committercocodery <cocodery@outlook.com>
Fri, 17 Nov 2023 16:17:03 +0000 (00:17 +0800)
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 <cocodery@outlook.com>
lib/uklibid/Makefile.uk
support/build/Makefile.rules

index b18c5e23ee6962876df5676072f01725ed17c029..16be6a33d9a17146295be4230a4fb296d415b21e 100644 (file)
@@ -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
index 16f660f29fc62fdf10823ce80693aed2a81375a6..f3c41e1d7e5b5dee03ed178268bd74d276f9f122 100644 (file)
@@ -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_*,