|
1 | 1 | # |
2 | 2 | # SMC Tools - Shared Memory Communication Tools |
3 | 3 | # |
4 | | -# Copyright IBM Corp. 2017 |
| 4 | +# Copyright IBM Corp. 2016, 2017 |
5 | 5 | # |
6 | 6 | # All rights reserved. This program and the accompanying materials |
7 | 7 | # are made available under the terms of the Eclipse Public License v1.0 |
8 | 8 | # which accompanies this distribution, and is available at |
9 | 9 | # http://www.eclipse.org/legal/epl-v10.html |
10 | 10 | # |
11 | 11 |
|
12 | | -VERSION = 1 |
13 | | -RELEASE = 0 |
14 | | -PATCHLEVEL = 0 |
15 | | -SMC_TOOLS_RELASE = $(VERSION).$(RELEASE).$(PATCHLEVEL) |
| 12 | +SMC_TOOLS_RELEASE = 1.0.1 |
| 13 | +VER_MAJOR = $(shell echo $(SMC_TOOLS_RELEASE) | cut -d '.' -f 1) |
16 | 14 |
|
17 | | -ARCH = $(shell uname -m) |
18 | | -ifeq ($(ARCH),i686) |
19 | | -ARCH64=0 |
20 | | -else ifeq ($(ARCH),s390) |
21 | | -ARCH64=0 |
| 15 | +ARCHTYPE = $(shell uname -m) |
| 16 | +ARCH := $(shell getconf LONG_BIT) |
| 17 | + |
| 18 | +ifneq ("${V}","1") |
| 19 | + MAKEFLAGS += --quiet |
| 20 | + cmd = echo $1$2; |
22 | 21 | else |
23 | | -ARCH64=1 |
| 22 | + cmd = |
24 | 23 | endif |
25 | | - |
26 | | -DESTDIR ?= |
27 | | -INSTALLDIR = /usr |
28 | | -BINDIR = ${INSTALLDIR}/bin |
29 | | -MANDIR = ${INSTALLDIR}/share/man |
30 | | -OWNER = $(shell id -un) |
31 | | -GROUP = $(shell id -gn) |
32 | | -INSTALL_FLAGS_BIN = -g $(GROUP) -o $(OWNER) -m755 |
33 | | -INSTALL_FLAGS_MAN = -g $(GROUP) -o $(OWNER) -m644 |
34 | | - |
35 | | -STUFF_32BIT = 0 |
| 24 | +CCC = $(call cmd," CC ",$@)${CC} |
| 25 | +LINK = $(call cmd," LINK ",$@)${CC} |
| 26 | +GEN = $(call cmd," GEN ",$@)sed |
| 27 | +DESTDIR ?= |
| 28 | +PREFIX = /usr |
| 29 | +BINDIR = ${PREFIX}/bin |
| 30 | +MANDIR = ${PREFIX}/share/man |
| 31 | +OWNER = $(shell id -un) |
| 32 | +GROUP = $(shell id -gn) |
| 33 | +INSTALL_FLAGS_BIN = -g $(GROUP) -o $(OWNER) -m755 |
| 34 | +INSTALL_FLAGS_MAN = -g $(GROUP) -o $(OWNER) -m644 |
| 35 | + |
| 36 | +STUFF_32BIT = 0 |
36 | 37 | # |
37 | 38 | # Check that 31/32-bit build tools are available. |
38 | 39 | # |
39 | | -ifeq ($(ARCH64),1) |
40 | | -LIBDIR = ${INSTALLDIR}/lib64 |
41 | | -ifneq ("$(wildcard ${INSTALLDIR}/include/gnu/stubs-32.h)","") |
| 40 | +ifeq ($(ARCH),64) |
| 41 | +LIBDIR = ${PREFIX}/lib64 |
| 42 | +ifneq ("$(wildcard ${PREFIX}/include/gnu/stubs-32.h)","") |
42 | 43 | STUFF_32BIT = 1 |
43 | | -LIBDIR32 = ${INSTALLDIR}/lib |
| 44 | +LIBDIR32 = ${PREFIX}/lib |
44 | 45 | endif |
45 | 46 | else |
46 | | -LIBDIR = ${INSTALLDIR}/lib |
| 47 | +LIBDIR = ${PREFIX}/lib |
47 | 48 | endif |
48 | 49 |
|
49 | | -all: smc_run ld_pre_smc.so ld_pre_smc32.so smcss smcrpnet |
| 50 | +all: ld_pre_smc.so ld_pre_smc32.so smcss smc_pnet smc_run |
50 | 51 |
|
51 | | -CFLAGS := -Wall -I include -O3 -g |
| 52 | +CFLAGS ?= -Wall -O3 -g |
| 53 | +ALL_CFLAGS = -DSMC_TOOLS_RELEASE=$(SMC_TOOLS_RELEASE) $(CFLAGS) |
52 | 54 |
|
53 | | -ifeq ($(ARCH),s390x) |
| 55 | +ifeq ($(ARCHTYPE),s390x) |
54 | 56 | MACHINE_OPT32="-m31" |
55 | 57 | else |
56 | 58 | MACHINE_OPT32="-m32" |
57 | 59 | endif |
58 | 60 |
|
59 | 61 | smc_run: smc_run.in |
60 | | - my_installdir=${INSTALLDIR}; \ |
61 | | - sed -e "s#@install_dir@#$$my_installdir#g" < $< > $@ |
| 62 | + my_installdir=${PREFIX} $(GEN) -e "s#@install_dir@#$$my_installdir#g" < $< > $@ |
| 63 | + chmod a+x $@ |
| 64 | + |
| 65 | +ld_pre_smc.o: ld_pre_smc.c |
| 66 | + ${CCC} ${CFLAGS} -fPIC -c ld_pre_smc.c |
62 | 67 |
|
63 | | -ld_pre_smc.so: ld_pre_smc.c |
64 | | - ${CC} ${CFLAGS} -fPIC -c ld_pre_smc.c |
65 | | - ${CC} -shared ld_pre_smc.o -ldl -Wl,-z,defs -o ld_pre_smc.so |
| 68 | +ld_pre_smc.so: ld_pre_smc.o |
| 69 | + ${LINK} ${LDFLAGS} -shared ld_pre_smc.o -ldl -Wl,-z,defs,-soname,$@.$(VER_MAJOR) -o $@ |
66 | 70 |
|
67 | 71 | ld_pre_smc32.so: ld_pre_smc.c |
68 | | -ifeq ($(ARCH64),1) |
| 72 | +ifeq ($(ARCH),64) |
69 | 73 | ifeq ($(STUFF_32BIT),1) |
70 | | - ${CC} ${CFLAGS} -fPIC -c ${MACHINE_OPT32} ld_pre_smc.c -o ld_pre_smc32.o |
71 | | - ${CC} -shared ld_pre_smc32.o ${MACHINE_OPT32} -ldl -o ld_pre_smc32.so |
| 74 | + ${CCC} ${CFLAGS} -fPIC -c ${MACHINE_OPT32} $< -o ld_pre_smc32.o |
| 75 | + ${LINK} ${LDFLAGS} -shared ld_pre_smc32.o ${MACHINE_OPT32} -ldl -Wl,-soname,$@.$(VER_MAJOR) -o $@ |
72 | 76 | else |
73 | | - $(warning "Warning: Skipping 31/32-bit library build because 31/32-bit \ |
74 | | -build tools are unavailable. SMC-R will not support 31 and 32 bit TCP \ |
75 | | -applications unless the glibc-devel for appropriate addressing mode is \ |
76 | | -installed and the preload libraries are rebuilt.") |
| 77 | + $(warning "Warning: Skipping 31/32-bit library build because 31/32-bit build tools") |
| 78 | + $(warning " are unavailable. SMC will not support 31/32 bit applications") |
| 79 | + $(warning " unless the glibc devel package for the appropriate addressing") |
| 80 | + $(warning " mode is installed and the preload libraries are rebuilt.") |
77 | 81 | endif |
78 | 82 | endif |
79 | 83 |
|
80 | | -smcss.o: smcss.c smc_diag.h smctools_common.h |
81 | | - ${CC} ${CFLAGS} -c smcss.c |
82 | | - |
83 | | -smcss: smcss.o |
84 | | - |
85 | | -# |
86 | 84 | ifneq ($(shell sh -c 'command -v pkg-config'),) |
87 | | -SMCRPNET_FLAGS = $(shell pkg-config --silence-errors --cflags --libs libnl-genl-3.0) |
| 85 | +SMC_PNET_CFLAGS = $(shell pkg-config --silence-errors --cflags libnl-genl-3.0) |
| 86 | +SMC_PNET_LFLAGS = $(shell pkg-config --silence-errors --libs libnl-genl-3.0) |
88 | 87 | else |
89 | | -SMCRPNET_FLAGS = -I/usr/include/libnl3 -lnl-genl-3 -lnl-3 |
| 88 | +SMC_PNET_CFLAGS = -I /usr/include/libnl3 |
| 89 | +SMC_PNET_LFLAGS = -lnl-genl-3 -lnl-3 |
90 | 90 | endif |
91 | 91 |
|
92 | | -smcrpnet: smcrpnet.c smc.h |
93 | | - @if [ -e /usr/include/libnl3/netlink/netlink.h ]; then \ |
94 | | - echo ${CC} ${CFLAGS} ${SMCRPNET_FLAGS} -o $@ $< ; \ |
95 | | - ${CC} ${CFLAGS} ${SMCRPNET_FLAGS} -o $@ $< ; \ |
96 | | - else \ |
97 | | - printf "*********************************************\n" >&2; \ |
| 92 | +smc_pnet: smc_pnet.c smc.h smctools_common.h |
| 93 | + @if [ ! -e /usr/include/libnl3/netlink/netlink.h ]; then \ |
| 94 | + printf "**************************************************************\n" >&2; \ |
98 | 95 | printf "* Missing build requirement for: %-45s\n" $@ >&2; \ |
99 | | - printf "* Install package..............: %-45s\n" libnl3-devel >&2; \ |
100 | | - printf "*********************************************\n" >&2; \ |
101 | | - exit 0; \ |
| 96 | + printf "* Install package..............: %-45s\n" "devel package for libnl3" >&2; \ |
| 97 | + printf "* Install package..............: %-45s\n" "devel package for libnl3-genl" >&2; \ |
| 98 | + printf "* NOTE: Package names might differ by platform\n" >&2; \ |
| 99 | + printf "**************************************************************\n" >&2; \ |
| 100 | + exit 1; \ |
102 | 101 | fi |
| 102 | + ${CCC} ${ALL_CFLAGS} ${SMC_PNET_CFLAGS} ${LDFLAGS} -o $@ $< ${SMC_PNET_LFLAGS} |
| 103 | + |
| 104 | +smcss: smcss.c smc_diag.h smctools_common.h |
| 105 | + ${CCC} ${ALL_CFLAGS} ${LDFLAGS} $< -o $@ |
103 | 106 |
|
104 | | -install: |
| 107 | +install: all |
| 108 | + echo " INSTALL" |
105 | 109 | install -d -m755 $(DESTDIR)$(LIBDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man7 $(DESTDIR)$(MANDIR)/man8 |
106 | | - install -s $(INSTALL_FLAGS_BIN) ld_pre_smc.so $(DESTDIR)$(LIBDIR) |
| 110 | + install $(INSTALL_FLAGS_BIN) ld_pre_smc.so $(DESTDIR)$(LIBDIR) |
107 | 111 | ifeq ($(STUFF_32BIT),1) |
108 | 112 | install -d -m755 $(DESTDIR)$(LIBDIR32) |
109 | | - install -s $(INSTALL_FLAGS_BIN) ld_pre_smc32.so $(DESTDIR)$(LIBDIR32)/ld_pre_smc.so |
| 113 | + install $(INSTALL_FLAGS_BIN) ld_pre_smc32.so $(DESTDIR)$(LIBDIR32)/ld_pre_smc.so |
110 | 114 | endif |
111 | 115 | install $(INSTALL_FLAGS_BIN) smc_run $(DESTDIR)$(BINDIR) |
112 | | - install -s $(INSTALL_FLAGS_BIN) smcss $(DESTDIR)$(BINDIR) |
113 | | - install -s $(INSTALL_FLAGS_BIN) smcrpnet $(DESTDIR)$(BINDIR) |
114 | | - install $(INSTALL_FLAGS_MAN) af_smc.7 $(DESTDIR)$(MANDIR)/man7 |
| 116 | + install $(INSTALL_FLAGS_BIN) smcss $(DESTDIR)$(BINDIR) |
| 117 | + install $(INSTALL_FLAGS_BIN) smc_pnet $(DESTDIR)$(BINDIR) |
| 118 | + install $(INSTALL_FLAGS_MAN) $(DESTDIR)$(MANDIR)/man7 |
115 | 119 | install $(INSTALL_FLAGS_MAN) smc_run.8 $(DESTDIR)$(MANDIR)/man8 |
116 | | - install $(INSTALL_FLAGS_MAN) smcrpnet.8 $(DESTDIR)$(MANDIR)/man8 |
| 120 | + install $(INSTALL_FLAGS_MAN) smc_pnet.8 $(DESTDIR)$(MANDIR)/man8 |
117 | 121 | install $(INSTALL_FLAGS_MAN) smcss.8 $(DESTDIR)$(MANDIR)/man8 |
118 | 122 |
|
119 | 123 | clean: |
120 | | - rm -f *.o *.so smc_run smcss smcrpnet |
| 124 | + echo " CLEAN" |
| 125 | + rm -f *.o *.so smc_run smcss smc_pnet |
0 commit comments