--- 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)
