Skip to content

Commit

Permalink
build: add optional USE_EXTERNAL_LIBDEFLATE
Browse files Browse the repository at this point in the history
When setting USE_EXTERNAL_LIBDEFLATE=1 as a make(1) argument a system
version will be used and otherwise it will use the vendored libdeflate.
  • Loading branch information
orbea committed Jan 16, 2024
1 parent eb39cc5 commit 4949344
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions Makefile
@@ -1,5 +1,7 @@
SRCDIR := $(abspath $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))

USE_EXTERNAL_LIBDEFLATE ?= 0

PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man
Expand Down Expand Up @@ -50,16 +52,26 @@ ZOPFLI_C_SRC := $(ZOPFLI_C_DIR)/blocksplitter.c $(ZOPFLI_C_DIR)/cache.c \
ZOPFLI_C_TMP := $(ZOPFLI_C_SRC:.c=.o)
ZOPFLI_C_OBJ := $(patsubst $(SRCDIR)/%,$(OBJDIR)/%,$(ZOPFLI_C_TMP))

EXTRA_LIBS =
ifeq ($(OS),Windows_NT)
LIBDEFLATE=libdeflatestatic.lib
EXTRA_LIBS += -luuid
LIBDEFLATE := libdeflatestatic.lib
LIBS += -luuid
else
LIBDEFLATE=libdeflate.a
LIBDEFLATE := libdeflate.a
endif

SRC_7ZIP = $(OBJDIR)/7zip/7zip.a
SRC_LIBDEFLATE = $(SRCDIR)/libdeflate/$(LIBDEFLATE)
SRC_7ZIP := $(OBJDIR)/7zip/7zip.a
SRC_LIBDEFLATE := $(SRCDIR)/libdeflate/$(LIBDEFLATE)

OBJS := $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) $(SRC_7ZIP)

ifeq ($(USE_EXTERNAL_LIBDEFLATE), 0)
OBJS += $(SRC_LIBDEFLATE)
else
CFLAGS_LIBDEFLATE = $(shell $(PKG_CONFIG) --cflags libdeflate)
LIBS_LIBDEFLATE = $(shell $(PKG_CONFIG) --libs libdeflate)
SRC_CXXFLAGS += $(CFLAGS_LIBDEFLATE)
LIBS += $(LIBS_LIBDEFLATE)
endif

.PHONY: all clean install uninstall

Expand All @@ -71,9 +83,8 @@ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(OBJDIR)/.done
$(OBJDIR)/%.o: $(SRCDIR)/%.c $(OBJDIR)/.done
$(CC) -c $(SRC_CFLAGS) $(CFLAGS) -o $@ $<

# TODO: Perhaps detect and use system libdeflate if available.
maxcso: $(SRC_CXX_OBJ) $(CLI_CXX_OBJ) $(ZOPFLI_C_OBJ) $(SRC_7ZIP) $(SRC_LIBDEFLATE)
$(CXX) $(LDFLAGS) -o $@ $(SRC_CXXFLAGS) $(CXXFLAGS) $^ $(LIBS) $(EXTRA_LIBS)
maxcso: $(OBJS)
$(CXX) $(LDFLAGS) -o $@ $(SRC_CXXFLAGS) $(CXXFLAGS) $^ $(LIBS)

$(SRC_7ZIP):
$(MAKE) -f $(SRCDIR)/7zip/Makefile 7zip.a
Expand Down

0 comments on commit 4949344

Please sign in to comment.