--- Makefile.orig 2025-06-06 00:03:48 UTC +++ Makefile @@ -7,6 +7,8 @@ LIBRARY_DIRS ?= INCLUDE_DIRS ?= LIBRARY_DIRS ?= +STRIP ?= strip + SRC := $(wildcard ${DIR_SRC}/*.cpp) OBJ := $(patsubst %.cpp,${DIR_OBJ}/%.o,$(notdir ${SRC})) @@ -15,15 +17,21 @@ CXX ?= g++ BIN_TARGET := ${TARGET} CXX ?= g++ -CXXFLAGS := -std=c++11 -pthread -g -O3 -MD -MP -I${DIR_INC} $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) ${CXXFLAGS} +# Optional flags that the user can override by setting CXXFLAGS in the +# env or make argument. -pthread is a link flag, and serves no purpose +# in the compile command. It is handled by -lpthread in LIBS. +CXXFLAGS ?= -g -O3 -MD -MP +# Required flags +CXXFLAGS += -std=c++11 -I${DIR_INC} $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir)) LIBS := -lisal -ldeflate -lpthread STATIC_FLAGS := -static -Wl,--no-as-needed -pthread -LD_FLAGS := $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(LIBS) $(LD_FLAGS) +# Append required flags to standard LDFLAGS from env +LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(LIBS) STATIC_LD_FLAGS := $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(STATIC_FLAGS) $(LIBS) $(STATIC_LD_FLAGS) ${BIN_TARGET}:${OBJ} - $(CXX) $(OBJ) -o $@ $(LD_FLAGS) + $(CXX) $(OBJ) -o $@ $(LDFLAGS) static:${OBJ} $(CXX) $(OBJ) -o ${BIN_TARGET} $(STATIC_LD_FLAGS) @@ -38,8 +46,15 @@ clean: @rm -rf $(DIR_OBJ) @rm -f $(TARGET) +# Respect DESTDIR for staged installs (used by most package managers). +# DESTDIR is empty by default, so this will install directly to BINDIR +# unless DESTDIR is supplied by the user. install: - install $(TARGET) $(BINDIR)/$(TARGET) + install $(TARGET) $(DESTDIR)$(BINDIR)/$(TARGET) @echo "Installed." + +# Many package managers use install-strip target if debugging is not enabled +install-strip: install + $(STRIP) $(DESTDIR)$(BINDIR)/$(TARGET) -include $(OBJ:.o=.d)