changeset 611:957dd4fb2599

Update install target to be mildly useful - parametrize install location in the normal PREFIX / EXEC_PREFIX way; - write and use an install-time pkg-config file generator; - rearrange the SONAME stuff so that ldconfig -n does roughly the right thing; - install the manpage while we're at it.
author mas01cr
date Tue, 01 Sep 2009 14:17:55 +0000
parents e21a3db643af
children c80ade092d7a
files Makefile make-pc.sh
diffstat 2 files changed, 40 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Fri Aug 28 17:14:06 2009 +0000
+++ b/Makefile	Tue Sep 01 14:17:55 2009 +0000
@@ -6,7 +6,12 @@
 GSL_INCLUDE=
 GSOAP_INCLUDE=
 
-SHARED_LIB_FLAGS=-shared -Wl,-soname,
+PREFIX=/usr/local
+EXEC_PREFIX=$(PREFIX)
+LIBDIR=$(EXEC_PREFIX)/lib
+BINDIR=$(EXEC_PREFIX)/bin
+INCLUDEDIR=$(PREFIX)/include
+MANDIR=$(PREFIX)/share/man
 
 LIBOBJS=lock.o pointpair.o create.o open.o power.o l2norm.o insert.o status.o query.o dump.o close.o index-utils.o query-indexed.o liszt.o retrieve.o lshlib.o
 OBJS=$(LIBOBJS) index.o soap.o sample.o cmdline.o audioDB.o common.o
@@ -16,6 +21,7 @@
 SOVERSION=0
 MINORVERSION=0
 LIBRARY=lib$(EXECUTABLE).so.$(SOVERSION).$(MINORVERSION)
+SHARED_LIB_FLAGS=-shared -Wl,-soname,lib$(EXECUTABLE).so.$(SOVERSION)
 
 override CFLAGS+=-g -O3 -fPIC 
 
@@ -33,13 +39,13 @@
 ifeq ($(shell sysctl -n hw.optional.x86_64),1)
 override CFLAGS+=-arch x86_64
 endif
-override SHARED_LIB_FLAGS=-dynamiclib -current_version $(SOVERSION).$(MINORVERSION) -Wl -install_name 
 override LIBRARY=lib$(EXECUTABLE).$(SOVERSION).$(MINORVERSION).dylib
+override SHARED_LIB_FLAGS=-dynamiclib -current_version $(SOVERSION) -Wl -install_name $(LIBRARY)
 endif
 
-.PHONY: all clean test
+.PHONY: all clean test install $(EXECUTABLE).pc
 
-all: $(LIBRARY) $(EXECUTABLE)
+all: $(LIBRARY) $(EXECUTABLE) $(EXECUTABLE).1
 
 $(EXECUTABLE).1: $(EXECUTABLE)
 	$(HELP2MAN) ./$(EXECUTABLE) > $(EXECUTABLE).1
@@ -66,7 +72,7 @@
 	$(CXX) -o $(EXECUTABLE) $(CFLAGS) $^ $(LIBGSL) $(GSOAP_INCLUDE) $(GSOAP_CPP)
 
 $(LIBRARY): $(LIBOBJS)
-	$(CXX) $(SHARED_LIB_FLAGS)$(LIBRARY) -o $(LIBRARY) $(CFLAGS) $^
+	$(CXX) $(SHARED_LIB_FLAGS) -o $(LIBRARY) $(CFLAGS) $^
 
 tags:
 	ctags *.cpp *.h
@@ -88,7 +94,6 @@
 	-rm *.o
 	-rm -rf audioDB.dump
 
-
 test: $(EXECUTABLE) $(LIBRARY)
 	sh -c "cd libtests && sh ./run-tests.sh"
 	sh -c "cd tests && sh ./run-tests.sh"
@@ -96,9 +101,15 @@
 xthresh: xthresh.c
 	$(CC) -o $@ $(CFLAGS) $(GSL_INCLUDE) $(LIBGSL) $<
 
-install:
-	cp $(LIBRARY) /usr/local/lib/
-	ln -sf /usr/local/lib/$(LIBRARY) /usr/local/lib/lib$(EXECUTABLE).so.$(SOVERSION)
-	ln -sf /usr/local/lib/lib$(EXECUTABLE).so.$(SOVERSION) /usr/local/lib/lib$(EXECUTABLE).so
-	ldconfig
-	cp audioDB_API.h /usr/local/include/
+$(EXECUTABLE).pc:
+	./make-pc.sh "$(EXECUTABLE)" "$(LIBDIR)" "$(INCLUDEDIR)" $(SOVERSION) $(MINORVERSION) > $(EXECUTABLE).pc
+
+install: $(EXECUTABLE).pc
+	mkdir -m755 -p $(LIBDIR)/pkgconfig $(BINDIR) $(INCLUDEDIR) $(MANDIR)/man1
+	install -m644 $(LIBRARY) $(LIBDIR)
+	ldconfig -n $(LIBDIR)
+	ln -s $(LIBRARY) $(LIBDIR)/lib$(EXECUTABLE).so
+	install -m755 $(EXECUTABLE) $(BINDIR)
+	install -m644 audioDB_API.h $(INCLUDEDIR)
+	install -m644 $(EXECUTABLE).1 $(MANDIR)/man1
+	install $(EXECUTABLE).pc $(LIBDIR)/pkgconfig
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make-pc.sh	Tue Sep 01 14:17:55 2009 +0000
@@ -0,0 +1,17 @@
+#! /bin/bash
+
+EXECUTABLE="$1"
+LIBDIR="$2"
+INCLUDEDIR="$3"
+SOVERSION=$4
+MINORVERSION=$5
+
+echo "includedir=$INCLUDEDIR"
+echo "libdir=$LIBDIR"
+echo
+echo "Name: $EXECUTABLE"
+echo "Description: the $EXECUTABLE library"
+echo "Version: $SOVERSION.$MINORVERSION"
+echo "Requires.private: gsl gsoap++"
+echo 'Cflags: -I${includedir}'
+echo 'Libs: -L${libdir} -l'"$EXECUTABLE"
\ No newline at end of file