From adf85cbc1756e56c1f52f56235a3c08b3c5b8e05 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Thu, 13 Dec 2007 16:18:53 +0900 Subject: Build system simplification/standardisation This change makes kexec-tools work more like a standard configure-make- make-install-type project: * Remove $(OBJDIR) stuff. To do an out-of-tree build, just configure from a different directory. * Use the implicit Makefile rules more, and just edit the compiler flags for specific targets. * Simplify compiler/linker flags - no need for EXTRA_* * Add TARGET_CC, and improve checks for BUILD_CC too. * Set arch-specific flags in arch-specific makefiles, not conditional on $(ARCH). * Generate dependency files in the main compile, rather than as a separate step. * Don't #include sha256.c, but re-build it into the purgatory. Still a work-in-progress. Signed-off-by: Jeremy Kerr Signed-off-by: Simon Horman --- Makefile.in | 320 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 Makefile.in (limited to 'Makefile.in') diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..b4b293a --- /dev/null +++ b/Makefile.in @@ -0,0 +1,320 @@ +# Hey Emacs this is a -*- makefile-*- + +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ + + +# The target architecture +ARCH = @ARCH@ +OBJDIR = @OBJDIR@ +target = @target@ +host = @host@ + +# Compiler for building kexec +CC = @CC@ +CPP = @CPP@ +LD = @LD@ +AS = @AS@ +OBJCOPY = @OBJCOPY@ +AR = @AR@ + +# C compiler for binaries to run during the build +BUILD_CC = @BUILD_CC@ +BUILD_CFLAGS = @BUILD_CFLAGS@ +TARGET_CC = @TARGET_CC@ +TARGET_CFLAGS = @TARGET_CFLAGS@ + + +# Base compiler flags. These are extended by the subcomponent-Makefiles +# where necessary. +CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \ + -Iinclude/ +CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes +ASFLAGS = @ASFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ + +# Utilities called by the makefiles +INSTALL = @INSTALL@ +MKDIR = @MKDIR@ +RM = @RM@ +CP = @CP@ +LN = @LN@ +TAR = @TAR@ +RPMBUILD = @RPMBUILD@ +SED = @SED@ +FIND = @FIND@ +XARGS = @XARGS@ +DIRNAME = @DIRNAME@ + + +pkgdatadir = $(datadir)/$(PACKAGE_NAME) +pkglibdir = $(libdir)/$(PACKAGE_NAME) +pkgincludedir = $(includedir)/$(PACKAGE_NAME) + +# You can specify DESTDIR on the command line to do a add +# a prefix to the install so it doesn't really happen +# Useful for building binary packages +DESTDIR = + +srcdir = @srcdir@ +VPATH = .:$(srcdir) + +# install paths +BUILD_PREFIX:=build +SBINDIR=$(BUILD_PREFIX)/sbin +BINDIR=$(BUILD_PREFIX)/bin +LIBEXECDIR=$(BUILD_PREFIX)/libexec +DATADIR=$(BUILD_PREFIX)/share +SYSCONFDIR=$(BUILD_PREFIX)/etc +SHAREDSTATEDIR=$(BUILD_PREFIX)/com +LOCALSTATEDIR=$(BUILD_PREFIX)/var +LIBDIR=$(BUILD_PREFIX)/lib +INFODIR=$(BUILD_PREFIX)/info +MANDIR=$(BUILD_PREFIX)/man +MAN1DIR=$(MANDIR)/man1 +MAN2DIR=$(MANDIR)/man2 +MAN3DIR=$(MANDIR)/man3 +MAN4DIR=$(MANDIR)/man4 +MAN5DIR=$(MANDIR)/man5 +MAN6DIR=$(MANDIR)/man6 +MAN7DIR=$(MANDIR)/man7 +MAN8DIR=$(MANDIR)/man8 +INCLUDEDIR=$(BUILD_PREFIX)/include + +PKGDATADIR=$(DATADIR)/$(PACKAGE_NAME) +PKGLIBDIR=$(LIBDIR)/$(PACKAGE_NAME) +PKGINCLUDEIR=$(INCLUDEDIR)/$(PACKAGE_NAME) + +MAN_PAGES:= kexec/kexec.8 +MAN_PAGES+= kdump/kdump.8 +BINARIES_i386:= $(SBINDIR)/kexec $(PKGLIBDIR)/kexec_test +BINARIES_x86_64:=$(SBINDIR)/kexec $(PKGLIBDIR)/kexec_test +BINARIES:=$(SBINDIR)/kexec $(SBINDIR)/kdump $(BINARIES_$(ARCH)) + +TARGETS:=$(BINARIES) $(MAN_PAGES) + +all: $(TARGETS) + +# generic build rules +%.o: %.c + @$(MKDIR) -p $(@D) + $(COMPILE.c) -MD -o $@ $< + +%.o: %.S + @$(MKDIR) -p $(@D) + $(COMPILE.S) -MD -o $@ $< + +# Utility function library +# +include $(srcdir)/util_lib/Makefile + +# +# Stand alone utilities +# +include $(srcdir)/util/Makefile + +# +# purgatory (code between kernels) +# +include $(srcdir)/purgatory/Makefile + +# +# kexec (linux booting linux) +# +include $(srcdir)/kexec/Makefile + + +# kdump (read a crashdump from memory) +# +include $(srcdir)/kdump/Makefile + +# +# kexec_test (test program) +# +ifeq ($(ARCH),i386) +include $(srcdir)/kexec_test/Makefile +endif +ifeq ($(ARCH),x86_64) +include $(srcdir)/kexec_test/Makefile +endif + +SPEC=$(PACKAGE_NAME).spec +GENERATED_SRCS:= $(SPEC) +TARBALL=$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar +TARBALL.gz=$(TARBALL).gz +SRCS:= AUTHORS COPYING News TODO Makefile.in configure.ac \ + kexec-tools.spec.in config doc include kexec purgatory kexec_test \ + kdump util util_lib configure +PSRCS:=$(foreach s, $(SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s)) +PGSRCS:=$(foreach s, $(GENERATED_SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s)) + +Makefile: Makefile.in configure + $(srcdir)/configure + +configure: configure.ac + cd $(srcdir) && autoheader && autoconf && rm -rf autom4te.cache + +tarball: $(TARBALL.gz) + +$(TARBALL): $(SRCS) $(GENERATED_SRCS) + $(RM) -f $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(LN) -s $(srcdir) $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(TAR) -cf $@ $(PSRCS) + $(RM) -f $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(LN) -sf . $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(TAR) -rf $@ $(PGSRCS) + $(RM) -f $(PACKAGE_NAME)-$(PACKAGE_VERSION) + +$(TARBALL.gz): $(TARBALL) + gzip -c < $^ > $@ + +RPMDIR=rpm +rpm: $(TARBALL) + $(MKDIR) -p $(RPMDIR)/RPM $(RPMDIR)/SRPM $(RPMDIR)/BUILD \ + $(RPMDIR)/SPECS $(RPMDIR)/TMP $(RPMDIR)/SOURCES + unset MAKEFLAGS MAKELEVEL; \ + $(RPMBUILD) -ta \ + --define '_rpmdir $(RPMDIR)/RPM' \ + --define '_srcrpmdir $(RPMDIR)/SRPM' \ + --define '_builddir $(RPMDIR)/BUILD' \ + --define '_specdir $(RPMDIR)/SPECS' \ + --define '_tmppath $(RPMDIR)/TMP' \ + --define '_sourcedir $(RPMDIR)/SOURCES' \ + $(TARBALL) + +$(SPEC): kexec-tools.spec.in Makefile + $(SED) -e 's,^Version: $$,Version: $(PACKAGE_VERSION),' $< > $@ + +echo:: + @echo ARCH=$(ARCH) + @echo BINARIES=$(BINARIES) + @echo TARGETS=$(TARGETS) + @echo CC=$(CC) + @echo AR=$(AR) + @echo LD=$(LD) + +clean: + @$(FIND) $(OBJDIR) -name '*.o' -type f | $(XARGS) $(RM) rm -f + @$(RM) -rf rpm + @$(RM) -f config.log config.status config.cache + @$(RM) -f $(TARBALL) + +distclean: dist-clean + +dist-clean: clean + @$(RM) -rf $(OBJDIR) + @$(FIND) . -type f -name '*~' -o -name '*.orig' | $(XARGS) $(RM) -f + @$(RM) -f Makefile.conf + +maintainerclean: maintainer-clean + +maintainer-clean: dist-clean + @$(RM) -f $(GENERATED_SRCS) + + +install: $(TARGETS) + for file in $(TARGETS) ; do \ + if test `$(DIRNAME) $$file` = "$(SBINDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(sbindir)/; \ + $(INSTALL) -m 555 $$file $(DESTDIR)/$(sbindir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(BINDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(bindir)/; \ + $(INSTALL) -m 555 $$file $(DESTDIR)/$(bindir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(LIBEXECDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(libexecdir)/; \ + $(INSTALL) -m 555 $$file $(DESTDIR)/$(libexecdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(DATADIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(datadir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(datadir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(SYSCONFDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(sysconfdir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(sysconfdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(SHAREDSTATEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(sharedstatedir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(sharedstatedir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(LOCALSTATEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(localstatedir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(localstatedir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(LIBDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(libdir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(libdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(INFODIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(infodir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(infodir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN1DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man1; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man1; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN2DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man2; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man2; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN3DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man3/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man3/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN4DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man4/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man4/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN5DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man5/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man5/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN6DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man6/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man6/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN7DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man7/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man7/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(MAN8DIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(mandir)/man8/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(mandir)/man8/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(INCLUDEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(includedir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(includedir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(PKGDATADIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(pkgdatadir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(pkgdatadir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(PKGLIBDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(pkglibdir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(pkglibdir)/; \ + fi; \ + if test `$(DIRNAME) $$file` = "$(PKGINCLUDEDIR)" ; then \ + $(MKDIR) -p $(DESTDIR)/$(pkgincludedir)/; \ + $(INSTALL) -m 444 $$file $(DESTDIR)/$(pkgincludedir)/; \ + fi; \ + done + +.PHONY: echo install all clean dist-clean distclean maintainer-clean \ + maintainerclean tarball rpm -- cgit