1Based on https://github.com/nayuki/QR-Code-generator/pull/72 2--- c/Makefile.orig 2023-01-16 09:13:33 UTC 3+++ c/Makefile 4@@ -29,11 +29,13 @@ 5 # - CFLAGS: Any extra user-specified compiler flags (can be blank). 6 7 # Recommended compiler flags: 8-CFLAGS += -std=c99 -O 9+CFLAGS ?= -std=c99 -O 10 11 # Extra flags for diagnostics: 12 # CFLAGS += -g -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -fsanitize=undefined,address 13 14+# Version information 15+VERSION = %%VERSION%% 16 17 # ---- Controlling make ---- 18 19@@ -52,17 +54,44 @@ CFLAGS += -std=c99 -O 20 21 LIB = qrcodegen 22-LIBFILE = lib$(LIB).a 23+ARFILE = lib$(LIB).a 24+LIBFILE = lib$(LIB).so 25+# Bump the soname number when the ABI changes and gets incompatible 26+SO_NAME = $(LIBFILE).1 27+REAL_NAME = $(LIBFILE).$(VERSION) 28+HEADERS = qrcodegen.h 29 LIBOBJ = qrcodegen.o 30 MAINS = qrcodegen-demo qrcodegen-test 31 32+# define paths to install 33+INCLUDEDIR ?= $(DESTDIR)/usr/include/qrcodegen 34+LIBDIR ?= $(DESTDIR)/usr/lib 35+ 36 # Build all binaries 37-all: $(LIBFILE) $(MAINS) 38+all: $(LIBFILE) $(ARFILE) $(MAINS) 39 40 # Delete build output 41 clean: 42- rm -f -- $(LIBOBJ) $(LIBFILE) $(MAINS:=.o) $(MAINS) 43+ rm -f -- $(LIBOBJ) $(LIBFILE) $(ARFILE) $(MAINS:=.o) $(MAINS) 44 rm -rf .deps 45 46+install-shared: $(LIBFILE) 47+ install -d $(LIBDIR) || true 48+ install -m 0644 $(LIBFILE) $(LIBDIR)/$(REAL_NAME) 49+ rm -f $(LIBDIR)/$(SO_NAME) 50+ ln -s $(REAL_NAME) $(LIBDIR)/$(SO_NAME) 51+ rm -f $(LIBDIR)/$(LIBFILE) 52+ ln -s $(SO_NAME) $(LIBDIR)/$(LIBFILE) 53+ 54+install-static: $(ARFILE) 55+ install -d $(LIBDIR) || true 56+ install -m 0644 $(ARFILE) $(LIBDIR)/$(ARFILE) 57+ 58+install-header: $(HEADERS) 59+ install -d $(INCLUDEDIR) || true 60+ install -m 0644 $(HEADERS) $(INCLUDEDIR)/ 61+ 62+install: install-shared install-static install-header 63+ 64 # Executable files 65 %: %.o $(LIBFILE) 66 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -L . -l $(LIB) 67@@ -72,12 +101,15 @@ qrcodegen-test: qrcodegen-test.c $(LIBOBJ:%.o=%.c) 68 $(CC) $(CFLAGS) $(LDFLAGS) -DQRCODEGEN_TEST -o $@ $^ 69 70 # The library 71-$(LIBFILE): $(LIBOBJ) 72+$(ARFILE): $(LIBOBJ) 73 $(AR) -crs $@ -- $^ 74 75+$(LIBFILE): $(LIBOBJ) 76+ $(CC) -shared -Wl,-soname,$(SO_NAME) $(LDFLAGS) -o $@ $^ 77+ 78 # Object files 79 %.o: %.c .deps/timestamp 80- $(CC) $(CFLAGS) -c -o $@ -MMD -MF .deps/$*.d $< 81+ $(CC) $(CFLAGS) -fPIC -c -o $@ -MMD -MF .deps/$*.d $< 82 83 # Have a place to store header dependencies automatically generated by compiler 84 .deps/timestamp: 85