Message ID | 20211206170241.13165-27-anthony.perard@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Toolstack build system improvement, toward non-recursive makefiles | expand |
On 06/12/2021 17:02, Anthony PERARD wrote: > Setup proper dependencies with libacpi so we don't need to run "make > hvmloader" in the "all" target. ("build.o" new prerequisite isn't > exactly proper but a side effect of building the $(DSDT_FILES) is to > generate the "ssdt_*.h" needed by "build.o".) > > Make use if "-iquote" instead of a plain "-I". So I've read up on what this means, but is it really that important in the grand scheme of things? Can't we actually make our problems go away by turning libacpi into a real static library? (Also, the "kill hvmloader plans" will turn libacpi back into only having one single user, so that too) ~Andrew
On Thu, Dec 16, 2021 at 06:03:54PM +0000, Andrew Cooper wrote: > On 06/12/2021 17:02, Anthony PERARD wrote: > > Setup proper dependencies with libacpi so we don't need to run "make > > hvmloader" in the "all" target. ("build.o" new prerequisite isn't > > exactly proper but a side effect of building the $(DSDT_FILES) is to > > generate the "ssdt_*.h" needed by "build.o".) > > > > Make use if "-iquote" instead of a plain "-I". > > So I've read up on what this means, but is it really that important in > the grand scheme of things? It something that Jan proposed to do in some cases in the hypervisor build system. I thought it was something good to do so I start using -iquote in the toolstack as well. > Can't we actually make our problems go away by turning libacpi into a > real static library? (Also, the "kill hvmloader plans" will turn > libacpi back into only having one single user, so that too) Well, libacpi also have some headers that needs to be generated, so I'm not sure which problem are going away when turning it into a static lib. Also, I don't think hvmloader and libxl would want the same library. Thanks,
diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index b754220839..fc20932110 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -60,8 +60,7 @@ ROMS += $(ROMBIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) endif .PHONY: all -all: acpi - $(MAKE) hvmloader +all: hvmloader .PHONY: acpi acpi: @@ -73,12 +72,15 @@ smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\"" ACPI_PATH = ../../libacpi DSDT_FILES = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c ACPI_OBJS = $(patsubst %.c,%.o,$(DSDT_FILES)) build.o static_tables.o -$(ACPI_OBJS): CFLAGS += -I. -DLIBACPI_STDUTILS=\"$(CURDIR)/util.h\" +$(ACPI_OBJS): CFLAGS += -iquote . -DLIBACPI_STDUTILS=\"$(CURDIR)/util.h\" CFLAGS += -I$(ACPI_PATH) vpath build.c $(ACPI_PATH) vpath static_tables.c $(ACPI_PATH) OBJS += $(ACPI_OBJS) +$(DSDT_FILES): acpi +build.o: $(DSDT_FILES) + hvmloader: $(OBJS) hvmloader.lds $(LD) $(LDFLAGS_DIRECT) -N -T hvmloader.lds -o $@ $(OBJS) @@ -87,21 +89,21 @@ roms.inc: $(ROMS) ifneq ($(ROMBIOS_ROM),) echo "#ifdef ROM_INCLUDE_ROMBIOS" >> $@.new - sh ../../misc/mkhex rombios $(ROMBIOS_ROM) >> $@.new + $(SHELL) $(XEN_ROOT)/tools/misc/mkhex rombios $(ROMBIOS_ROM) >> $@.new echo "#endif" >> $@.new endif ifneq ($(STDVGA_ROM),) echo "#ifdef ROM_INCLUDE_VGABIOS" >> $@.new - sh ../../misc/mkhex vgabios_stdvga $(STDVGA_ROM) >> $@.new + $(SHELL) $(XEN_ROOT)/tools/misc/mkhex vgabios_stdvga $(STDVGA_ROM) >> $@.new echo "#endif" >> $@.new endif ifneq ($(CIRRUSVGA_ROM),) echo "#ifdef ROM_INCLUDE_VGABIOS" >> $@.new - sh ../../misc/mkhex vgabios_cirrusvga $(CIRRUSVGA_ROM) >> $@.new + $(SHELL) $(XEN_ROOT)/tools/misc/mkhex vgabios_cirrusvga $(CIRRUSVGA_ROM) >> $@.new echo "#endif" >> $@.new endif - mv $@.new $@ + mv -f $@.new $@ .PHONY: clean clean:
Setup proper dependencies with libacpi so we don't need to run "make hvmloader" in the "all" target. ("build.o" new prerequisite isn't exactly proper but a side effect of building the $(DSDT_FILES) is to generate the "ssdt_*.h" needed by "build.o".) Make use if "-iquote" instead of a plain "-I". For "roms.inc" target, use "$(SHELL)" instead of plain "sh". And use full path to "mkhex" instead of a relative one. Lastly, add "-f" flag to "mv", in case the target already exist. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- tools/firmware/hvmloader/Makefile | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)