Patch-Source: https://salsa.debian.org/yangfl-guest/QR-Code-generator/-/blob/master/debian/patches/0001-Make-C-shared-lib.patch --- From eb9eb1b8d84f64f8d65c11ca342f4f8149155da4 Mon Sep 17 00:00:00 2001 From: yangfl 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