summaryrefslogtreecommitdiff
path: root/libqrcodegen/cpp-makefile.patch
blob: a708ec86d5e28c6b450e703af6a88c3e3be9c581 (plain)
    1 --- cpp/Makefile.orig	2021-08-08 17:21:08 UTC
    2 +++ cpp/Makefile
    3 @@ -29,11 +29,13 @@
    4  # - CXXFLAGS: Any extra user-specified compiler flags (can be blank).
    5  
    6  # Recommended compiler flags:
    7 -CXXFLAGS += -std=c++11 -O
    8 +CXXFLAGS ?= -std=c++11 -O
    9  
   10  # Extra flags for diagnostics:
   11  # CXXFLAGS += -g -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -fsanitize=undefined,address
   12  
   13 +# Version information
   14 +VERSION = 1.7.0
   15  
   16  # ---- Controlling make ----
   17  
   18 @@ -51,29 +53,59 @@ CXXFLAGS += -std=c++11 -O
   19  # ---- Targets to build ----
   20  
   21  LIB = qrcodegencpp
   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.hpp
   29  LIBOBJ = qrcodegen.o
   30  MAINS = QrCodeGeneratorDemo
   31  
   32 +# define paths to install
   33 +INCLUDEDIR ?= $(DESTDIR)$(PREFIX)/include/qrcodegen
   34 +LIBDIR ?= $(DESTDIR)$(PREFIX)/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  	$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $< -L . -l $(LIB)
   67  
   68  # The library
   69 -$(LIBFILE): $(LIBOBJ)
   70 +$(ARFILE): $(LIBOBJ)
   71  	$(AR) -crs $@ -- $^
   72  
   73 +$(LIBFILE): $(LIBOBJ)
   74 +	$(CC) -shared -Wl,-soname,$(SO_NAME) $(LDFLAGS) -o $@ $^
   75 +
   76  # Object files
   77  %.o: %.cpp .deps/timestamp
   78 -	$(CXX) $(CXXFLAGS) -c -o $@ -MMD -MF .deps/$*.d $<
   79 +	$(CXX) $(CXXFLAGS) -fPIC -c -o $@ -MMD -MF .deps/$*.d $<
   80  
   81  # Have a place to store header dependencies automatically generated by compiler
   82  .deps/timestamp:
   83 
   84 
   85 [FILE:142:files/Makefile]
   86 SUBDIRS= c cpp
   87 
   88 TARGETS= all clean install
   89 
   90 .PHONY: $(TARGETS) $(SUBDIRS)
   91 
   92 $(TARGETS): $(SUBDIRS)
   93 
   94 $(SUBDIRS):
   95 	$(MAKE) -C $@ $(MAKECMDGOALS)

Generated by cgit