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