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
|
# Copyright (C) 2011 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v2 or (at your option) any later version.
CMD_TARGET = wdmd
LIB_TARGET = libwdmd
HEADER_TARGET = wdmd.h
MAN_TARGET = wdmd.8
TEST_TARGET = wdmd_client
LIBDIR_NAME = sanlock
SOMAJOR=1
SOMINOR=0
SHLIB_TARGET = $(LIB_TARGET).so.$(SOMAJOR).$(SOMINOR)
CMD_SOURCE = main.c wdmd_sock.c
LIB_SOURCE = client.c wdmd_sock.c
TEST_SOURCE = wdmd_client.c
CFLAGS += -D_GNU_SOURCE -g \
-Wall \
-Wformat \
-Wformat-security \
-Wmissing-prototypes \
-Wnested-externs \
-Wpointer-arith \
-Wextra -Wshadow \
-Wcast-align \
-Wwrite-strings \
-Waggregate-return \
-Wstrict-prototypes \
-Winline \
-Wredundant-decls \
-Wno-sign-compare \
-Wp,-D_FORTIFY_SOURCE=2 \
-fexceptions \
-fasynchronous-unwind-tables \
-fdiagnostics-show-option \
-fPIE -DPIE
CMD_LDFLAGS += -Wl,-z,now -Wl,-z,relro -pie -Wl,-rpath=/usr/lib/sanlock
CMD_LDADD += -lwdmd -lrt
LIB_LDFLAGS += -Wl,-z,relro -pie
TEST_LDFLAGS = -lwdmd
all: $(SHLIB_TARGET) $(CMD_TARGET) $(TEST_TARGET)
$(SHLIB_TARGET): $(LIB_SOURCE)
$(CC) $(CFLAGS) $(LIB_LDFLAGS) -shared -fPIC -o $@ -Wl,-soname=$(LIB_TARGET).so.$(SOMAJOR) $^
ln -sf $(SHLIB_TARGET) $(LIB_TARGET).so
ln -sf $(SHLIB_TARGET) $(LIB_TARGET).so.$(SOMAJOR)
$(CMD_TARGET): $(SHLIB_TARGET) $(CMD_SOURCE)
$(CC) $(CFLAGS) $(CMD_LDFLAGS) $(CMD_SOURCE) $(CMD_LDADD) -o $@ -L.
$(TEST_TARGET): $(SHLIB_TARGET) $(TEST_SOURCE)
$(CC) $(CFLAGS) $(TEST_LDFLAGS) $(TEST_SOURCE) $(CMD_LDADD) -o $@ -L.
clean:
rm -f *.o *.so *.so.* $(CMD_TARGET) $(TEST_TARGET)
INSTALL=$(shell which install)
DESTDIR=
BINDIR=/usr/sbin
LIBDIR=/usr/lib
HEADIR=/usr/include
MANDIR=/usr/share/man
.PHONY: install
install: all
$(INSTALL) -d $(DESTDIR)/$(BINDIR)
$(INSTALL) -d $(DESTDIR)/$(LIBDIR)
$(INSTALL) -d $(DESTDIR)/$(LIBDIR)/$(LIBDIR_NAME)
$(INSTALL) -d $(DESTDIR)/$(HEADIR)
$(INSTALL) -d $(DESTDIR)/$(MANDIR)/man8
$(INSTALL) -c -m 755 $(CMD_TARGET) $(DESTDIR)/$(BINDIR)
$(INSTALL) -c -m 755 $(SHLIB_TARGET) $(DESTDIR)/$(LIBDIR)/$(LIBDIR_NAME)
cp -a $(LIB_TARGET).so $(DESTDIR)/$(LIBDIR)/$(LIBDIR_NAME)
cp -a $(LIB_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)/$(LIBDIR_NAME)
$(INSTALL) -c -m 644 $(HEADER_TARGET) $(DESTDIR)/$(HEADIR)
$(INSTALL) -m 644 $(MAN_TARGET) $(DESTDIR)/$(MANDIR)/man8
|