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