[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 10/21] acpi/hvmloader: Link ACPI object files directly
ACPI sources will be available to various component which will build them according to their own rules. ACPI's Makefile will only generate necessary source files. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- Changes in v4: * Added a suffix to iasl's -p option to work around a bug in older iasl versions where it drops everything after rightmost '.'. .gitignore | 8 +++--- tools/firmware/hvmloader/Makefile | 11 +++++++- tools/firmware/hvmloader/acpi/Makefile | 48 ++++++++++++++++------------------ 3 files changed, 37 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index 6dee857..5720e0f 100644 --- a/.gitignore +++ b/.gitignore @@ -127,13 +127,13 @@ tools/firmware/*bios/*bios*.txt tools/firmware/etherboot/gpxe/* tools/firmware/extboot/extboot.img tools/firmware/extboot/signrom -tools/firmware/hvmloader/acpi/mk_dsdt -tools/firmware/hvmloader/acpi/dsdt*.c -tools/firmware/hvmloader/acpi/dsdt_*cpu*.asl -tools/firmware/hvmloader/acpi/ssdt_*.h +tools/firmware/hvmloader/dsdt*.c +tools/firmware/hvmloader/dsdt_*.asl tools/firmware/hvmloader/hvmloader +tools/firmware/hvmloader/mk_dsdt tools/firmware/hvmloader/roms.h tools/firmware/hvmloader/roms.inc +tools/firmware/hvmloader/ssdt_*.h tools/firmware/rombios/BIOS-bochs-[^/]* tools/firmware/rombios/_rombios[^/]*_.c tools/firmware/rombios/rombios[^/]*.s diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index 23b0a58..2565832 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -20,6 +20,7 @@ XEN_ROOT = $(CURDIR)/../../.. include $(XEN_ROOT)/tools/firmware/Rules.mk +export ACPI_BUILD_DIR=$(CURDIR) SUBDIRS := acpi # The HVM loader is started in 32-bit mode at the address below: @@ -76,7 +77,15 @@ all: subdirs-all rombios.o: roms.inc smbios.o: CFLAGS += -D__SMBIOS_DATE__="\"$(SMBIOS_REL_DATE)\"" -hvmloader: $(OBJS) acpi/acpi.a +ACPI_PATH = acpi +ACPI_FILES = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c +ACPI_OBJS = $(patsubst %.c,%.o,$(ACPI_FILES)) build.o static_tables.o +$(ACPI_OBJS): CFLAGS += -I$(ACPI_PATH) -I. +vpath build.c $(ACPI_PATH) +vpath static_tables.c $(ACPI_PATH) +OBJS += $(ACPI_OBJS) + +hvmloader: $(OBJS) $(LD) $(LDFLAGS_DIRECT) -N -Ttext $(LOADADDR) -o hvmloader.tmp $^ $(OBJCOPY) hvmloader.tmp hvmloader rm -f hvmloader.tmp diff --git a/tools/firmware/hvmloader/acpi/Makefile b/tools/firmware/hvmloader/acpi/Makefile index c6382bd..4045ea7 100644 --- a/tools/firmware/hvmloader/acpi/Makefile +++ b/tools/firmware/hvmloader/acpi/Makefile @@ -15,41 +15,45 @@ XEN_ROOT = $(CURDIR)/../../../.. include $(XEN_ROOT)/tools/firmware/Rules.mk -C_SRC-$(GPL) = build.c dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c -C_SRC = build.c static_tables.c $(C_SRC-y) -OBJS = $(patsubst %.c,%.o,$(C_SRC)) +# Used as a workaround for a bug in some older iasl versions where +# the tool will ignore everything after last '.' in the path ('-p' argument) +TMP_SUFFIX = tmp__ -CFLAGS += $(CFLAGS_xeninclude) +MK_DSDT = $(ACPI_BUILD_DIR)/mk_dsdt + +C_SRC-$(GPL) = dsdt_anycpu.c dsdt_15cpu.c dsdt_anycpu_qemu_xen.c +C_SRC = $(addprefix $(ACPI_BUILD_DIR)/, $(C_SRC-y)) +H_SRC = $(addprefix $(ACPI_BUILD_DIR)/, ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h) vpath iasl $(PATH) -all: acpi.a +all: $(C_SRC) $(H_SRC) -ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl - iasl -vs -p $* -tc $< - sed -e 's/AmlCode/$*/g' $*.hex >$@ - rm -f $*.hex $*.aml +$(H_SRC): $(ACPI_BUILD_DIR)/%.h: %.asl iasl + iasl -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $< + sed -e 's/AmlCode/$*/g' $(ACPI_BUILD_DIR)/$*.hex >$@ + rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex) -mk_dsdt: mk_dsdt.c +$(MK_DSDT): mk_dsdt.c $(HOSTCC) $(HOSTCFLAGS) $(CFLAGS_xeninclude) -o $@ mk_dsdt.c ifeq ($(GPL),y) -dsdt_anycpu_qemu_xen.asl: gpl/dsdt.asl dsdt_acpi_info.asl mk_dsdt +$(ACPI_BUILD_DIR)/dsdt_anycpu_qemu_xen.asl: gpl/dsdt.asl $(MK_DSDT) awk 'NR > 1 {print s} {s=$$0}' $< > $@ cat dsdt_acpi_info.asl >> $@ - ./mk_dsdt --debug=$(debug) --dm-version qemu-xen >> $@ + $(MK_DSDT) --debug=$(debug) --dm-version qemu-xen >> $@ # NB. awk invocation is a portable alternative to 'head -n -1' -dsdt_%cpu.asl: gpl/dsdt.asl dsdt_acpi_info.asl mk_dsdt +$(ACPI_BUILD_DIR)/dsdt_%cpu.asl: gpl/dsdt.asl $(MK_DSDT) awk 'NR > 1 {print s} {s=$$0}' $< > $@ cat dsdt_acpi_info.asl >> $@ - ./mk_dsdt --debug=$(debug) --maxcpu $* >> $@ + $(MK_DSDT) --debug=$(debug) --maxcpu $* >> $@ endif -$(filter dsdt_%.c,$(C_SRC)): %.c: iasl %.asl - iasl -vs -p $* -tc $*.asl - sed -e 's/AmlCode/$*/g' $*.hex >$@ +$(C_SRC): $(ACPI_BUILD_DIR)/%.c: iasl $(ACPI_BUILD_DIR)/%.asl + iasl -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $(ACPI_BUILD_DIR)/$*.asl + sed -e 's/AmlCode/$*/g' $(ACPI_BUILD_DIR)/$*.hex >$@ echo "int $*_len=sizeof($*);" >>$@ - rm -f $*.aml $*.hex + rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex) iasl: @echo @@ -59,14 +63,8 @@ iasl: @echo @exit 1 -build.o: ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h - -acpi.a: $(OBJS) - $(AR) rc $@ $(OBJS) - clean: - rm -rf *.a *.o $(IASL_VER) $(IASL_VER).tar.gz $(DEPS) - rm -rf ssdt_*.h dsdt*.c *~ *.aml *.hex mk_dsdt dsdt_*cpu*.asl + rm -fr $(C_SRC) $(H_SRC) $(MK_DSDT) $(patsubst %.c,%.asl,$(C_SRC)) distclean: clean -- 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |