Makefile system improvements from Angus Salkeld

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1456 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
Steven Dake 2007-09-27 08:50:17 +00:00
parent dc1c4ae279
commit b6071cc4c0
6 changed files with 130 additions and 84 deletions

128
Makefile
View File

@ -29,7 +29,14 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
include Makefile.inc
builddir:=$(shell pwd)/
ifneq ($(O),)
# cleanup the path (make it absolute)
builddir:=$(abspath $(O))/
endif
srcdir:=$(dir $(realpath $(MAKEFILE_LIST)))
include $(srcdir)/Makefile.inc
SBINDIR=$(PREFIX)/sbin
INCLUDEDIR=$(PREFIX)/include/openais
@ -56,18 +63,53 @@ ifeq (ia64,$(ARCH))
LIBDIR=$(PREFIX)/lib/openais
endif
all:
(cd lcr; echo ==== `pwd` ===; $(MAKE) all);
(cd lib; echo ==== `pwd` ===; $(MAKE) all);
(cd exec; echo ==== `pwd` ===; $(MAKE) all);
(cd test; echo ==== `pwd` ===; $(MAKE) all);
SUBDIRS:=$(builddir)lcr $(builddir)lib $(builddir)exec $(builddir)test
sub_make = srcdir=$(srcdir) builddir=$(builddir) subdir=$(1)/ $(MAKE) -I$(srcdir)$(1) -f $(srcdir)$(1)/Makefile $(2)
all: $(SUBDIRS)
@(cd $(builddir)lcr; echo ==== `pwd` ===; $(call sub_make,lcr,all));
@(cd $(builddir)lib; echo ==== `pwd` ===; $(call sub_make,lib,all));
@(cd $(builddir)exec; echo ==== `pwd` ===; $(call sub_make,exec,all));
@(cd $(builddir)test; echo ==== `pwd` ===; $(call sub_make,test,all));
# subdirs are not phony
.PHONY: all clean install doxygen
$(builddir):
mkdir -p $@
$(SUBDIRS):
mkdir -p $@
help:
@echo
@echo "Requirements: GCC, LD, and a Linux 2.4/2.6 kernel."
@echo "Tested on:"
@echo " Debian Sarge(i386), Redhat 9(i386), Fedora Core 2(i386), Fedora Core"
@echo " 4(i386,x86_64), SOLARIS, MontaVista Carrier Grade Edition 3.1(i386, x86_64,"
@echo " classic ppc, ppc970, xscale) and buildroot/uclibc(ppc e500/603e)"
@echo
@echo Targets:
@echo " all - build all targets"
@echo " install - install openais onto your system"
@echo " clean - remove generated files"
@echo " doxygen - doxygen html docs"
@echo
@echo "Options: (* - default)"
@echo " OPENAIS [DEBUG/RELEASE*] - Enable/Disable debug symbols"
@echo " DESTDIR [directory] - Install prefix."
@echo " O [directory] - Locate all output files in \"dir\"."
@echo " BUILD_DYNAMIC [1*/0] - Enable/disable dynamic loading of service handler modules"
@echo " OPENAIS_PROFILE [1/0*] - Enable profiling"
@echo
clean:
(cd lcr; echo ==== `pwd` ===; $(MAKE) clean);
(cd lib; echo ==== `pwd` ===; $(MAKE) clean);
(cd exec; echo ==== `pwd` ===; $(MAKE) clean);
(cd test; echo ==== `pwd` ===; $(MAKE) clean);
rm -rf doc/api
(cd $(builddir)lcr; echo ==== `pwd` ===; $(call sub_make,lcr,clean));
(cd $(builddir)lib; echo ==== `pwd` ===; $(call sub_make,lib,clean));
(cd $(builddir)exec; echo ==== `pwd` ===; $(call sub_make,exec,clean));
(cd $(builddir)test; echo ==== `pwd` ===; $(call sub_make,test,clean));
rm -rf $(builddir)doc/api
AIS_LIBS = ais SaAmf SaClm SaCkpt SaEvt SaLck SaMsg evs cpg \
cfg aisutil
@ -91,20 +133,20 @@ install: all
mkdir -p $(DESTDIR)$(ETCDIR)/ld.so.conf.d
ln -sf libtotem_pg.so.2.0.0 exec/libtotem_pg.so
ln -sf libtotem_pg.so.2.0.0 exec/libtotem_pg.so.2
$(CP) -a exec/libtotem_pg.so $(DESTDIR)$(LIBDIR)
$(CP) -a exec/libtotem_pg.so.2 $(DESTDIR)$(LIBDIR)
install -m 755 exec/libtotem_pg.so.2.* $(DESTDIR)$(LIBDIR)
ln -sf $(builddir)libtotem_pg.so.2.0.0 $(builddir)exec/libtotem_pg.so
ln -sf $(builddir)libtotem_pg.so.2.0.0 $(builddir)exec/libtotem_pg.so.2
$(CP) -a $(builddir)exec/libtotem_pg.so $(DESTDIR)$(LIBDIR)
$(CP) -a $(builddir)exec/libtotem_pg.so.2 $(DESTDIR)$(LIBDIR)
install -m 755 $(builddir)exec/libtotem_pg.so.2.* $(DESTDIR)$(LIBDIR)
for aLib in $(AIS_LIBS); do \
ln -sf lib$$aLib.so.2.0.0 lib/lib$$aLib.so; \
ln -sf lib$$aLib.so.2.0.0 lib/lib$$aLib.so.2; \
$(CP) -a lib/lib$$aLib.so $(DESTDIR)$(LIBDIR); \
$(CP) -a lib/lib$$aLib.so.2 $(DESTDIR)$(LIBDIR); \
ln -sf $(builddir)lib$$aLib.so.2.0.0 lib/lib$$aLib.so; \
ln -sf $(builddir)lib$$aLib.so.2.0.0 lib/lib$$aLib.so.2; \
$(CP) -a $(builddir)lib/lib$$aLib.so $(DESTDIR)$(LIBDIR); \
$(CP) -a $(builddir)lib/lib$$aLib.so.2 $(DESTDIR)$(LIBDIR); \
install -m 755 lib/lib$$aLib.so.2.* $(DESTDIR)$(LIBDIR); \
if [ "xNO" = "x$(STATICLIBS)" ]; then \
install -m 755 lib/lib$$aLib.a $(DESTDIR)$(LIBDIR); \
install -m 755 $(builddir)lib/lib$$aLib.a $(DESTDIR)$(LIBDIR); \
if [ ${OPENAIS_COMPAT} = "DARWIN" ]; then \
ranlib $(DESTDIR)$(LIBDIR)/lib$$aLib.a; \
fi \
@ -113,37 +155,37 @@ install: all
echo $(LIBDIR) > $(DESTDIR)$(ETCDIR)/ld.so.conf.d/openais-$(ARCH).conf
install -m 755 exec/*lcrso $(DESTDIR)$(LCRSODIR)
install -m 755 exec/aisexec $(DESTDIR)$(SBINDIR)
install -m 700 exec/keygen $(DESTDIR)$(SBINDIR)/ais-keygen
install -m 755 $(builddir)exec/*lcrso $(DESTDIR)$(LCRSODIR)
install -m 755 $(builddir)exec/aisexec $(DESTDIR)$(SBINDIR)
install -m 700 $(builddir)exec/keygen $(DESTDIR)$(SBINDIR)/ais-keygen
if [ ! -f $(DESTDIR)$(ETCDIR)/ais/openais.conf ] ; then \
install -m 644 conf/openais.conf $(DESTDIR)$(ETCDIR)/ais ; \
install -m 644 $(srcdir)conf/openais.conf $(DESTDIR)$(ETCDIR)/ais ; \
fi
if [ ! -f $(DESTDIR)$(ETCDIR)/ais/amf.conf ] ; then \
install -m 644 conf/amf.conf $(DESTDIR)$(ETCDIR)/ais ; \
install -m 644 $(srcdir)conf/amf.conf $(DESTDIR)$(ETCDIR)/ais ; \
fi
for aHeader in $(AIS_HEADERS); do \
install -m 644 include/$$aHeader $(DESTDIR)$(INCLUDEDIR); \
install -m 644 $(srcdir)include/$$aHeader $(DESTDIR)$(INCLUDEDIR); \
done
install -m 644 exec/aispoll.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 exec/totempg.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 exec/totem.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 exec/totemip.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 lcr/lcr_ckpt.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 lcr/lcr_comp.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 lcr/lcr_ifact.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 exec/service.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 exec/timer.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 exec/objdb.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 exec/logsys.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 exec/config.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 include/swab.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 man/*.3 $(DESTDIR)$(MANDIR)/man3
install -m 644 man/*.5 $(DESTDIR)$(MANDIR)/man5
install -m 644 man/*.8 $(DESTDIR)$(MANDIR)/man8
install -m 644 $(srcdir)exec/aispoll.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/totempg.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/totem.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)exec/totemip.h $(DESTDIR)$(INCLUDEDIR_TOTEM)
install -m 644 $(srcdir)lcr/lcr_ckpt.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 $(srcdir)lcr/lcr_comp.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 $(srcdir)lcr/lcr_ifact.h $(DESTDIR)$(INCLUDEDIR_LCR)
install -m 644 $(srcdir)exec/service.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/timer.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/objdb.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/logsys.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)exec/config.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)include/swab.h $(DESTDIR)$(INCLUDEDIR_SERVICE)
install -m 644 $(srcdir)man/*.3 $(DESTDIR)$(MANDIR)/man3
install -m 644 $(srcdir)man/*.5 $(DESTDIR)$(MANDIR)/man5
install -m 644 $(srcdir)man/*.8 $(DESTDIR)$(MANDIR)/man8
doxygen:
mkdir -p doc/api && doxygen

View File

@ -107,3 +107,6 @@ ifeq ($(shell uname -r), 5.11)
override CFLAGS += -DHAVE_GETPEERUCRED -DHAVE_SCANDIR -DHAVE_ALPHASORT
endif
endif
VPATH:=. $(srcdir) $(srcdir)$(subdir)

View File

@ -32,9 +32,10 @@
# Include configuration
#
include ../Makefile.inc
include $(srcdir)Makefile.inc
override CFLAGS += -I../include
override CFLAGS += -I$(srcdir)include
LDFLAGS += -L./
ifeq (${BUILD_DYNAMIC}, 1)
override LDFLAGS += ${DYFLAGS}
@ -209,71 +210,71 @@ depend:
$(CC) $(CFLAGS) $(CPPFLAGS) -DPREFIX='"$(PREFIX)"' -I../lcr -c -o $@ ../lcr/lcr_ifact.c
evs.o: evs.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
clm.o: clm.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
amf.o: amf.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
ckpt.o: ckpt.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
evt.o: evt.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
lck.o: lck.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
msg.o: msg.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
cfg.o: cfg.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
aisparser.o: aisparser.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
vsf_ykd.o: vsf_ykd.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
cpg.o: cpg.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
objdb.o: objdb.c
$(CC) $(CFLAGS) -c -o $@ $(*F).c
$(CC) $(CFLAGS) -c -o $@ $<
# -fPIC rules required for lib totem
aispoll.o: aispoll.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totempg.o: totempg.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totemsrp.o: totemsrp.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totemrrp.o: totemrrp.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totemip.o: totemip.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totemnet.o: totemnet.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
wthread.o: wthread.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
crypto.o: crypto.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totemmrp.o: totemmrp.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
totemconfig.o: totemconfig.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
# DO NOT DELETE

View File

@ -70,10 +70,10 @@ uic: uic.o
$(CC) $(LDFLAGS) uic.o -o uic
libtest_a.o: libtest_a.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
libtest_b.o: libtest_b.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
lcr_ifact.o: lcr_ifact.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c

View File

@ -30,9 +30,9 @@
# Include configuration
#
include ../Makefile.inc
include $(srcdir)Makefile.inc
override CFLAGS += -I../include
override CFLAGS += -I$(srcdir)include
override LDFLAGS += -L./
all:libSaClm.a libSaClm.so.2.0.0 \
@ -95,37 +95,37 @@ libcfg.so.2.0.0: util.o cfg.o
else
libaisutil.so.2.0.0: util.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libaisutil.so.2,-version-script=libaisutil.versions util.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libaisutil.so.2,-version-script=$(srcdir)$(subdir)libaisutil.versions util.o -o $@
libSaClm.so.2.0.0: util.o clm.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaClm.so.2,-version-script=libSaClm.versions util.o clm.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaClm.so.2,-version-script=$(srcdir)$(subdir)libSaClm.versions util.o clm.o -o $@
libSaAmf.so.2.0.0: util.o amf.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaAmf.so.2,-version-script=libSaAmf.versions util.o amf.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaAmf.so.2,-version-script=$(srcdir)$(subdir)libSaAmf.versions util.o amf.o -o $@
libSaCkpt.so.2.0.0: util.o ckpt.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaCkpt.so.2,-version-script=libSaCkpt.versions util.o ckpt.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaCkpt.so.2,-version-script=$(srcdir)$(subdir)libSaCkpt.versions util.o ckpt.o -o $@
libSaEvt.so.2.0.0: util.o evt.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaEvt.so.2,-version-script=libSaEvt.versions util.o evt.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaEvt.so.2,-version-script=$(srcdir)$(subdir)libSaEvt.versions util.o evt.o -o $@
libSaLck.so.2.0.0: util.o lck.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaLck.so.2,-version-script=libSaLck.versions util.o lck.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaLck.so.2,-version-script=$(srcdir)$(subdir)libSaLck.versions util.o lck.o -o $@
libSaMsg.so.2.0.0: util.o msg.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaMsg.so.2,-version-script=libSaMsg.versions util.o msg.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libSaMsg.so.2,-version-script=$(srcdir)$(subdir)libSaMsg.versions util.o msg.o -o $@
libais.so.2.0.0: util.o amf.o clm.o ckpt.o evt.o lck.o msg.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libais.so.2,-version-script=libSaAis.versions util.o amf.o clm.o ckpt.o evt.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libais.so.2,-version-script=$(srcdir)$(subdir)libSaAis.versions util.o amf.o clm.o ckpt.o evt.o -o $@
libevs.so.2.0.0: util.o evs.o
$(CC) $(LDFLAGS) -shared -Wl,-soname,libevs.so.2,-version-script=libevs.versions util.o evs.o -o $@
$(CC) $(LDFLAGS) -shared -Wl,-soname,libevs.so.2,-version-script=$(srcdir)$(subdir)libevs.versions util.o evs.o -o $@
libcpg.so.2.0.0: util.o cpg.o
$(CC) -shared -Wl,-soname,libcpg.so.2,-version-script=libcpg.versions util.o cpg.o -o $@
$(CC) -shared -Wl,-soname,libcpg.so.2,-version-script=$(srcdir)$(subdir)libcpg.versions util.o cpg.o -o $@
libcfg.so.2.0.0: util.o cfg.o
$(CC) -shared -Wl,-soname,libcfg.so.2,-version-script=libcfg.versions util.o cfg.o -o $@
$(CC) -shared -Wl,-soname,libcfg.so.2,-version-script=$(srcdir)$(subdir)libcfg.versions util.o cfg.o -o $@
endif
@ -164,7 +164,7 @@ clean:
# -fPIC rules required for all libraries
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $(*F).c
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
depend:
makedepend -Y -- $(CFLAGS) $(CPPFLAGS) $(LIBAIS_SRC) > /dev/null 2>&1

View File

@ -44,7 +44,7 @@ LIBS = $(LIBRARIES)
override CFLAGS += -I../include
override LDFLAGS += -L../lib
EXTRA_CFLAGS = -I../include
EXTRA_CFLAGS = -I$(srcdir)include
TEST_SRC = testclm.c testamf1.c \
testamf4.c testamf5.c testamf6.c testamfth.c \
testckpt.c ckptstress.c ckptbench.c \