From 16e68c7cdd2637a0bdb0c935d38dbaf9b36837a8 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 20 Nov 2011 04:41:00 +0000 Subject: [PATCH] Linking mailer and compose with a common library (libMailer) --- Makefile | 6 ++-- data/Mailer.pc.in | 1 + src/Makefile | 83 ++++++++++++++++++++++++++++++----------------- src/project.conf | 22 +++++++++---- 4 files changed, 73 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index 73c0ec0..87e4fb3 100644 --- a/Makefile +++ b/Makefile @@ -62,14 +62,14 @@ dist: $(PACKAGE)-$(VERSION)/po/POTFILES \ $(PACKAGE)-$(VERSION)/po/fr.po \ $(PACKAGE)-$(VERSION)/po/project.conf \ - $(PACKAGE)-$(VERSION)/src/compose.c \ - $(PACKAGE)-$(VERSION)/src/compose-main.c \ $(PACKAGE)-$(VERSION)/src/account.c \ $(PACKAGE)-$(VERSION)/src/callbacks.c \ + $(PACKAGE)-$(VERSION)/src/compose.c \ $(PACKAGE)-$(VERSION)/src/folder.c \ $(PACKAGE)-$(VERSION)/src/mailer.c \ - $(PACKAGE)-$(VERSION)/src/main.c \ $(PACKAGE)-$(VERSION)/src/message.c \ + $(PACKAGE)-$(VERSION)/src/compose-main.c \ + $(PACKAGE)-$(VERSION)/src/main.c \ $(PACKAGE)-$(VERSION)/src/Makefile \ $(PACKAGE)-$(VERSION)/src/account.h \ $(PACKAGE)-$(VERSION)/src/callbacks.h \ diff --git a/data/Mailer.pc.in b/data/Mailer.pc.in index e38d9c7..23ee7e8 100644 --- a/data/Mailer.pc.in +++ b/data/Mailer.pc.in @@ -8,3 +8,4 @@ Description: DeforaOS Desktop Mailer plug-ins Version: VERSION Requires: libDesktop Cflags: -I${includedir} +Libs: -Wl,-R${libdir} -L${libdir} -lMailer diff --git a/src/Makefile b/src/Makefile index 42caa88..5f68a72 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,15 +1,18 @@ SUBDIRS = account plugins -TARGETS = compose mailer +TARGETS = libMailer.a libMailer.so.0.0 libMailer.so.0 libMailer.so compose mailer PREFIX = /usr/local DESTDIR = -BINDIR = $(PREFIX)/bin +LIBDIR = $(PREFIX)/lib CC ?= cc CPPFLAGSF= -I ../include CPPFLAGS?= -CFLAGSF = -W `pkg-config --cflags libSystem libDesktop` +CFLAGSF = -W `pkg-config --cflags libDesktop` CFLAGS = -Wall -g -O2 -pedantic -LDFLAGSF= `pkg-config --libs libSystem libDesktop` LDFLAGS = +AR ?= ar +RANLIB ?= ranlib +CCSHARED?= $(CC) -shared +BINDIR = $(PREFIX)/bin RM ?= rm -f LN ?= ln -f MKDIR ?= mkdir -p @@ -21,55 +24,73 @@ all: subdirs $(TARGETS) subdirs: @for i in $(SUBDIRS); do (cd $$i && $(MAKE)) || exit; done -compose_OBJS = compose.o compose-main.o -compose_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -compose_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) +libMailer_OBJS = account.o callbacks.o compose.o folder.o mailer.o message.o +libMailer_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -fPIC +libMailer_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libDesktop` -compose: $(compose_OBJS) +libMailer.a: $(libMailer_OBJS) + $(AR) -rc libMailer.a $(libMailer_OBJS) + $(RANLIB) libMailer.a + +libMailer.so.0.0 libMailer.so.0 libMailer.so: $(libMailer_OBJS) + $(CCSHARED) -o libMailer.so.0.0 -Wl,-soname,libMailer.so.0 $(libMailer_OBJS) $(libMailer_LDFLAGS) + $(LN) -s -- libMailer.so.0.0 libMailer.so.0 + $(LN) -s -- libMailer.so.0.0 libMailer.so + +compose_OBJS = compose-main.o +compose_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) +compose_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs gtk+-2.0` -L . -Wl,-rpath,$(PREFIX)/lib -lMailer + +compose: $(compose_OBJS) libMailer.so $(CC) -o compose $(compose_OBJS) $(compose_LDFLAGS) -mailer_OBJS = account.o callbacks.o folder.o mailer.o main.o message.o +mailer_OBJS = main.o mailer_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) -mailer_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) compose.o +mailer_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs gtk+-2.0` -L . -Wl,-rpath,$(PREFIX)/lib -lMailer -mailer: $(mailer_OBJS) compose.o +mailer: $(mailer_OBJS) libMailer.so $(CC) -o mailer $(mailer_OBJS) $(mailer_LDFLAGS) +account.o: account.c mailer.h message.h account.h ../config.h + $(CC) -D PREFIX=\"$(PREFIX)\" $(libMailer_CFLAGS) -c account.c + +callbacks.o: callbacks.c account.h callbacks.h compose.h mailer.h gtkassistant.c + $(CC) $(libMailer_CFLAGS) -c callbacks.c + compose.o: compose.c callbacks.h mailer.h compose.h ../config.h - $(CC) $(compose_CFLAGS) -c compose.c + $(CC) $(libMailer_CFLAGS) -c compose.c + +folder.o: folder.c mailer.h folder.h + $(CC) $(libMailer_CFLAGS) -c folder.c + +mailer.o: mailer.c account.h callbacks.h compose.h mailer.h ../config.h + $(CC) -D PREFIX=\"$(PREFIX)\" $(libMailer_CFLAGS) -c mailer.c + +message.o: message.c + $(CC) $(libMailer_CFLAGS) -c message.c compose-main.o: compose-main.c compose.h $(CC) $(compose_CFLAGS) -c compose-main.c -account.o: account.c mailer.h message.h account.h ../config.h - $(CC) -D PREFIX=\"$(PREFIX)\" $(mailer_CFLAGS) -c account.c - -callbacks.o: callbacks.c account.h callbacks.h compose.h mailer.h gtkassistant.c - $(CC) $(mailer_CFLAGS) -c callbacks.c - -folder.o: folder.c mailer.h folder.h - $(CC) $(mailer_CFLAGS) -c folder.c - -mailer.o: mailer.c account.h callbacks.h compose.h mailer.h ../config.h - $(CC) -D PREFIX=\"$(PREFIX)\" $(mailer_CFLAGS) -c mailer.c - main.o: main.c mailer.h ../config.h $(CC) -D PREFIX=\"$(PREFIX)\" $(mailer_CFLAGS) -c main.c -message.o: message.c - $(CC) $(mailer_CFLAGS) -c message.c - clean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done - $(RM) -- $(compose_OBJS) $(mailer_OBJS) + $(RM) -- $(libMailer_OBJS) $(compose_OBJS) $(mailer_OBJS) distclean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done - $(RM) -- $(compose_OBJS) $(mailer_OBJS) + $(RM) -- $(libMailer_OBJS) $(compose_OBJS) $(mailer_OBJS) $(RM) -- $(TARGETS) install: $(TARGETS) @for i in $(SUBDIRS); do (cd $$i && $(MAKE) install) || exit; done + $(MKDIR) $(DESTDIR)$(LIBDIR) + $(INSTALL) -m 0644 -- libMailer.a $(DESTDIR)$(LIBDIR)/libMailer.a + $(INSTALL) -m 0755 -- libMailer.so.0.0 $(DESTDIR)$(LIBDIR)/libMailer.so.0.0 + $(LN) -s -- libMailer.so.0.0 $(DESTDIR)$(LIBDIR)/libMailer.so.0 + $(LN) -s -- libMailer.so.0.0 $(DESTDIR)$(LIBDIR)/libMailer.so $(MKDIR) $(DESTDIR)$(BINDIR) $(INSTALL) -m 0755 -- compose $(DESTDIR)$(BINDIR)/compose $(MKDIR) $(DESTDIR)$(BINDIR) @@ -77,6 +98,10 @@ install: $(TARGETS) uninstall: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) uninstall) || exit; done + $(RM) -- $(DESTDIR)$(LIBDIR)/libMailer.a + $(RM) -- $(DESTDIR)$(LIBDIR)/libMailer.so.0.0 + $(RM) -- $(DESTDIR)$(LIBDIR)/libMailer.so.0 + $(RM) -- $(DESTDIR)$(LIBDIR)/libMailer.so $(RM) -- $(DESTDIR)$(BINDIR)/compose $(RM) -- $(DESTDIR)$(BINDIR)/mailer diff --git a/src/project.conf b/src/project.conf index b66afbf..7286a8e 100644 --- a/src/project.conf +++ b/src/project.conf @@ -1,23 +1,31 @@ subdirs=account,plugins -targets=compose,mailer +targets=libMailer,compose,mailer cppflags_force=-I ../include #cppflags=-D EMBEDDED -cflags_force=-W `pkg-config --cflags libSystem libDesktop` +cflags_force=-W `pkg-config --cflags libDesktop` cflags=-Wall -g -O2 -pedantic -ldflags_force=`pkg-config --libs libSystem libDesktop` ldflags= dist=Makefile,account.h,callbacks.h,common.c,compose.h,folder.h,mailer.h,message.h,gtkassistant.c +[libMailer] +type=library +cflags=-fPIC +ldflags=`pkg-config --libs libDesktop` +sources=account.c,callbacks.c,compose.c,folder.c,mailer.c,message.c +install=$(LIBDIR) + [compose] type=binary -sources=compose.c,compose-main.c +depends=libMailer.so +sources=compose-main.c +ldflags=`pkg-config --libs gtk+-2.0` -L . -Wl,-rpath,$(PREFIX)/lib -lMailer install=$(BINDIR) [mailer] type=binary -sources=account.c,callbacks.c,folder.c,mailer.c,main.c,message.c -depends=compose.o -ldflags=compose.o +depends=libMailer.so +sources=main.c +ldflags=`pkg-config --libs gtk+-2.0` -L . -Wl,-rpath,$(PREFIX)/lib -lMailer install=$(BINDIR) [account.c]