Work on Makefile

This commit is contained in:
Grégory Soutadé 2023-01-10 21:03:45 +01:00
parent 84b01a5de3
commit a66dcb959c
3 changed files with 36 additions and 19 deletions

View File

@ -1,3 +1,6 @@
LIBDIR ?= /usr/lib
INCDIR ?= /usr/include
AR ?= $(CROSS)ar AR ?= $(CROSS)ar
CXX ?= $(CROSS)g++ CXX ?= $(CROSS)g++
@ -17,14 +20,14 @@ BUILD_SHARED ?= 1
BUILD_UTILS ?= 1 BUILD_UTILS ?= 1
TARGETS = TARGETS =
TARGET_BINARIES = TARGET_LIBRARIES =
ifneq ($(BUILD_STATIC), 0) ifneq ($(BUILD_STATIC), 0)
TARGETS += libgourou.a TARGETS += libgourou.a
TARGET_BINARIES += libgourou.a TARGET_LIBRARIES += libgourou.a
endif endif
ifneq ($(BUILD_SHARED), 0) ifneq ($(BUILD_SHARED), 0)
TARGETS += libgourou.so TARGETS += libgourou.so
TARGET_BINARIES += libgourou.so libgourou.so.$(VERSION) TARGET_LIBRARIES += libgourou.so libgourou.so.$(VERSION)
endif endif
ifneq ($(BUILD_UTILS), 0) ifneq ($(BUILD_UTILS), 0)
TARGETS += build_utils TARGETS += build_utils
@ -42,9 +45,7 @@ CXXFLAGS += -DSTATIC_NONCE=1
endif endif
SRCDIR := src SRCDIR := src
INCDIR := inc
BUILDDIR := obj BUILDDIR := obj
TARGETDIR := bin
SRCEXT := cpp SRCEXT := cpp
OBJEXT := o OBJEXT := o
@ -74,25 +75,33 @@ libgourou: libgourou.a libgourou.so
libgourou.a: $(OBJECTS) $(UPDFPARSERLIB) libgourou.a: $(OBJECTS) $(UPDFPARSERLIB)
$(AR) crs $@ obj/*.o $(UPDFPARSERLIB) $(AR) crs $@ obj/*.o $(UPDFPARSERLIB)
libgourou.so: $(OBJECTS) $(UPDFPARSERLIB) libgourou.so.$(VERSION): $(OBJECTS) $(UPDFPARSERLIB)
$(CXX) obj/*.o -Wl,-soname,$@.$(VERSION) $(LDFLAGS) -o $@.$(VERSION) -shared $(CXX) obj/*.o -Wl,-soname,$@ $(LDFLAGS) -o $@ -shared
rm -f $@
ln -s $@.$(VERSION) $@
build_utils: libgourou.so: libgourou.so.$(VERSION)
ln -f -s $^ $@
build_utils: $(TARGET_LIBRARIES)
make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX) make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX)
install: install: $(TARGET_LIBRARIES)
install -d $(DESTDIR)$(PREFIX)/lib/ install -d $(DESTDIR)$(PREFIX)$(LIBDIR)
# Use cp to preserver symlinks # Use cp to preserver symlinks
cp --no-dereference $(TARGET_BINARIES) $(DESTDIR)$(PREFIX)/lib/ cp --no-dereference $(TARGET_LIBRARIES) $(DESTDIR)$(PREFIX)$(LIBDIR)
make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX) install make -C utils ROOT=$(PWD) CXX=$(CXX) AR=$(AR) DEBUG=$(DEBUG) STATIC_UTILS=$(STATIC_UTILS) DEST_DIR=$(DEST_DIR) PREFIX=$(PREFIX) install
uninstall: uninstall:
cd $(DESTDIR)$(PREFIX)/lib/ cd $(DESTDIR)$(PREFIX)/$(LIBDIR)
rm -f $(TARGET_BINARIES) libgourou.so.$(VERSION) rm -f $(TARGET_LIBRARIES) libgourou.so.$(VERSION)
cd - cd -
install_headers:
install -d $(DESTDIR)$(PREFIX)/$(INCDIR)/libgourou
cp --no-dereference include/*.h $(DESTDIR)$(PREFIX)/$(INCDIR)/libgourou
uninstall_headers:
rm -rf $(DESTDIR)$(PREFIX)/$(INCDIR)/libgourou
clean: clean:
rm -rf libgourou.a libgourou.so libgourou.so.$(VERSION)* obj rm -rf libgourou.a libgourou.so libgourou.so.$(VERSION)* obj
make -C utils clean make -C utils clean

View File

@ -1,7 +1,11 @@
BINDIR ?= /usr/bin
MANDIR ?= /usr/share/man
TARGET_BINARIES=acsmdownloader adept_activate adept_remove adept_loan_mgt TARGET_BINARIES=acsmdownloader adept_activate adept_remove adept_loan_mgt
TARGETS=$(TARGET_BINARIES) launcher TARGETS=$(TARGET_BINARIES) launcher
MAN_PAGES=acsmdownloader adept_activate adept_remove adept_loan_mgt
CXXFLAGS=-Wall -fPIC -I$(ROOT)/include -I$(ROOT)/lib/pugixml/src/ CXXFLAGS=-Wall -fPIC -I$(ROOT)/include -I$(ROOT)/lib/pugixml/src/
STATIC_DEP= STATIC_DEP=
@ -33,14 +37,18 @@ ${COMMON_LIB}: ${COMMON_DEPS} ${STATIC_DEP}
%: %.cpp ${COMMON_LIB} %: %.cpp ${COMMON_LIB}
$(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@
install: install: $(TARGET_BINARIES)
install -d $(DESTDIR)$(PREFIX)/bin/ install -d $(DESTDIR)$(PREFIX)/$(BINDIR)
install -m 644 $(TARGET_BINARIES) $(DESTDIR)$(PREFIX)/bin/ install -m 755 $(TARGET_BINARIES) $(DESTDIR)$(PREFIX)/$(BINDIR)
install -d $(DESTDIR)$(PREFIX)/$(MANDIR)/man1
install -m 644 man/*.1 $(DESTDIR)$(PREFIX)/$(MANDIR)/man1
uninstall: uninstall:
cd $(DESTDIR)$(PREFIX)/bin/ cd $(DESTDIR)$(PREFIX)/$(BINDIR)
rm -f $(TARGET_BINARIES) rm -f $(TARGET_BINARIES)
cd - cd -
cd $(DESTDIR)$(PREFIX)/$(MANDIR)/man1
rm -f $(addsuffix .1,$(TARGET_BINARIES)
clean: clean:
rm -f $(TARGETS) $(COMMON_LIB) rm -f $(TARGETS) $(COMMON_LIB)