From 6e710609f72c310d76d811c4a5eb94b0c5f0d93e Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Mon, 29 Oct 2012 21:01:30 +0100 Subject: [PATCH] Building and installing the libDatabase shared library Moved the modules to $(LIBDIR)/Database/engine --- src/Makefile | 28 ++++++++++++++++++++-------- src/database.c | 2 +- src/database/Makefile | 18 +++++++++--------- src/database/project.conf | 6 +++--- src/project.conf | 6 +++--- 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/Makefile b/src/Makefile index acfc37c..d5c86f2 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,14 +1,16 @@ SUBDIRS = database -TARGETS = database.o +TARGETS = libDatabase.a libDatabase.so.0.0 libDatabase.so.0 libDatabase.so PREFIX = /usr/local DESTDIR = -BINDIR = $(PREFIX)/bin -SBINDIR = $(PREFIX)/sbin +LIBDIR = $(PREFIX)/lib CC ?= cc CPPFLAGSF?= CPPFLAGS?= CFLAGSF = -W -fPIC CFLAGS = -Wall -g -O2 -pedantic +AR ?= ar +RANLIB ?= ranlib +CCSHARED?= $(CC) -shared RM ?= rm -f LN ?= ln -f MKDIR ?= mkdir -p @@ -20,19 +22,29 @@ all: subdirs $(TARGETS) subdirs: @for i in $(SUBDIRS); do (cd $$i && $(MAKE)) || exit; done -database.o_OBJS = database.o -database.o_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) +libDatabase_OBJS = 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 + +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 database.o: database.c database/database.h - $(CC) $(database.o_CFLAGS) -c database.c + $(CC) $(libDatabase_CFLAGS) -c database.c clean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done - $(RM) -- $(database.o_OBJS) + $(RM) -- $(libDatabase_OBJS) distclean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done - $(RM) -- $(database.o_OBJS) + $(RM) -- $(libDatabase_OBJS) $(RM) -- $(TARGETS) install: $(TARGETS) diff --git a/src/database.c b/src/database.c index ce1566b..8586920 100644 --- a/src/database.c +++ b/src/database.c @@ -43,7 +43,7 @@ Database * database_new(char const * engine, Config * config, if((database = object_new(sizeof(*database))) == NULL) return NULL; memset(database, 0, sizeof(*database)); - if((database->plugin = plugin_new(LIBDIR, PACKAGE, "database", + if((database->plugin = plugin_new(LIBDIR, "Database", "engine", engine)) == NULL || (database->dplugin = plugin_lookup(database->plugin, "database")) == NULL diff --git a/src/database/Makefile b/src/database/Makefile index 245d662..0d2fd1d 100644 --- a/src/database/Makefile +++ b/src/database/Makefile @@ -65,16 +65,16 @@ distclean: clean $(RM) -- $(TARGETS) install: $(TARGETS) - $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/database - $(INSTALL) -m 0644 -- pgsql.so $(DESTDIR)$(LIBDIR)/Database/database/pgsql.so - $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/database - $(INSTALL) -m 0644 -- sqlite2.so $(DESTDIR)$(LIBDIR)/Database/database/sqlite2.so - $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/database - $(INSTALL) -m 0644 -- sqlite3.so $(DESTDIR)$(LIBDIR)/Database/database/sqlite3.so + $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine + $(INSTALL) -m 0644 -- pgsql.so $(DESTDIR)$(LIBDIR)/Database/engine/pgsql.so + $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine + $(INSTALL) -m 0644 -- sqlite2.so $(DESTDIR)$(LIBDIR)/Database/engine/sqlite2.so + $(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine + $(INSTALL) -m 0644 -- sqlite3.so $(DESTDIR)$(LIBDIR)/Database/engine/sqlite3.so uninstall: - $(RM) -- $(DESTDIR)$(LIBDIR)/Database/database/pgsql.so - $(RM) -- $(DESTDIR)$(LIBDIR)/Database/database/sqlite2.so - $(RM) -- $(DESTDIR)$(LIBDIR)/Database/database/sqlite3.so + $(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/pgsql.so + $(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/sqlite2.so + $(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/sqlite3.so .PHONY: all clean distclean install uninstall diff --git a/src/database/project.conf b/src/database/project.conf index 6b0ca65..1539292 100644 --- a/src/database/project.conf +++ b/src/database/project.conf @@ -8,7 +8,7 @@ type=plugin cppflags=-I `pg_config --includedir` ldflags=-L `pg_config --libdir` -Wl,-rpath,`pg_config --libdir` `pg_config --libs` -lpq sources=pgsql.c -install=$(LIBDIR)/Database/database +install=$(LIBDIR)/Database/engine [pgsql.c] depends=database.h @@ -18,7 +18,7 @@ type=plugin cflags=`pkg-config --cflags sqlite` ldflags=`pkg-config --libs sqlite` sources=sqlite2.c -install=$(LIBDIR)/Database/database +install=$(LIBDIR)/Database/engine [sqlite2.c] depends=database.h @@ -28,7 +28,7 @@ type=plugin cflags=`pkg-config --cflags sqlite3` ldflags=`pkg-config --libs sqlite3` sources=sqlite3.c -install=$(LIBDIR)/Database/database +install=$(LIBDIR)/Database/engine [sqlite3.c] depends=database.h diff --git a/src/project.conf b/src/project.conf index b6ba281..6927798 100644 --- a/src/project.conf +++ b/src/project.conf @@ -1,11 +1,11 @@ subdirs=database -targets=database.o +targets=libDatabase cflags_force=-W -fPIC cflags=-Wall -g -O2 -pedantic dist=Makefile -[database.o] -type=object +[libDatabase] +type=library sources=database.c [database.c]