summaryrefslogtreecommitdiff
path: root/Makefile.in
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2007-12-13 16:18:53 +0900
committerSimon Horman <horms@verge.net.au>2007-12-19 14:50:07 +0900
commitadf85cbc1756e56c1f52f56235a3c08b3c5b8e05 (patch)
tree480e2d89501d7e51f3c7abf3291930932c3a3371 /Makefile.in
parentac12ceecf15f637e024e6be9a030497e732a74eb (diff)
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 <jk@ozlabs.org> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in320
1 files changed, 320 insertions, 0 deletions
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