From 40fed80e4cc03cee4d546c3b2110e27471dc28af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Thu, 2 Nov 2023 14:24:52 +0100 Subject: [PATCH 1/7] Makefile: Configurable BUILDDIR --- Makefile | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index a22442b..dfb64c7 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ HELPER ?= BINEXT ?= +BUILDDIR ?= $(CURDIR) CC?=gcc AR?=ar @@ -38,40 +39,41 @@ CFLAGS += -Wall -Wextra -Werror CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA) CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA) -test: test_g test_fast - $(HELPER) ./test_g$(BINEXT) - $(HELPER) ./test_fast$(BINEXT) +test: $(BUILDDIR)/test_g $(BUILDDIR)/test_fast + $(HELPER) $(BUILDDIR)/test_g$(BINEXT) + $(HELPER) $(BUILDDIR)/test_fast$(BINEXT) -test_g: url_parser_g.o test_g.o - $(CC) $(CFLAGS_DEBUG) $(LDFLAGS) url_parser_g.o test_g.o -o $@ +$(BUILDDIR)/test_g: $(BUILDDIR)/url_parser_g.o $(BUILDDIR)/test_g.o + $(CC) $(CFLAGS_DEBUG) $(LDFLAGS) $(BUILDDIR)/url_parser_g.o $(BUILDDIR)/test_g.o -o $@ -test_g.o: test.c url_parser.h Makefile +$(BUILDDIR)/test_g.o: test.c url_parser.h Makefile $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) -c test.c -o $@ -url_parser_g.o: url_parser.c url_parser.h Makefile +$(BUILDDIR)/url_parser_g.o: url_parser.c url_parser.h Makefile $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) -c url_parser.c -o $@ -test_fast: url_parser.o test.o url_parser.h - $(CC) $(CFLAGS_FAST) $(LDFLAGS) url_parser.o test.o -o $@ +$(BUILDDIR)/test_fast: $(BUILDDIR)/url_parser.o $(BUILDDIR)/test.o url_parser.h + $(CC) $(CFLAGS_FAST) $(LDFLAGS) $(BUILDDIR)/url_parser.o $(BUILDDIR)/test.o -o $@ -test.o: test.c url_parser.h Makefile +$(BUILDDIR)/test.o: test.c url_parser.h Makefile $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) -c test.c -o $@ -url_parser.o: url_parser.c url_parser.h Makefile - $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) -c url_parser.c +$(BUILDDIR)/url_parser.o: url_parser.c url_parser.h Makefile + $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) -c url_parser.c -o $@ test-valgrind: test_g valgrind ./test_g -url_parser: url_parser.o url_parser_demo.c +$(BUILDDIR)/url_parser: $(BINDIR)/url_parser.o url_parser_demo.c $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) $^ -o $@ -url_parser_g: url_parser_g.o url_parser_demo.c +$(BUILDDIR)/url_parser_g: $(BUILDDIR)/url_parser_g.o url_parser_demo.c $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) $^ -o $@ clean: - rm -f *.o *.a tags test test_fast test_g \ - *.exe *.exe.so + rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.a $(BUILDDIR)/*.so \ + $(BUILDDIR)/test_fast $(BUILDDIR)/test_g \ + $(BUILDDIR)/url_parser $(BUILDDIR)/url_parser_g url_parser_demo.c: url_parser.h From 5e88f36fc7b423d7968a173beb0ec7d657970b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Thu, 2 Nov 2023 15:23:02 +0100 Subject: [PATCH 2/7] Makefile: Add install and library targets --- Makefile | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index dfb64c7..4fd5a0b 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,13 @@ HELPER ?= BINEXT ?= BUILDDIR ?= $(CURDIR) +SOLIBNAME = liburl_parser +SOMAJOR = 1 +SOMINOR = 0 +SOREV = 0 +SOEXT ?= so +SONAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR) +LIBNAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR).$(SOREV) CC?=gcc AR?=ar @@ -38,6 +45,16 @@ CPPFLAGS_BENCH = $(CPPFLAGS_FAST) CFLAGS += -Wall -Wextra -Werror CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA) CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA) +CFLAGS_LIB = $(CFLAGS_FAST) -fPIC + +LDFLAGS_LIB = $(LDFLAGS) -shared + +INSTALL ?= install +PREFIX ?= /usr/local +LIBDIR = $(PREFIX)/lib +INCLUDEDIR = $(PREFIX)/include + +all: library test: $(BUILDDIR)/test_g $(BUILDDIR)/test_fast $(HELPER) $(BUILDDIR)/test_g$(BINEXT) @@ -64,12 +81,38 @@ $(BUILDDIR)/url_parser.o: url_parser.c url_parser.h Makefile test-valgrind: test_g valgrind ./test_g -$(BUILDDIR)/url_parser: $(BINDIR)/url_parser.o url_parser_demo.c +$(BUILDDIR)/liburl_parser.o: url_parser.c url_parser.h Makefile + $(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c url_parser.c -o $@ + +library: $(BUILDDIR)/$(LIBNAME) + +$(BUILDDIR)/$(LIBNAME): $(BUILDDIR)/liburl_parser.o + $(CC) $(LDFLAGS_LIB) -o $@ $< + +$(BUILDDIR)/url_parser: $(BUILDDIR)/url_parser.o url_parser_demo.c $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) $^ -o $@ $(BUILDDIR)/url_parser_g: $(BUILDDIR)/url_parser_g.o url_parser_demo.c $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) $^ -o $@ +install: library + $(INSTALL) -D url_parser.h $(DESTDIR)$(INCLUDEDIR)/url_parser.h + $(INSTALL) -D $(BUILDDIR)/$(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) + ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) + ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + +install-strip: library + $(INSTALL) -D url_parser.h $(DESTDIR)$(INCLUDEDIR)/url_parser.h + $(INSTALL) -D -s $(BUILDDIR)/$(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) + ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) + ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + +uninstall: + rm $(DESTDIR)$(INCLUDEDIR)/url_parser.h + rm $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + rm $(DESTDIR)$(LIBDIR)/$(SONAME) + rm $(DESTDIR)$(LIBDIR)/$(LIBNAME) + clean: rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.a $(BUILDDIR)/*.so \ $(BUILDDIR)/test_fast $(BUILDDIR)/test_g \ @@ -77,4 +120,4 @@ clean: url_parser_demo.c: url_parser.h -.PHONY: clean test test-valgrind +.PHONY: all library install install-strip uninstall clean test test-valgrind From cdca89115876113963985b4f89d52a720f6ee636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Thu, 2 Nov 2023 17:25:03 +0100 Subject: [PATCH 3/7] Makefile: Add .a file to install target --- Makefile | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 4fd5a0b..f8518bd 100644 --- a/Makefile +++ b/Makefile @@ -89,20 +89,27 @@ library: $(BUILDDIR)/$(LIBNAME) $(BUILDDIR)/$(LIBNAME): $(BUILDDIR)/liburl_parser.o $(CC) $(LDFLAGS_LIB) -o $@ $< +package: $(BUILDDIR)/liburl_parser.a + +$(BUILDDIR)/liburl_parser.a: $(BUILDDIR)/url_parser.o + $(AR) rcs $@ $< + $(BUILDDIR)/url_parser: $(BUILDDIR)/url_parser.o url_parser_demo.c $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) $^ -o $@ $(BUILDDIR)/url_parser_g: $(BUILDDIR)/url_parser_g.o url_parser_demo.c $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) $^ -o $@ -install: library +install: library package $(INSTALL) -D url_parser.h $(DESTDIR)$(INCLUDEDIR)/url_parser.h + $(INSTALL) -D $(BUILDDIR)/liburl_parser.a $(DESTDIR)$(LIBDIR)/liburl_parser.a $(INSTALL) -D $(BUILDDIR)/$(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) -install-strip: library +install-strip: library package $(INSTALL) -D url_parser.h $(DESTDIR)$(INCLUDEDIR)/url_parser.h + $(INSTALL) -D -s $(BUILDDIR)/liburl_parser.a $(DESTDIR)$(LIBDIR)/liburl_parser.a $(INSTALL) -D -s $(BUILDDIR)/$(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) @@ -112,6 +119,7 @@ uninstall: rm $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) rm $(DESTDIR)$(LIBDIR)/$(SONAME) rm $(DESTDIR)$(LIBDIR)/$(LIBNAME) + rm $(DESTDIR)$(LIBDIR)/liburl_parser.a clean: rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.a $(BUILDDIR)/*.so \ @@ -120,4 +128,4 @@ clean: url_parser_demo.c: url_parser.h -.PHONY: all library install install-strip uninstall clean test test-valgrind +.PHONY: all library package install install-strip uninstall clean test test-valgrind From 6db9a96cdf4663065d7c742cc720b99a2162fdab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Fri, 3 Nov 2023 14:45:37 +0100 Subject: [PATCH 4/7] Makefile: Remove unnecessary variables --- Makefile | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index f8518bd..30e839e 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,6 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. -HELPER ?= -BINEXT ?= BUILDDIR ?= $(CURDIR) SOLIBNAME = liburl_parser SOMAJOR = 1 @@ -29,9 +27,6 @@ SOEXT ?= so SONAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR) LIBNAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR).$(SOREV) -CC?=gcc -AR?=ar - CPPFLAGS ?= LDFLAGS ?= @@ -57,8 +52,8 @@ INCLUDEDIR = $(PREFIX)/include all: library test: $(BUILDDIR)/test_g $(BUILDDIR)/test_fast - $(HELPER) $(BUILDDIR)/test_g$(BINEXT) - $(HELPER) $(BUILDDIR)/test_fast$(BINEXT) + $(BUILDDIR)/test_g + $(BUILDDIR)/test_fast $(BUILDDIR)/test_g: $(BUILDDIR)/url_parser_g.o $(BUILDDIR)/test_g.o $(CC) $(CFLAGS_DEBUG) $(LDFLAGS) $(BUILDDIR)/url_parser_g.o $(BUILDDIR)/test_g.o -o $@ From 27b2064e733dbdfa764b2c0446ecf0c48a6e8502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Mon, 6 Nov 2023 12:27:14 +0100 Subject: [PATCH 5/7] Makefile: Use linker flag -soname for .so file --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 30e839e..d137c7f 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA) CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA) CFLAGS_LIB = $(CFLAGS_FAST) -fPIC -LDFLAGS_LIB = $(LDFLAGS) -shared +LDFLAGS_LIB = $(LDFLAGS) -shared -Wl,-soname,$(SONAME) INSTALL ?= install PREFIX ?= /usr/local From a2ef1c84db7dcc964d0854e4737335cfbfee80f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Mon, 6 Nov 2023 13:01:57 +0100 Subject: [PATCH 6/7] Remove more implicit variables --- Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile b/Makefile index d137c7f..26c5f85 100644 --- a/Makefile +++ b/Makefile @@ -27,9 +27,6 @@ SOEXT ?= so SONAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR) LIBNAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR).$(SOREV) -CPPFLAGS ?= -LDFLAGS ?= - CPPFLAGS += -I. CPPFLAGS_DEBUG = $(CPPFLAGS) -DHTTP_PARSER_STRICT=1 CPPFLAGS_DEBUG += $(CPPFLAGS_DEBUG_EXTRA) From 4c1772e11bcb6a3098d1458f2ca7b0d228ffe5ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20S=C3=B6derqvist?= Date: Tue, 7 Nov 2023 20:40:47 +0100 Subject: [PATCH 7/7] Makefile: Swap names of LIBNAME and SOLIBNAME variables --- Makefile | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 26c5f85..263af35 100644 --- a/Makefile +++ b/Makefile @@ -19,13 +19,13 @@ # IN THE SOFTWARE. BUILDDIR ?= $(CURDIR) -SOLIBNAME = liburl_parser +LIBNAME = liburl_parser SOMAJOR = 1 SOMINOR = 0 SOREV = 0 SOEXT ?= so -SONAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR) -LIBNAME ?= $(SOLIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR).$(SOREV) +SONAME ?= $(LIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR) +SOLIBNAME ?= $(LIBNAME).$(SOEXT).$(SOMAJOR).$(SOMINOR).$(SOREV) CPPFLAGS += -I. CPPFLAGS_DEBUG = $(CPPFLAGS) -DHTTP_PARSER_STRICT=1 @@ -76,14 +76,14 @@ test-valgrind: test_g $(BUILDDIR)/liburl_parser.o: url_parser.c url_parser.h Makefile $(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c url_parser.c -o $@ -library: $(BUILDDIR)/$(LIBNAME) +library: $(BUILDDIR)/$(SOLIBNAME) -$(BUILDDIR)/$(LIBNAME): $(BUILDDIR)/liburl_parser.o +$(BUILDDIR)/$(SOLIBNAME): $(BUILDDIR)/liburl_parser.o $(CC) $(LDFLAGS_LIB) -o $@ $< -package: $(BUILDDIR)/liburl_parser.a +package: $(BUILDDIR)/$(LIBNAME).a -$(BUILDDIR)/liburl_parser.a: $(BUILDDIR)/url_parser.o +$(BUILDDIR)/$(LIBNAME).a: $(BUILDDIR)/url_parser.o $(AR) rcs $@ $< $(BUILDDIR)/url_parser: $(BUILDDIR)/url_parser.o url_parser_demo.c @@ -94,24 +94,24 @@ $(BUILDDIR)/url_parser_g: $(BUILDDIR)/url_parser_g.o url_parser_demo.c install: library package $(INSTALL) -D url_parser.h $(DESTDIR)$(INCLUDEDIR)/url_parser.h - $(INSTALL) -D $(BUILDDIR)/liburl_parser.a $(DESTDIR)$(LIBDIR)/liburl_parser.a - $(INSTALL) -D $(BUILDDIR)/$(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) - ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) - ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + $(INSTALL) -D $(BUILDDIR)/$(LIBNAME).a $(DESTDIR)$(LIBDIR)/$(LIBNAME).a + $(INSTALL) -D $(BUILDDIR)/$(SOLIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME) + ln -sf $(SOLIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) + ln -sf $(SOLIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME).$(SOEXT) install-strip: library package $(INSTALL) -D url_parser.h $(DESTDIR)$(INCLUDEDIR)/url_parser.h - $(INSTALL) -D -s $(BUILDDIR)/liburl_parser.a $(DESTDIR)$(LIBDIR)/liburl_parser.a - $(INSTALL) -D -s $(BUILDDIR)/$(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) - ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) - ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + $(INSTALL) -D -s $(BUILDDIR)/$(LIBNAME).a $(DESTDIR)$(LIBDIR)/$(LIBNAME).a + $(INSTALL) -D -s $(BUILDDIR)/$(SOLIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME) + ln -sf $(SOLIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) + ln -sf $(SOLIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME).$(SOEXT) uninstall: rm $(DESTDIR)$(INCLUDEDIR)/url_parser.h - rm $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + rm $(DESTDIR)$(LIBDIR)/$(LIBNAME).$(SOEXT) rm $(DESTDIR)$(LIBDIR)/$(SONAME) - rm $(DESTDIR)$(LIBDIR)/$(LIBNAME) - rm $(DESTDIR)$(LIBDIR)/liburl_parser.a + rm $(DESTDIR)$(LIBDIR)/$(SOLIBNAME) + rm $(DESTDIR)$(LIBDIR)/$(LIBNAME).a clean: rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.a $(BUILDDIR)/*.so \