1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
ifndef $(COMMON_INCLUDED)
COMMON_INCLUDED = true
# Global definitions
# The variable "DISTRELEASE" should be overwritten in rpm spec files with:
# "make DISTRELEASE=%{release}" and "make install DISTRELEASE=%{release}"
VERSION = 1
RELEASE = 25
PATCHLEVEL = 0
DISTRELEASE = build-$(shell date +%Y%m%d)
S390_TOOLS_RELEASE = $(VERSION).$(RELEASE).$(PATCHLEVEL)-$(DISTRELEASE)
export S390_TOOLS_RELEASE
reldir = $(subst $(shell cd -P $(dir $(filter %common.mak,$(MAKEFILE_LIST))); \
pwd)/,,$(CURDIR))
rootdir= $(dir $(filter %common.mak,$(MAKEFILE_LIST)))
export S390_TEST_LIB_PATH=$(rootdir)/s390-tools-testsuite/lib
# Cross Compiling Support
CROSS_COMPILE =
AS = $(call echocmd," AS ",/$@)$(CROSS_COMPILE)as
LINK = $(call echocmd," LINK ",/$@)$(CROSS_COMPILE)gcc
LD = $(call echocmd," LD ",/$@)$(CROSS_COMPILE)ld
CC = $(call echocmd," CC ",/$@)$(CROSS_COMPILE)gcc
LINKXX = $(call echocmd," LINKXX ",/$@)$(CROSS_COMPILE)g++
CXX = $(call echocmd," CXX ",/$@)$(CROSS_COMPILE)g++
CPP = $(call echocmd," CPP ",/$@)$(CROSS_COMPILE)gcc -E
AR = $(call echocmd," AR ",/$@)$(CROSS_COMPILE)ar
NM = $(call echocmd," NM ",/$@)$(CROSS_COMPILE)nm
STRIP = $(call echocmd," STRIP ",/$@)$(CROSS_COMPILE)strip
OBJCOPY = $(call echocmd," OBJCOPY ",/$@)$(CROSS_COMPILE)objcopy
OBJDUMP = $(call echocmd," OBJDUMP ",/$@)$(CROSS_COMPILE)objdump
RUNTEST = $(call echocmd," RUNTEST ",/$@)$(S390_TEST_LIB_PATH)/s390_runtest
CHECK = sparse
CHECKTOOL = $(call echocmd," CHECK ",/$@)$(CHECK)
CAT = $(call echocmd," CAT ",/$@)cat
SED = $(call echocmd," SED ",/$@)sed
INSTALL = install
INSTALL_DATA = ${INSTALL} -m 644
CP = cp
ifneq ("${V}","1")
MAKEFLAGS += --quiet
echocmd=echo $1$(call reldir)$2;
RUNTEST += > /dev/null 2>&1
else
echocmd=
endif
ifeq ("${W}","1")
WARNFLAGS = -W -Wall -Wextra
else
WARNFLAGS = -W -Wall
endif
# Support alternate install root
INSTROOT =
USRSBINDIR = $(INSTROOT)/usr/sbin
USRBINDIR = $(INSTROOT)/usr/bin
BINDIR = $(INSTROOT)/sbin
LIBDIR = $(INSTROOT)/lib
SYSCONFDIR = $(INSTROOT)/etc
MANDIR = $(INSTROOT)/usr/share/man
TOOLS_DATADIR = $(INSTROOT)/usr/share/s390-tools
TOOLS_LIBDIR = $(INSTROOT)/lib/s390-tools
ZFCPDUMP_DIR = $(INSTROOT)/lib/s390-tools/zfcpdump
# Systemd support files are installed only if a directory is specified
# for SYSTEMDSYSTEMUNITDIR
SYSTEMDSYSTEMUNITDIR =
INSTDIRS = $(USRSBINDIR) $(USRBINDIR) $(BINDIR) $(LIBDIR) $(MANDIR) \
$(SYSCONFDIR) $(TOOLS_LIBDIR) $(TOOLS_DATADIR) \
$(ZFCPDUMP_DIR) $(SYSTEMDSYSTEMUNITDIR)
OWNER = $(shell id -un)
GROUP = $(shell id -gn)
export INSTROOT BINDIR LIBDIR MANDIR OWNER GROUP
# Special defines for zfcpdump
ZFCPDUMP_PART_IMAGE = zfcpdump_part.image
ZFCPDUMP_PART_RD = zfcpdump_part.rd
export ZFCPDUMP_DIR ZFCPDUMP_PART_IMAGE ZFCPDUMP_PART_RD
CFLAGS = $(WARNFLAGS) -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE) \
-DS390_TOOLS_LIBDIR=$(TOOLS_LIBDIR) \
-DS390_TOOLS_DATADIR=$(TOOLS_DATADIR) \
-DS390_TOOLS_SYSCONFDIR=$(SYSCONFDIR)
CXXFLAGS = $(WARNFLAGS) -DS390_TOOLS_RELEASE=$(S390_TOOLS_RELEASE) \
-DS390_TOOLS_LIBDIR=$(TOOLS_LIBDIR) \
-DS390_TOOLS_DATADIR=$(TOOLS_DATADIR) \
-DS390_TOOLS_SYSCONFDIR=$(SYSCONFDIR)
# make G=1
# Compile tools so that gcov can be used to collect code coverage data.
# See the gcov man page for details.
ifeq ("${G}","1")
CFLAGS := $(filter-out -O%,$(CFLAGS)) --coverage
CXXFLAGS := $(filter-out -O%,$(CXXFLAGS)) --coverage
LDFLAGS += --coverage
endif
export AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP INSTALL CFLAGS CXXFLAGS LDFLAGS
# Overwrite implicite makefile rules for having nice compile output
%.o: %.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
ifeq ("${C}","1")
$(CHECKTOOL) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
endif
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
%: %.o
$(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@
all:
# rules for shared files
# needed to ensure that these files are build with their own build
# flags even if they are build from external directories
$(rootdir)/libutil/util_part.o:
make -C $(rootdir)/libutil/ util_part.o
$(rootdir)/libutil/util_list.o:
make -C $(rootdir)/libutil/ util_list.o
$(rootdir)/libutil/util_proc.o:
make -C $(rootdir)/libutil/ util_proc.o
$(rootdir)/libvtoc/vtoc.o:
make -C $(rootdir)/libvtoc/ vtoc.o
$(rootdir)/zipl/boot/data.o:
make -C $(rootdir)/zipl/boot/ data.o
install_dirs:
$(INSTALL) -d $(INSTDIRS)
for i in 1 2 3 4 5 6 7 8; do \
$(INSTALL) -d $(MANDIR)/man$$i; \
done
install_echo:
$(call echocmd," INSTALL ")
install: install_echo install_dirs
clean_echo:
$(call echocmd," CLEAN ")
clean_gcov:
rm -f *.gcda *.gcno *.gcov
clean: clean_echo clean_gcov
endif
|