Hi, Thomas > From: Thomas Renninger [mailto:trenn@xxxxxxx] > Sent: Monday, April 07, 2014 9:17 PM > > Not sure why such a huge Makefile is needed to compile one file... The huge Makefile is generated to include release automation of ACPICA's acpidump. It's no longer 1 file, but bunch of files that originally can only be found in ACPICA repo. I noticed that Rafael had merged the 20140325 ACPICA release into the bleeding-edge branch. So you need to rebase this series on top of linux-pm/bleeding-edge. > Anyway, I splitted up general variables/info and kept them in main > tools/power/acpi/Makefile > And created a new acpidump specific Makefile inside: > tools/power/acpi/tools/acpidump/Makefile > > While this already is a cleanup worth by itself, I will add a new > tool making use of this new structure with a follow up submit. > > Signed-off-by: Thomas Renninger <trenn@xxxxxxx> > --- > tools/power/acpi/Makefile | 94 +++++++++--------------------- > tools/power/acpi/tools/acpidump/Makefile | 27 +++++++++ > 2 files changed, 55 insertions(+), 66 deletions(-) > create mode 100644 tools/power/acpi/tools/acpidump/Makefile > > diff --git a/tools/power/acpi/Makefile b/tools/power/acpi/Makefile > index c2c0f20..d97dada 100644 > --- a/tools/power/acpi/Makefile > +++ b/tools/power/acpi/Makefile > @@ -8,28 +8,19 @@ > # as published by the Free Software Foundation; version 2 > # of the License. > > -OUTPUT=./ > -ifeq ("$(origin O)", "command line") > - OUTPUT := $(O)/ > -endif > - > -ifneq ($(OUTPUT),) > -# check that the output directory actually exists > -OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) > -$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) > -endif > +SUBDIRS = tools/acpidump > > # --- CONFIGURATION BEGIN --- > > # Set the following to `true' to make a unstripped, unoptimized > # binary. Leave this set to `false' for production use. > -DEBUG ?= true > +export DEBUG ?= true > > # make the build silent. Set this to something else to make it noisy again. > V ?= false > > # Prefix to the directories we're installing to > -DESTDIR ?= > +export DESTDIR ?= > > # --- CONFIGURATION END --- > > @@ -37,39 +28,37 @@ DESTDIR ?= > # do not need to be changed. Please note that DESTDIR is > # added in front of any of them > > -bindir ?= /usr/bin > -sbindir ?= /usr/sbin > -mandir ?= /usr/man > +export bindir ?= /usr/bin > +export sbindir ?= /usr/sbin > +export mandir ?= /usr/man > > # Toolchain: what tools do we use, and what options do they need: > > -INSTALL = /usr/bin/install -c > -INSTALL_PROGRAM = ${INSTALL} > -INSTALL_DATA = ${INSTALL} -m 644 > -INSTALL_SCRIPT = ${INSTALL_PROGRAM} > +export INSTALL = /usr/bin/install -c > +export INSTALL_PROGRAM = ${INSTALL} > +export INSTALL_DATA = ${INSTALL} -m 644 > +export INSTALL_SCRIPT = ${INSTALL_PROGRAM} > > # If you are running a cross compiler, you may want to set this > # to something more interesting, like "arm-linux-". If you want > # to compile vs uClibc, that can be done here as well. > -CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc- > -CC = $(CROSS)gcc > -LD = $(CROSS)gcc > -STRIP = $(CROSS)strip > -HOSTCC = gcc > +export CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc- > +export CC = $(CROSS)gcc > +export LD = $(CROSS)gcc > +export STRIP = $(CROSS)strip > +export HOSTCC = gcc > > # check if compiler option is supported > cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -x c /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;} > > # use '-Os' optimization if available, else use -O2 > -OPTIMIZATION := $(call cc-supports,-Os,-O2) > +export OPTIMIZATION := $(call cc-supports,-Os,-O2) > > -WARNINGS := -Wall > +export WARNINGS := -Wall > WARNINGS += $(call cc-supports,-Wstrict-prototypes) > WARNINGS += $(call cc-supports,-Wdeclaration-after-statement) > > -KERNEL_INCLUDE := ../../../include > -CFLAGS += -D_LINUX -DDEFINE_ALTERNATE_TYPES -I$(KERNEL_INCLUDE) > -CFLAGS += $(WARNINGS) > +export CFLAGS += $(WARNINGS) > > ifeq ($(strip $(V)),false) > QUIET=@ > @@ -83,52 +72,25 @@ export QUIET ECHO > # if DEBUG is enabled, then we do not strip or optimize > ifeq ($(strip $(DEBUG)),true) > CFLAGS += -O1 -g -DDEBUG > - STRIPCMD = /bin/true -Since_we_are_debugging > + export STRIPCMD = /bin/true -Since_we_are_debugging > else > CFLAGS += $(OPTIMIZATION) -fomit-frame-pointer > - STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment > + export STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment > endif > > -# --- ACPIDUMP BEGIN --- > - > -vpath %.c \ > - tools/acpidump The "vpath" is required by the new acpidump. As the new utility will reuse source files in the drivers/acpi/acpica folder to find ACPICA source code shared with this utility. > - > -DUMP_OBJS = \ > - acpidump.o > - > -DUMP_OBJS := $(addprefix $(OUTPUT)tools/acpidump/,$(DUMP_OBJS)) > +all: $(SUBDIRS) > + $(foreach dir,$(SUBDIRS),make -C $(dir);) > > -$(OUTPUT)acpidump: $(DUMP_OBJS) > - $(ECHO) " LD " $@ > - $(QUIET) $(LD) $(CFLAGS) $(LDFLAGS) $(DUMP_OBJS) -L$(OUTPUT) -o $@ > - $(QUIET) $(STRIPCMD) $@ > - > -$(OUTPUT)tools/acpidump/%.o: %.c > - $(ECHO) " CC " $@ > - $(QUIET) $(CC) -c $(CFLAGS) -o $@ $< > - > -# --- ACPIDUMP END --- > - > -all: $(OUTPUT)acpidump > - echo $(OUTPUT) > > clean: > - -find $(OUTPUT) \( -not -type d \) -and \( -name '*~' -o -name '*.[oas]' \) -type f -print \ > + -find . \( -not -type d \) -and \( -name '*~' -o -name '*.[oas]' \) -type f -print \ > | xargs rm -f > - -rm -f $(OUTPUT)acpidump > - > -install-tools: > - $(INSTALL) -d $(DESTDIR)${sbindir} > - $(INSTALL_PROGRAM) $(OUTPUT)acpidump $(DESTDIR)${sbindir} > - > -install-man: > - $(INSTALL_DATA) -D man/acpidump.8 $(DESTDIR)${mandir}/man8/acpidump.8 > + $(foreach dir,$(SUBDIRS),make -C $(dir) clean;) > > -install: all install-tools install-man > +install: > + $(foreach dir,$(SUBDIRS),make -C $(dir) install;) > > uninstall: > - - rm -f $(DESTDIR)${sbindir}/acpidump > - - rm -f $(DESTDIR)${mandir}/man8/acpidump.8 > + $(foreach dir,$(SUBDIRS),make -C $(dir) uninstall;) > > -.PHONY: all utils install-tools install-man install uninstall clean > +.PHONY: all install uninstall clean > diff --git a/tools/power/acpi/tools/acpidump/Makefile b/tools/power/acpi/tools/acpidump/Makefile The Makefile is put under tools/power/acpi because ACPICA release automation will put some shared files into "common" and "os_specific" folder. If you are going to move the build commands into a tools/power/acpi/tools/acpidump/Makefile, you need to test using the recent upstream branch that contains the acpidump release. > new file mode 100644 > index 0000000..4d0f993 > --- /dev/null > +++ b/tools/power/acpi/tools/acpidump/Makefile > @@ -0,0 +1,27 @@ > +KERNEL_INCLUDE := ../../../../../include > +CFLAGS += -D_LINUX -DACPI_USE_SYSTEM_INTTYPES=0 -DDEFINE_ALTERNATE_TYPES -I$(KERNEL_INCLUDE) > + > +acpidump: acpidump.o > + $(ECHO) " LD " $@ > + $(QUIET) $(LD) $(CFLAGS) $(LDFLAGS) $< -o $@ > + $(QUIET) $(STRIPCMD) $@ > + > +%.o: %.c > + $(ECHO) " CC " $@ > + $(QUIET) $(CC) -c $(CFLAGS) -o $@ $< I think this breaks new acpidump compilation. vpath is needed as drivers/acpi/acpica, tools/power/acpi/common, tools/power/acpi/os_specific source files need to be compiled. > + > +all: acpidump > + > +install: > + $(INSTALL) -d $(DESTDIR)${sbindir} > + $(INSTALL_PROGRAM) acpidump $(DESTDIR)${sbindir} > + $(INSTALL_DATA) -D ../../man/acpidump.8 $(DESTDIR)${mandir}/man8/acpidump.8 > + > +uninstall: > + - rm -f $(DESTDIR)${sbindir}/acpidump > + - rm -f $(DESTDIR)${mandir}/man8/acpidump.8 > + > +clean: > + -rm -f $(OUTPUT)acpidump > + > +.PHONY: all install uninstall > -- > 1.7.6.1 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html