Added support for building with OBJDIR

This commit is contained in:
Pierre Pronchery 2014-11-12 21:26:43 +01:00
parent 1836e19cb0
commit b92f6b98a8
10 changed files with 98 additions and 72 deletions

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -1,3 +1,4 @@
OBJDIR =
PREFIX = /usr/local
DESTDIR =
RM = rm -f

View File

@ -1,4 +1,5 @@
SUBDIRS = Database
OBJDIR =
PREFIX = /usr/local
DESTDIR =
RM = rm -f

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)