From 7bd5ce54f4d76658d99f32edc82eaf8fe93a144d Mon Sep 17 00:00:00 2001 From: Cyril Hrubis Date: Mon, 30 Apr 2012 19:25:03 +0200 Subject: [PATCH] build: Add build rule for dynamic library. Now the build process produces and installs dynamic library. The programms are still statically linked though. Signed-off-by: Cyril Hrubis --- Makefile | 35 +++++++++++++++++++++++------------ Makerules | 2 +- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 62bf4aa..c3f4df5 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ endif CC_CMD = $(QUIET_CC) $(CC) $(CFLAGS) -o $@ -c $< AR_CMD = $(QUIET_AR) $(AR) cru $@ $^ +SO_CMD = $(QUIET_LINK) $(CC) -fPIC --shared -Wl,-soname -Wl,`basename $@` $^ -o $@ LINK_CMD = $(QUIET_LINK) $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) MKDIR_CMD = $(QUIET_MKDIR) mkdir -p $@ @@ -73,7 +74,8 @@ $(OUT)/%.o : scripts/%.c | $(OUT) # --- Fitz, MuPDF, MuXPS and MuCBZ library --- -FITZ_LIB := $(OUT)/libfitz.a +FITZ_LIB_A := $(OUT)/libfitz.a +FITZ_LIB_SO := $(OUT)/libfitz.so.1.0 FITZ_SRC := $(notdir $(wildcard fitz/*.c draw/*.c)) FITZ_SRC := $(filter-out draw_simple_scale.c, $(FITZ_SRC)) @@ -81,12 +83,19 @@ MUPDF_SRC := $(notdir $(wildcard pdf/*.c)) MUXPS_SRC := $(notdir $(wildcard xps/*.c)) MUCBZ_SRC := $(notdir $(wildcard cbz/*.c)) -$(FITZ_LIB) : $(addprefix $(OUT)/, $(FITZ_SRC:%.c=%.o)) -$(FITZ_LIB) : $(addprefix $(OUT)/, $(MUPDF_SRC:%.c=%.o)) -$(FITZ_LIB) : $(addprefix $(OUT)/, $(MUXPS_SRC:%.c=%.o)) -$(FITZ_LIB) : $(addprefix $(OUT)/, $(MUCBZ_SRC:%.c=%.o)) +FITZ_OBJECT_FILES := $(addprefix $(OUT)/, $(FITZ_SRC:%.c=%.o)) \ + $(addprefix $(OUT)/, $(MUPDF_SRC:%.c=%.o)) \ + $(addprefix $(OUT)/, $(MUXPS_SRC:%.c=%.o)) \ + $(addprefix $(OUT)/, $(MUCBZ_SRC:%.c=%.o)) -libs: $(FITZ_LIB) $(THIRD_LIBS) +$(FITZ_LIB_A) : $(FITZ_OBJECT_FILES) +$(FITZ_LIB_SO) : $(FITZ_OBJECT_FILES) + +libs: $(FITZ_LIB_A) $(FITZ_LIB_SO) $(THIRD_LIBS) + +$(FITZ_LIB_SO) : + $(SO_CMD) + @cd $(OUT) && ln -s `basename $(FITZ_LIB_SO)` libfitz.so # --- Generated CMAP and FONT files --- @@ -135,16 +144,16 @@ $(OUT)/cmapdump.o : pdf/pdf_cmap.c pdf/pdf_cmap_parse.c MU_APPS := $(addprefix $(OUT)/, mudraw mupdfclean mupdfextract mupdfinfo mupdfshow mupdfposter) -$(MU_APPS) : $(FITZ_LIB) $(THIRD_LIBS) +$(MU_APPS) : $(FITZ_LIB_A) $(THIRD_LIBS) BUSY_SRC := $(notdir $(wildcard apps/mubusy_*.c)) BUSY_APP := $(addprefix $(OUT)/, mubusy) $(BUSY_APP) : $(addprefix $(OUT)/, $(BUSY_SRC:%.c=%.o)) -$(BUSY_APP) : $(FITZ_LIB) $(THIRD_LIBS) +$(BUSY_APP) : $(FITZ_LIB_A) $(THIRD_LIBS) ifeq "$(NOX11)" "" MUPDF := $(OUT)/mupdf -$(MUPDF) : $(FITZ_LIB) $(THIRD_LIBS) +$(MUPDF) : $(FITZ_LIB_A) $(THIRD_LIBS) $(MUPDF) : $(addprefix $(OUT)/, x11_main.o x11_image.o pdfapp.o) $(LINK_CMD) $(X11_LIBS) endif @@ -167,16 +176,18 @@ libdir ?= $(prefix)/lib incdir ?= $(prefix)/include mandir ?= $(prefix)/share/man -install: $(FITZ_LIB) $(MU_APPS) $(MUPDF) +install: $(FITZ_LIB_A) $(MU_APPS) $(MUPDF) install -d $(bindir) $(libdir) $(incdir) $(mandir)/man1 - install $(FITZ_LIB) $(libdir) + install $(FITZ_LIB_A) $(libdir) + install $(FITZ_LIB_SO) $(libdir) + install $(OUT)/libfitz.so $(libdir) install fitz/memento.h fitz/fitz.h pdf/mupdf.h xps/muxps.h cbz/mucbz.h $(incdir) install $(MU_APPS) $(MUPDF) $(bindir) install $(wildcard apps/man/*.1) $(mandir)/man1 # --- Clean and Default --- -all: $(THIRD_LIBS) $(FITZ_LIB) $(MU_APPS) $(MUPDF) $(BUSY_APP) +all: $(THIRD_LIBS) $(FITZ_LIB_A) $(FITZ_LIB_SO) $(MU_APPS) $(MUPDF) $(BUSY_APP) clean: rm -rf $(OUT) diff --git a/Makerules b/Makerules index 26eab3c..f3833fb 100644 --- a/Makerules +++ b/Makerules @@ -3,7 +3,7 @@ OS ?= $(shell uname) OS := $(OS:MINGW%=MINGW) -CFLAGS += -Wall +CFLAGS += -Wall -fPIC ifeq "$(build)" "debug" CFLAGS += -pipe -g -DDEBUG -- 1.7.10