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