From aaa0ba27550e261de18b4ce6cae3743e89232279 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Wed, 25 Oct 2023 15:58:47 +0200 Subject: [PATCH] Makefile: Build libweb also as a shared library --- .gitignore | 2 ++ Makefile | 26 ++++++++++++++++++++------ dynstr | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 97946af..e39347a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ *.o *.a *.d +*.so +*.so.* examples/hello/hello examples/html/html diff --git a/Makefile b/Makefile index ceb27f6..3bc28ea 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,21 @@ .POSIX: -PROJECT = libweb.a +PROJECT = libweb +PROJECT_A = $(PROJECT).a +MAJOR_VERSION = 0 +MINOR_VERSION = 1 +PATCH_VERSION = 0 +VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_VERSION) +PROJECT_SO = $(PROJECT).so.$(VERSION) +PROJECT_SO_FQ = $(PROJECT).so.$(MAJOR_VERSION) +PROJECT_SO_NV = $(PROJECT).so PREFIX = /usr/local DST = $(PREFIX)/lib PC_DST = $(DST)/pkgconfig O = -Og CDEFS = -D_FILE_OFFSET_BITS=64 # Required for large file support on 32-bit. -CFLAGS = $(O) $(CDEFS) -g -Iinclude -Idynstr/include -MD -MF $(@:.o=.d) +CFLAGS = $(O) $(CDEFS) -g -Iinclude -Idynstr/include -fPIC -MD -MF $(@:.o=.d) +LDFLAGS = -shared DEPS = $(OBJECTS:.o=.d) OBJECTS = \ handler.o \ @@ -15,15 +24,17 @@ OBJECTS = \ server.o \ wildcard_cmp.o -all: $(PROJECT) +all: $(PROJECT_A) $(PROJECT_SO) install: all $(PC_DST)/libweb.pc mkdir -p $(PREFIX)/include cp -R include/libweb $(PREFIX)/include chmod 0644 $(PREFIX)/include/libweb/*.h mkdir -p $(DST) - cp $(PROJECT) $(DST) - chmod 0755 $(DST)/$(PROJECT) + cp $(PROJECT_A) $(PROJECT_SO) $(DST) + chmod 0755 $(DST)/$(PROJECT_A) $(DST)/$(PROJECT_SO) + ln -fs $(DST)/$(PROJECT_SO) $(DST)/$(PROJECT_SO_FQ) + ln -fs $(DST)/$(PROJECT_SO) $(DST)/$(PROJECT_SO_NV) +cd doc && $(MAKE) PREFIX=$(PREFIX) install clean: @@ -35,9 +46,12 @@ FORCE: examples: FORCE +cd examples && $(MAKE) -$(PROJECT): $(OBJECTS) +$(PROJECT_A): $(OBJECTS) $(AR) $(ARFLAGS) $@ $(OBJECTS) +$(PROJECT_SO): $(OBJECTS) + $(CC) $(LDFLAGS) $(OBJECTS) -o $@ + $(PC_DST)/libweb.pc: libweb.pc mkdir -p $(PC_DST) sed -e 's,/usr/local,$(PREFIX),' $< > $@ diff --git a/dynstr b/dynstr index de0d0e9..80057fd 160000 --- a/dynstr +++ b/dynstr @@ -1 +1 @@ -Subproject commit de0d0e9fab2dc8e5886484c680d7ab9062ad3952 +Subproject commit 80057fd3c1e2ed11e1c1d6e01e4c8d60042cf30d