1 | LIBDIR ?= /usr/lib␊ |
2 | INCDIR ?= /usr/include␊ |
3 | ␊ |
4 | AR ?= $(CROSS)ar␊ |
5 | CXX ?= $(CROSS)g++␊ |
6 | ␊ |
7 | ifeq ($(PREFIX),)␊ |
8 | PREFIX := /usr/local␊ |
9 | endif␊ |
10 | ␊ |
11 | UPDFPARSERLIB = ./lib/updfparser/libupdfparser.a␊ |
12 | ␊ |
13 | CXXFLAGS += -Wall -fPIC -I./include -I./usr/include/pugixml -I./lib/updfparser/include␊ |
14 | LDFLAGS = -lpugixml␊ |
15 | ␊ |
16 | VERSION := $(shell cat include/libgourou.h |grep LIBGOUROU_VERSION|cut -d '"' -f2)␊ |
17 | ␊ |
18 | BUILD_STATIC ?= 0␊ |
19 | BUILD_SHARED ?= 1␊ |
20 | BUILD_UTILS ?= 1␊ |
21 | ␊ |
22 | TARGETS =␊ |
23 | TARGET_LIBRARIES =␊ |
24 | ifneq ($(STATIC_UTILS),)␊ |
25 | BUILD_STATIC=1␊ |
26 | endif␊ |
27 | ifneq ($(BUILD_STATIC), 0)␊ |
28 | TARGETS += libgourou.a␊ |
29 | TARGET_LIBRARIES += libgourou.a␊ |
30 | STATIC_UTILS=1␊ |
31 | endif␊ |
32 | ifneq ($(BUILD_SHARED), 0)␊ |
33 | TARGETS += libgourou.so␊ |
34 | TARGET_LIBRARIES += libgourou.so libgourou.so.$(VERSION)␊ |
35 | endif␊ |
36 | ifneq ($(BUILD_UTILS), 0)␊ |
37 | TARGETS += build_utils␊ |
38 | endif␊ |
39 | ␊ |
40 | ␊ |
41 | ifneq ($(DEBUG),)␊ |
42 | CXXFLAGS += -ggdb -O0 -DDEBUG␊ |
43 | else␊ |
44 | CXXFLAGS += -O2␊ |
45 | endif␊ |
46 | ␊ |
47 | ifneq ($(STATIC_NONCE),)␊ |
48 | CXXFLAGS += -DSTATIC_NONCE=1␊ |
49 | endif␊ |
50 | ␊ |
51 | SRCDIR := src␊ |
52 | BUILDDIR := obj␊ |
53 | SRCEXT := cpp␊ |
54 | OBJEXT := o␊ |
55 | ␊ |
56 | SOURCES = src/libgourou.cpp src/user.cpp src/device.cpp src/fulfillment_item.cpp src/loan_token.cpp src/bytearray.cpp␊ |
57 | OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT)))␊ |
58 | ␊ |
59 | all: version lib obj $(TARGETS)␊ |
60 | ␊ |
61 | version:␊ |
62 | ␉@echo "Building libgourou $(VERSION)"␊ |
63 | ␊ |
64 | lib:␊ |
65 | ␉mkdir lib␊ |
66 | ␉./scripts/setup.sh␊ |
67 | ␊ |
68 | update_lib:␊ |
69 | ␉./scripts/update_lib.sh␊ |
70 | ␊ |
71 | obj:␊ |
72 | ␉mkdir obj␊ |
73 | ␊ |
74 | $(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT)␊ |
75 | ␉$(CXX) $(CXXFLAGS) -c $^ -o $@␊ |
76 | ␊ |
77 | libgourou: $(TARGET_LIBRARIES)␊ |
78 | ␊ |
79 | libgourou.a: $(OBJECTS) $(UPDFPARSERLIB)␊ |
80 | ␉$(AR) rcs --thin $@ $^␊ |
81 | ␊ |
82 | libgourou.so.$(VERSION): $(OBJECTS) $(UPDFPARSERLIB)␊ |
83 | ␉$(CXX) $^ -Wl,-soname,$@ $(LDFLAGS) -o $@ -shared␊ |
84 | ␊ |
85 | libgourou.so: libgourou.so.$(VERSION)␊ |
86 | ␉ln -f -s $^ $@␊ |
87 | ␊ |
88 | build_utils: $(TARGET_LIBRARIES)␊ |
89 | ␉$(MAKE) -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX)␊ |
90 | ␊ |
91 | install: $(TARGET_LIBRARIES)␊ |
92 | ␉install -d $(DESTDIR)$(PREFIX)$(LIBDIR)␊ |
93 | # Use cp to preserver symlinks␊ |
94 | ␉cp --no-dereference $(TARGET_LIBRARIES) $(DESTDIR)$(PREFIX)$(LIBDIR)␊ |
95 | ␉$(MAKE) -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX) install␊ |
96 | ␊ |
97 | uninstall:␊ |
98 | ␉cd $(DESTDIR)$(PREFIX)/$(LIBDIR)␊ |
99 | ␉rm -f $(TARGET_LIBRARIES) libgourou.so.$(VERSION)␊ |
100 | ␉cd -␊ |
101 | ␊ |
102 | install_headers:␊ |
103 | ␉install -d $(DESTDIR)$(PREFIX)/$(INCDIR)/libgourou␊ |
104 | ␉cp --no-dereference include/*.h $(DESTDIR)$(PREFIX)/$(INCDIR)/libgourou␊ |
105 | ␊ |
106 | uninstall_headers:␊ |
107 | ␉rm -rf $(DESTDIR)$(PREFIX)/$(INCDIR)/libgourou␊ |
108 | ␊ |
109 | clean:␊ |
110 | ␉rm -rf libgourou.a libgourou.so libgourou.so.$(VERSION)* obj␊ |
111 | ␉$(MAKE) -C utils clean␊ |
112 | ␊ |
113 | ultraclean: clean␊ |
114 | ␉rm -rf lib␊ |
115 | ␉$(MAKE) -C utils ultraclean␊ |