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