--- zopfli-zopfli-1.0.1/Makefile
+++ zopfli-zopfli-1.0.1/Makefile
@@ -1,8 +1,10 @@
-CC = gcc
-CXX = g++
+CC ?= gcc
+CXX ?= g++
 
-CFLAGS = -W -Wall -Wextra -ansi -pedantic -lm -O2
-CXXFLAGS = -W -Wall -Wextra -ansi -pedantic -O2
+CFLAGS += -W -Wall -Wextra -ansi -pedantic
+CXXFLAGS += -W -Wall -Wextra -ansi -pedantic
+LDFLAGS += -L.
+LIBS = -lm
 
 ZOPFLILIB_SRC = src/zopfli/blocksplitter.c src/zopfli/cache.c\
                 src/zopfli/deflate.c src/zopfli/gzip_container.c\
@@ -18,24 +20,28 @@
 
 .PHONY: zopfli zopflipng
 
+all: zopfli zopflipng
+
 # Zopfli binary
-zopfli:
-	$(CC) $(ZOPFLILIB_SRC) $(ZOPFLIBIN_SRC) $(CFLAGS) -o zopfli
+zopfli: libzopfli
+	$(CC) $(ZOPFLIBIN_SRC) $(CFLAGS) $(LDFLAGS) $(LIBS) -lzopfli -o zopfli
 
 # Zopfli shared library
 libzopfli:
 	$(CC) $(ZOPFLILIB_SRC) $(CFLAGS) -fPIC -c
-	$(CC) $(ZOPFLILIB_OBJ) $(CFLAGS) -shared -Wl,-soname,libzopfli.so.1 -o libzopfli.so.1.0.1
+	$(CC) $(ZOPFLILIB_OBJ) $(CFLAGS) $(LDFLAGS) $(LIBS) -shared -Wl,-soname,libzopfli.so.1 -o libzopfli.so.1.0.1
+	@ln -s libzopfli.so.1.0.1 libzopfli.so.1
+	@ln -s libzopfli.so.1.0.1 libzopfli.so
 
 # ZopfliPNG binary
-zopflipng:
-	$(CC) $(ZOPFLILIB_SRC) $(CFLAGS) -c
-	$(CXX) $(ZOPFLILIB_OBJ) $(LODEPNG_SRC) $(ZOPFLIPNGLIB_SRC) $(ZOPFLIPNGBIN_SRC) $(CFLAGS) -o zopflipng
+zopflipng: libzopflipng
+	$(CXX) $(ZOPFLILIB_OBJ) $(LODEPNG_SRC) $(ZOPFLIPNGBIN_SRC) $(CFLAGS) $(LDFLAGS) $(LIBS) -lzopflipng -o zopflipng
 
 # ZopfliPNG shared library
-libzopflipng:
-	$(CC) $(ZOPFLILIB_SRC) $(CFLAGS) -fPIC -c
-	$(CXX) $(ZOPFLILIB_OBJ) $(LODEPNG_SRC) $(ZOPFLIPNGLIB_SRC) $(CFLAGS) -fPIC --shared -Wl,-soname,libzopflipng.so.1 -o libzopflipng.so.1.0.0
+libzopflipng: libzopfli
+	$(CXX) $(ZOPFLILIB_OBJ) $(LODEPNG_SRC) $(ZOPFLIPNGLIB_SRC) $(CFLAGS) $(LDFLAGS) $(LIBS) -fPIC --shared -Wl,-soname,libzopflipng.so.1 -o libzopflipng.so.1.0.0
+	@ln -s libzopflipng.so.1.0.0 libzopflipng.so.1
+	@ln -s libzopflipng.so.1.0.0 libzopflipng.so
 
 # Remove all libraries and binaries
 clean:
