mirror of
https://github.com/meizu-m86/kexec-tools-arm64
synced 2025-11-04 05:46:10 +08:00
This patch provides support for the new Power PC litte endian (LE) mode. The LE mode only differs in the way the instructions and data are stored in memory thus there is no real need to duplicate the ppc64 code. However some compilation's options, especially for the purgatory, differ between little and big endian mode's support. A new "SUBARCH" build variable is introduced which is currently only used for PPC64 to specify the endianness. Another set of changes in this patch is fixing minor endianess issues in the ppc64 code and fix an alignment issue raised on Power7 little endian mode. Among these fixes, the check on the kernel binary endianess is removed, since we can imagine kexecing a LE kernel from a BE environment, as far as the specified root filesystem and initrd file are containing the right binaries. This patch depends on the patch "kexec/ppc64: use common architecture fs2dt.c file" I sent earlier on the kexec mailing list. Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au>
328 lines
8.9 KiB
Makefile
328 lines
8.9 KiB
Makefile
# 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@
|
|
datarootdir = @datarootdir@
|
|
sysconfdir = @sysconfdir@
|
|
sharedstatedir = @sharedstatedir@
|
|
localstatedir = @localstatedir@
|
|
libdir = @libdir@
|
|
infodir = @infodir@
|
|
mandir = @mandir@
|
|
includedir = @includedir@
|
|
|
|
|
|
# The target architecture
|
|
ARCH = @ARCH@
|
|
SUBARCH = @SUBARCH@
|
|
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_LD = @TARGET_LD@
|
|
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/ $($(ARCH)_CPPFLAGS)
|
|
CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes
|
|
PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@
|
|
ASFLAGS = @ASFLAGS@ $($(ARCH)_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@
|
|
STRIP = @STRIP@
|
|
|
|
|
|
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)
|
|
|
|
all: targets
|
|
|
|
# generic build rules
|
|
%.o: %.c
|
|
@$(MKDIR) -p $(@D)
|
|
$(COMPILE.c) -MD -o $@ $<
|
|
|
|
%.o: %.S
|
|
@$(MKDIR) -p $(@D)
|
|
$(COMPILE.S) -MD -o $@ $<
|
|
|
|
# collect objects to be removed in 'make clean'
|
|
clean =
|
|
|
|
dist = AUTHORS COPYING INSTALL News TODO Makefile.in configure.ac configure \
|
|
kexec-tools.spec.in config/
|
|
|
|
# utility function for converting a list of files (with extension) to
|
|
# file.o (or file.d) format.
|
|
objify = $(addsuffix .o, $(basename $(1)))
|
|
depify = $(addsuffix .d, $(basename $(1)))
|
|
|
|
# Documentation
|
|
#
|
|
include $(srcdir)/doc/Makefile
|
|
|
|
# Headers
|
|
#
|
|
include $(srcdir)/include/Makefile
|
|
|
|
# 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
|
|
|
|
# vmcore-dmesg (read dmesg from a vmcore)
|
|
#
|
|
include $(srcdir)/vmcore-dmesg/Makefile
|
|
|
|
#
|
|
# kexec_test (test program)
|
|
#
|
|
include $(srcdir)/kexec_test/Makefile
|
|
|
|
SPEC=$(PACKAGE_NAME).spec
|
|
GENERATED_SRCS:= $(SPEC)
|
|
TARBALL=$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar
|
|
TARBALL.gz=$(TARBALL).gz
|
|
SRCS:= $(dist)
|
|
PSRCS:=$(foreach s, $(SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s))
|
|
PGSRCS:=$(foreach s, $(GENERATED_SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s))
|
|
|
|
MAN_PAGES:=$(KEXEC_MANPAGE) $(KDUMP_MANPAGE) $(VMCORE_DMESG_MANPAGE)
|
|
BINARIES_i386:=$(KEXEC_TEST)
|
|
BINARIES_x86_64:=$(KEXEC_TEST)
|
|
BINARIES:=$(KEXEC) $(KDUMP) $(VMCORE_DMESG) $(BINARIES_$(ARCH))
|
|
|
|
TARGETS:=$(BINARIES) $(MAN_PAGES)
|
|
|
|
targets: $(TARGETS)
|
|
|
|
Makefile: Makefile.in config.status
|
|
./config.status
|
|
|
|
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)
|
|
@echo $(dist)
|
|
|
|
$(TARBALL.gz): $(TARBALL)
|
|
gzip -c < $^ > $@
|
|
|
|
rpm: $(TARBALL.gz)
|
|
unset MAKEFLAGS MAKELEVEL;
|
|
$(RPMBUILD) -ta $(TARBALL.gz)
|
|
|
|
$(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)
|
|
@echo STRIP=$(STRIP)
|
|
|
|
clean:
|
|
$(RM) -f $(clean)
|
|
$(RM) -rf build
|
|
$(RM) -f $(TARBALL) $(TARBALL.gz)
|
|
|
|
distclean: dist-clean
|
|
|
|
dist-clean: clean
|
|
$(RM) -f config.log config.status config.cache Makefile include/config.h
|
|
$(RM) -f include/config.h.in configure $(SPEC)
|
|
$(RM) -rf autom4te.cache
|
|
|
|
install: $(TARGETS)
|
|
for file in $(TARGETS) ; do \
|
|
if test `$(DIRNAME) $$file` = "$(SBINDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(sbindir)/; \
|
|
$(INSTALL) -m 755 $$file $(DESTDIR)/$(sbindir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(BINDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(bindir)/; \
|
|
$(INSTALL) -m 755 $$file $(DESTDIR)/$(bindir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(LIBEXECDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(libexecdir)/; \
|
|
$(INSTALL) -m 755 $$file $(DESTDIR)/$(libexecdir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(DATADIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(datadir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(datadir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(SYSCONFDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(sysconfdir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(sysconfdir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(SHAREDSTATEDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(sharedstatedir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(sharedstatedir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(LOCALSTATEDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(localstatedir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(localstatedir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(LIBDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(libdir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(libdir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(INFODIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(infodir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(infodir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN1DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man1; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man1; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN2DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man2; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man2; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN3DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man3/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man3/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN4DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man4/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man4/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN5DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man5/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man5/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN6DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man6/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man6/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN7DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man7/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man7/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(MAN8DIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(mandir)/man8/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(mandir)/man8/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(INCLUDEDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(includedir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(includedir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(PKGDATADIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(pkgdatadir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(pkgdatadir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(PKGLIBDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(pkglibdir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(pkglibdir)/; \
|
|
fi; \
|
|
if test `$(DIRNAME) $$file` = "$(PKGINCLUDEDIR)" ; then \
|
|
$(MKDIR) -p $(DESTDIR)/$(pkgincludedir)/; \
|
|
$(INSTALL) -m 644 $$file $(DESTDIR)/$(pkgincludedir)/; \
|
|
fi; \
|
|
done
|
|
|
|
.PHONY: echo install all targets clean dist-clean distclean \
|
|
maintainer-clean maintainerclean tarball rpm
|