diff --git a/Makefile b/Makefile index a2271dc..4d65fd6 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,8 @@ VERSION = 0.0.0 SUBDIRS = data doc include src tests tools RM = rm -f LN = ln -f -TAR = tar -czvf +TAR = tar +MKDIR = mkdir -m 0755 -p all: subdirs @@ -20,7 +21,7 @@ distclean: dist: $(RM) -r -- $(PACKAGE)-$(VERSION) $(LN) -s -- . $(PACKAGE)-$(VERSION) - @$(TAR) $(PACKAGE)-$(VERSION).tar.gz -- \ + @$(TAR) -czvf $(PACKAGE)-$(VERSION).tar.gz -- \ $(PACKAGE)-$(VERSION)/data/Makefile \ $(PACKAGE)-$(VERSION)/data/libDatabase.pc.in \ $(PACKAGE)-$(VERSION)/data/pkgconfig.sh \ @@ -70,10 +71,21 @@ dist: $(PACKAGE)-$(VERSION)/project.conf $(RM) -- $(PACKAGE)-$(VERSION) +distcheck: dist + $(TAR) -xzvf $(PACKAGE)-$(VERSION).tar.gz + $(MKDIR) -- $(PACKAGE)-$(VERSION)/objdir + $(MKDIR) -- $(PACKAGE)-$(VERSION)/destdir + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/") + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" install) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" uninstall) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" distclean) + (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) dist) + $(RM) -r -- $(PACKAGE)-$(VERSION) + install: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done uninstall: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done -.PHONY: all subdirs clean distclean dist install uninstall +.PHONY: all subdirs clean distclean dist distcheck install uninstall diff --git a/data/Makefile b/data/Makefile index 6e81949..1965908 100644 --- a/data/Makefile +++ b/data/Makefile @@ -1,4 +1,5 @@ -TARGETS = libDatabase.pc +TARGETS = $(OBJDIR)libDatabase.pc +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f @@ -9,8 +10,8 @@ INSTALL = install all: $(TARGETS) -libDatabase.pc: libDatabase.pc.in ../config.sh - ./pkgconfig.sh -P "$(PREFIX)" -- "libDatabase.pc" +$(OBJDIR)libDatabase.pc: libDatabase.pc.in ../config.sh + ./pkgconfig.sh -P "$(PREFIX)" -- "$(OBJDIR)libDatabase.pc" clean: $(RM) -- $(libDatabase.pc_OBJS) @@ -20,7 +21,7 @@ distclean: clean $(RM) -- $(TARGETS) install: $(TARGETS) - ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "libDatabase.pc" + ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -i -- "$(OBJDIR)libDatabase.pc" uninstall: ./pkgconfig.sh -P "$(DESTDIR)$(PREFIX)" -u -- "libDatabase.pc" diff --git a/data/pkgconfig.sh b/data/pkgconfig.sh index 5482795..95a0ac9 100755 --- a/data/pkgconfig.sh +++ b/data/pkgconfig.sh @@ -119,8 +119,9 @@ while [ $# -gt 0 ]; do #install if [ "$install" -eq 1 ]; then + source="${target#$OBJDIR}" $DEBUG $MKDIR -- "$PKGCONFIG" || exit 2 - $DEBUG $INSTALL "$target" "$PKGCONFIG/$target" || exit 2 + $DEBUG $INSTALL "$target" "$PKGCONFIG/$source" || exit 2 continue fi @@ -129,18 +130,23 @@ while [ $# -gt 0 ]; do if [ "$PREFIX" != "/usr" ]; then RPATH="-Wl,-rpath-link,\${libdir} -Wl,-rpath,\${libdir}" case $(uname -s) in - Darwin|SunOS) + Darwin) RPATH="-Wl,-rpath,\${libdir}" ;; + SunOS) + RPATH="-Wl,-R\${libdir}" + ;; esac fi #create + source="${target#$OBJDIR}" + source="${source}.in" $DEBUG $SED -e "s;@PACKAGE@;$PACKAGE;" \ -e "s;@VERSION@;$VERSION;" \ -e "s;@PREFIX@;$PREFIX;" \ -e "s;@RPATH@;$RPATH;" \ - -- "$target.in" > "$target" + -- "$source" > "$target" if [ $? -ne 0 ]; then $DEBUG $RM -- "$target" exit 2 diff --git a/doc/Makefile b/doc/Makefile index b4593fc..a0ae9ba 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,5 +1,6 @@ SUBDIRS = gtkdoc -TARGETS = gtkdoc/libDatabase.types gtkdoc/tmpl.stamp gtkdoc/sgml.stamp gtkdoc/html.stamp +TARGETS = $(OBJDIR)gtkdoc/libDatabase.types $(OBJDIR)gtkdoc/tmpl.stamp $(OBJDIR)gtkdoc/sgml.stamp $(OBJDIR)gtkdoc/html.stamp +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f @@ -13,17 +14,17 @@ all: subdirs $(TARGETS) subdirs: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done -gtkdoc/libDatabase.types: ../config.sh - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/libDatabase.types" +$(OBJDIR)gtkdoc/libDatabase.types: ../config.sh + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/libDatabase.types" -gtkdoc/tmpl.stamp: gtkdoc/libDatabase.types - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/tmpl.stamp" +$(OBJDIR)gtkdoc/tmpl.stamp: gtkdoc/libDatabase.types + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/tmpl.stamp" -gtkdoc/sgml.stamp: gtkdoc/tmpl.stamp - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/sgml.stamp" +$(OBJDIR)gtkdoc/sgml.stamp: gtkdoc/tmpl.stamp + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/sgml.stamp" -gtkdoc/html.stamp: gtkdoc/libDatabase-docs.xml gtkdoc/sgml.stamp - ./gtkdoc.sh -P "$(PREFIX)" -- "gtkdoc/html.stamp" +$(OBJDIR)gtkdoc/html.stamp: gtkdoc/libDatabase-docs.xml gtkdoc/sgml.stamp + ./gtkdoc.sh -P "$(PREFIX)" -- "$(OBJDIR)gtkdoc/html.stamp" clean: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done @@ -44,7 +45,7 @@ distclean: install: $(TARGETS) @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done - ./gtkdoc.sh -P "$(DESTDIR)$(PREFIX)" -i -- "gtkdoc/html.stamp" + ./gtkdoc.sh -P "$(DESTDIR)$(PREFIX)" -i -- "$(OBJDIR)gtkdoc/html.stamp" uninstall: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done diff --git a/include/Database/Makefile b/include/Database/Makefile index 14d3b5d..55af515 100644 --- a/include/Database/Makefile +++ b/include/Database/Makefile @@ -1,3 +1,4 @@ +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f diff --git a/include/Makefile b/include/Makefile index 6ed7beb..855c0f4 100644 --- a/include/Makefile +++ b/include/Makefile @@ -1,4 +1,5 @@ SUBDIRS = Database +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f diff --git a/src/Makefile b/src/Makefile index 841c611..eeb8293 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,6 @@ SUBDIRS = engines -TARGETS = libDatabase.a libDatabase.so.0.0 libDatabase.so.0 libDatabase.so +TARGETS = $(OBJDIR)libDatabase.a $(OBJDIR)libDatabase.so.0.0 $(OBJDIR)libDatabase.so.0 $(OBJDIR)libDatabase.so +OBJDIR = PREFIX = /usr/local DESTDIR = LIBDIR = $(PREFIX)/lib @@ -23,21 +24,21 @@ all: subdirs $(TARGETS) subdirs: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done -libDatabase_OBJS = database.o +libDatabase_OBJS = $(OBJDIR)database.o libDatabase_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) libDatabase_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -libDatabase.a: $(libDatabase_OBJS) - $(AR) -rc libDatabase.a $(libDatabase_OBJS) - $(RANLIB) libDatabase.a +$(OBJDIR)libDatabase.a: $(libDatabase_OBJS) + $(AR) -rc $(OBJDIR)libDatabase.a $(libDatabase_OBJS) + $(RANLIB) $(OBJDIR)libDatabase.a -libDatabase.so.0.0 libDatabase.so.0 libDatabase.so: $(libDatabase_OBJS) - $(CCSHARED) -o libDatabase.so.0.0 -Wl,-soname,libDatabase.so.0 $(libDatabase_OBJS) $(libDatabase_LDFLAGS) - $(LN) -s -- libDatabase.so.0.0 libDatabase.so.0 - $(LN) -s -- libDatabase.so.0.0 libDatabase.so +$(OBJDIR)libDatabase.so.0.0 $(OBJDIR)libDatabase.so.0 $(OBJDIR)libDatabase.so: $(libDatabase_OBJS) + $(CCSHARED) -o $(OBJDIR)libDatabase.so.0.0 -Wl,-soname,libDatabase.so.0 $(libDatabase_OBJS) $(libDatabase_LDFLAGS) + $(LN) -s -- libDatabase.so.0.0 $(OBJDIR)libDatabase.so.0 + $(LN) -s -- libDatabase.so.0.0 $(OBJDIR)libDatabase.so -database.o: database.c ../include/Database/database.h - $(CC) $(libDatabase_CFLAGS) -c database.c +$(OBJDIR)database.o: database.c ../include/Database/database.h + $(CC) $(libDatabase_CFLAGS) -o $(OBJDIR)database.o -c database.c clean: @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done @@ -51,8 +52,8 @@ distclean: install: $(TARGETS) @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done $(MKDIR) $(DESTDIR)$(LIBDIR) - $(INSTALL) -m 0644 libDatabase.a $(DESTDIR)$(LIBDIR)/libDatabase.a - $(INSTALL) -m 0755 libDatabase.so.0.0 $(DESTDIR)$(LIBDIR)/libDatabase.so.0.0 + $(INSTALL) -m 0644 $(OBJDIR)libDatabase.a $(DESTDIR)$(LIBDIR)/libDatabase.a + $(INSTALL) -m 0755 $(OBJDIR)libDatabase.so.0.0 $(DESTDIR)$(LIBDIR)/libDatabase.so.0.0 $(LN) -s -- libDatabase.so.0.0 $(DESTDIR)$(LIBDIR)/libDatabase.so.0 $(LN) -s -- libDatabase.so.0.0 $(DESTDIR)$(LIBDIR)/libDatabase.so diff --git a/src/engines/Makefile b/src/engines/Makefile index ee5de8d..136cfdd 100644 --- a/src/engines/Makefile +++ b/src/engines/Makefile @@ -1,4 +1,5 @@ -TARGETS = pdo.so pgsql.so sqlite2.so sqlite3.so template.so +TARGETS = $(OBJDIR)pdo.so $(OBJDIR)pgsql.so $(OBJDIR)sqlite2.so $(OBJDIR)sqlite3.so $(OBJDIR)template.so +OBJDIR = PREFIX = /usr/local DESTDIR = LIBDIR = $(PREFIX)/lib @@ -18,55 +19,55 @@ INSTALL = install all: $(TARGETS) -pdo_OBJS = pdo.o +pdo_OBJS = $(OBJDIR)pdo.o pdo_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem` pdo_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --cflags libSystem` -pdo.so: $(pdo_OBJS) - $(CCSHARED) -o pdo.so $(pdo_OBJS) $(pdo_LDFLAGS) +$(OBJDIR)pdo.so: $(pdo_OBJS) + $(CCSHARED) -o $(OBJDIR)pdo.so $(pdo_OBJS) $(pdo_LDFLAGS) -pgsql_OBJS = pgsql.o +pgsql_OBJS = $(OBJDIR)pgsql.o pgsql_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I `pg_config --includedir` $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem` pgsql_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --cflags libSystem` -L `pg_config --libdir` -Wl,-rpath,`pg_config --libdir` -lpq -pgsql.so: $(pgsql_OBJS) - $(CCSHARED) -o pgsql.so $(pgsql_OBJS) $(pgsql_LDFLAGS) +$(OBJDIR)pgsql.so: $(pgsql_OBJS) + $(CCSHARED) -o $(OBJDIR)pgsql.so $(pgsql_OBJS) $(pgsql_LDFLAGS) -sqlite2_OBJS = sqlite2.o +sqlite2_OBJS = $(OBJDIR)sqlite2.o sqlite2_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags sqlite libSystem` sqlite2_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs sqlite libSystem` -sqlite2.so: $(sqlite2_OBJS) - $(CCSHARED) -o sqlite2.so $(sqlite2_OBJS) $(sqlite2_LDFLAGS) +$(OBJDIR)sqlite2.so: $(sqlite2_OBJS) + $(CCSHARED) -o $(OBJDIR)sqlite2.so $(sqlite2_OBJS) $(sqlite2_LDFLAGS) -sqlite3_OBJS = sqlite3.o +sqlite3_OBJS = $(OBJDIR)sqlite3.o sqlite3_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags sqlite3 libSystem` sqlite3_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs sqlite3 libSystem` -sqlite3.so: $(sqlite3_OBJS) - $(CCSHARED) -o sqlite3.so $(sqlite3_OBJS) $(sqlite3_LDFLAGS) +$(OBJDIR)sqlite3.so: $(sqlite3_OBJS) + $(CCSHARED) -o $(OBJDIR)sqlite3.so $(sqlite3_OBJS) $(sqlite3_LDFLAGS) -template_OBJS = template.o +template_OBJS = $(OBJDIR)template.o template_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem` template_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem` -template.so: $(template_OBJS) - $(CCSHARED) -o template.so $(template_OBJS) $(template_LDFLAGS) +$(OBJDIR)template.so: $(template_OBJS) + $(CCSHARED) -o $(OBJDIR)template.so $(template_OBJS) $(template_LDFLAGS) -pdo.o: pdo.c ../../include/Database/database.h ../../config.h - $(CC) -D PREFIX=\"$(PREFIX)\" $(pdo_CFLAGS) -c pdo.c +$(OBJDIR)pdo.o: pdo.c ../../include/Database/database.h ../../config.h + $(CC) -D PREFIX=\"$(PREFIX)\" $(pdo_CFLAGS) -o $(OBJDIR)pdo.o -c pdo.c -pgsql.o: pgsql.c ../../include/Database/database.h - $(CC) $(pgsql_CFLAGS) -c pgsql.c +$(OBJDIR)pgsql.o: pgsql.c ../../include/Database/database.h + $(CC) $(pgsql_CFLAGS) -o $(OBJDIR)pgsql.o -c pgsql.c -sqlite2.o: sqlite2.c ../../include/Database/database.h - $(CC) $(sqlite2_CFLAGS) -c sqlite2.c +$(OBJDIR)sqlite2.o: sqlite2.c ../../include/Database/database.h + $(CC) $(sqlite2_CFLAGS) -o $(OBJDIR)sqlite2.o -c sqlite2.c -sqlite3.o: sqlite3.c ../../include/Database/database.h - $(CC) $(sqlite3_CFLAGS) -c sqlite3.c +$(OBJDIR)sqlite3.o: sqlite3.c ../../include/Database/database.h + $(CC) $(sqlite3_CFLAGS) -o $(OBJDIR)sqlite3.o -c sqlite3.c -template.o: template.c ../../include/Database/database.h - $(CC) $(template_CFLAGS) -c template.c +$(OBJDIR)template.o: template.c ../../include/Database/database.h + $(CC) $(template_CFLAGS) -o $(OBJDIR)template.o -c template.c clean: $(RM) -- $(pdo_OBJS) $(pgsql_OBJS) $(sqlite2_OBJS) $(sqlite3_OBJS) $(template_OBJS) @@ -76,13 +77,13 @@ distclean: clean install: $(TARGETS) $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine - $(INSTALL) -m 0644 pdo.so $(DESTDIR)$(LIBDIR)/Database/engine/pdo.so + $(INSTALL) -m 0755 $(OBJDIR)pdo.so $(DESTDIR)$(LIBDIR)/Database/engine/pdo.so $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine - $(INSTALL) -m 0644 pgsql.so $(DESTDIR)$(LIBDIR)/Database/engine/pgsql.so + $(INSTALL) -m 0755 $(OBJDIR)pgsql.so $(DESTDIR)$(LIBDIR)/Database/engine/pgsql.so $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine - $(INSTALL) -m 0644 sqlite2.so $(DESTDIR)$(LIBDIR)/Database/engine/sqlite2.so + $(INSTALL) -m 0755 $(OBJDIR)sqlite2.so $(DESTDIR)$(LIBDIR)/Database/engine/sqlite2.so $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine - $(INSTALL) -m 0644 sqlite3.so $(DESTDIR)$(LIBDIR)/Database/engine/sqlite3.so + $(INSTALL) -m 0755 $(OBJDIR)sqlite3.so $(DESTDIR)$(LIBDIR)/Database/engine/sqlite3.so uninstall: $(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/pdo.so diff --git a/tests/Makefile b/tests/Makefile index 8532326..896522a 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,4 +1,5 @@ -TARGETS = tests.log +TARGETS = $(OBJDIR)tests.log +OBJDIR = PREFIX = /usr/local DESTDIR = RM = rm -f @@ -9,8 +10,8 @@ INSTALL = install all: $(TARGETS) -tests.log: python.sh tests.sh - ./tests.sh -P "$(PREFIX)" -- "tests.log" +$(OBJDIR)tests.log: python.sh tests.sh + ./tests.sh -P "$(PREFIX)" -- "$(OBJDIR)tests.log" clean: $(RM) -- $(tests.log_OBJS) diff --git a/tools/Makefile b/tools/Makefile index 498472f..5fa3c48 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,4 +1,5 @@ -TARGETS = client +TARGETS = $(OBJDIR)client +OBJDIR = PREFIX = /usr/local DESTDIR = BINDIR = $(PREFIX)/bin @@ -17,15 +18,15 @@ INSTALL = install all: $(TARGETS) -client_OBJS = client.o +client_OBJS = $(OBJDIR)client.o client_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) client_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -client: $(client_OBJS) - $(CC) -o client $(client_OBJS) $(client_LDFLAGS) +$(OBJDIR)client: $(client_OBJS) + $(CC) -o $(OBJDIR)client $(client_OBJS) $(client_LDFLAGS) -client.o: client.c - $(CC) $(client_CFLAGS) -c client.c +$(OBJDIR)client.o: client.c + $(CC) $(client_CFLAGS) -o $(OBJDIR)client.o -c client.c clean: $(RM) -- $(client_OBJS)