diff --git a/Makefile b/Makefile index d05d86d..a962ba7 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,30 @@ AR ?= $(CROSS)ar CXX ?= $(CROSS)g++ +ifeq ($(PREFIX),) + PREFIX := /usr/local +endif + UPDFPARSERLIB = ./lib/updfparser/libupdfparser.a -CXXFLAGS=-Wall -fPIC -I./include -I./lib/pugixml/src/ -I./lib/updfparser/include +CXXFLAGS += -Wall -fPIC -I./include -I./lib/pugixml/src/ -I./lib/updfparser/include LDFLAGS = $(UPDFPARSERLIB) +VERSION := $(shell cat include/libgourou.h |grep LIBGOUROU_VERSION|cut -d '"' -f2) + BUILD_STATIC ?= 0 BUILD_SHARED ?= 1 BUILD_UTILS ?= 1 TARGETS = +TARGET_BINARIES = ifneq ($(BUILD_STATIC), 0) TARGETS += libgourou.a + TARGET_BINARIES += libgourou.a endif ifneq ($(BUILD_SHARED), 0) TARGETS += libgourou.so + TARGET_BINARIES += libgourou.so libgourou.so.$(VERSION) endif ifneq ($(BUILD_UTILS), 0) TARGETS += build_utils @@ -42,7 +51,10 @@ OBJEXT := o SOURCES = src/libgourou.cpp src/user.cpp src/device.cpp src/fulfillment_item.cpp src/loan_token.cpp src/bytearray.cpp src/pugixml.cpp OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT))) -all: lib obj $(TARGETS) +all: version lib obj $(TARGETS) + +version: + @echo "Building libgourou $(VERSION)" lib: mkdir lib @@ -63,13 +75,26 @@ libgourou.a: $(OBJECTS) $(UPDFPARSERLIB) $(AR) crs $@ obj/*.o $(UPDFPARSERLIB) libgourou.so: $(OBJECTS) $(UPDFPARSERLIB) - $(CXX) obj/*.o $(LDFLAGS) -o $@ -shared + $(CXX) obj/*.o -Wl,-soname,$@.$(VERSION) $(LDFLAGS) -o $@.$(VERSION) -shared + rm -f $@ + ln -s $@.$(VERSION) $@ build_utils: - make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) + make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX) + +install: + install -d $(DESTDIR)$(PREFIX)/lib/ +# Use cp to preserver symlinks + cp --no-dereference $(TARGET_BINARIES) $(DESTDIR)$(PREFIX)/lib/ + make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX) install + +uninstall: + cd $(DESTDIR)$(PREFIX)/lib/ + rm -f $(TARGET_BINARIES) libgourou.so.$(VERSION) + cd - clean: - rm -rf libgourou.a libgourou.so obj + rm -rf libgourou.a libgourou.so libgourou.so.$(VERSION)* obj make -C utils clean ultraclean: clean diff --git a/utils/Makefile b/utils/Makefile index f279fdc..aa84e38 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -1,5 +1,6 @@ -TARGETS=acsmdownloader adept_activate adept_remove adept_loan_mgt launcher +TARGET_BINARIES=acsmdownloader adept_activate adept_remove adept_loan_mgt +TARGETS=$(TARGET_BINARIES) launcher CXXFLAGS=-Wall -fPIC -I$(ROOT)/include -I$(ROOT)/lib/pugixml/src/ @@ -32,6 +33,15 @@ ${COMMON_LIB}: ${COMMON_DEPS} ${STATIC_DEP} %: %.cpp ${COMMON_LIB} $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ +install: + install -d $(DESTDIR)$(PREFIX)/bin/ + install -m 644 $(TARGET_BINARIES) $(DESTDIR)$(PREFIX)/bin/ + +uninstall: + cd $(DESTDIR)$(PREFIX)/bin/ + rm -f $(TARGET_BINARIES) + cd - + clean: rm -f $(TARGETS) $(COMMON_LIB)