File: 0001-Make-C-shared-lib.patch

package info (click to toggle)
qr-code-generator 1.8.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 984 kB
  • sloc: java: 2,309; ansic: 2,035; cpp: 932; python: 664; makefile: 159; xml: 123; sh: 6
file content (115 lines) | stat: -rw-r--r-- 3,519 bytes parent folder | download | duplicates (2)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
From eb9eb1b8d84f64f8d65c11ca342f4f8149155da4 Mon Sep 17 00:00:00 2001
From: yangfl <yangfl@users.noreply.github.com>
Date: Mon, 22 Feb 2021 00:13:09 +0800
Subject: [PATCH 1/2] Make C shared lib

---
 c/Makefile        | 53 +++++++++++++++++++++++++++++++++++++++++------
 c/qrcodegen.pc.in | 10 +++++++++
 2 files changed, 57 insertions(+), 6 deletions(-)
 create mode 100644 c/qrcodegen.pc.in

diff --git a/c/Makefile b/c/Makefile
index 661b1f7..4a633cc 100644
--- a/c/Makefile
+++ b/c/Makefile
@@ -51,33 +51,74 @@ CFLAGS += -std=c99 -O
 # ---- Targets to build ----
 
 LIB = qrcodegen
-LIBFILE = lib$(LIB).a
+LIBFILE = lib$(LIB).so
+ARFILE = lib$(LIB).a
+SO_NAME = $(LIBFILE).1
+REAL_NAME = $(LIBFILE).$(VERSION)
+PCFILE := $(LIB).pc
+HEADERS = qrcodegen.h
 LIBOBJ = qrcodegen.o
 MAINS = qrcodegen-demo qrcodegen-test
 
+MULTIARCH ?= $(shell $(CC) --print-multiarch)
+
+PREFIX ?= /usr
+INCLUDEDIR ?= include/qrcodegen
+LIBDIR ?= lib/$(MULTIARCH)
+
 # 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) $(PCFILE)
 	rm -rf .deps
 
+.PHONY: install-shared
+install-shared: $(LIBFILE)
+	install -d $(DESTDIR)$(PREFIX)/$(LIBDIR) || true
+	install -m 0644 $< $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(REAL_NAME)
+	rm -f $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SO_NAME)
+	ln -s $(REAL_NAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SO_NAME)
+	rm -f $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(LIBFILE)
+	ln -s $(SO_NAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(LIBFILE)
+
+.PHONY: install-static
+install-static: $(ARFILE)
+	install -d $(DESTDIR)$(PREFIX)/$(LIBDIR) || true
+	install -m 0644 $< $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(ARLIB)
+
+.PHONY: install-header
+install-header: $(HEADERS) $(PCFILE)
+	install -d $(DESTDIR)$(PREFIX)/$(INCLUDEDIR) || true
+	install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/$(INCLUDEDIR)/
+	install -d $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig || true
+	install -m 0644 $(PCFILE) $(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig
+
+.PHONY: install
+install: install-shared install-static install-header
+
 # Executable files
 %: %.o $(LIBFILE)
-	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -L . -l $(LIB)
+	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -L . -l $(LIB) $(LDFLAGS)
 
 # Special executable
 qrcodegen-test: qrcodegen-test.c $(LIBOBJ:%.o=%.c)
-	$(CC) $(CFLAGS) $(LDFLAGS) -DQRCODEGEN_TEST -o $@ $^
+	$(CC) $(CPPFLAGS) $(CFLAGS) -DQRCODEGEN_TEST -o $@ $^ $(LDFLAGS)
 
 # The library
 $(LIBFILE): $(LIBOBJ)
+	$(CC) -shared -Wl,-soname,$(SO_NAME) $(LDFLAGS) -o $@ $^
+
+$(ARFILE): $(LIBOBJ)
 	$(AR) -crs $@ -- $^
 
+$(PCFILE): $(PCFILE).in
+	sed 's|@prefix@|$(PREFIX)|; s|@libdir@|$(LIBDIR)|; s|@includedir@|$(INCLUDEDIR)|; s|@version@|$(VERSION)|' $< > $@
+
 # Object files
 %.o: %.c .deps/timestamp
-	$(CC) $(CFLAGS) -c -o $@ -MMD -MF .deps/$*.d $<
+	$(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -c -o $@ -MMD -MF .deps/$*.d $<
 
 # Have a place to store header dependencies automatically generated by compiler
 .deps/timestamp:
diff --git a/c/qrcodegen.pc.in b/c/qrcodegen.pc.in
new file mode 100644
index 0000000..a3a6d6a
--- /dev/null
+++ b/c/qrcodegen.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+libdir=${prefix}/@libdir@
+includedir=${prefix}/@includedir@
+
+Name: qrcodegen
+Description: QR Code generator library in multiple languages - C version
+Version: @version@
+URL: https://github.com/nayuki/QR-Code-generator
+Libs: -L${libdir} -lqrcodegen
+Cflags: -I${includedir}
-- 
2.35.1