1CC ?= gcc 2CXX ?= g++ 3 4override CFLAGS := -W -Wall -Wextra -ansi -pedantic -lm -O3 -Wno-unused-function -fPIC $(CFLAGS) 5override CXXFLAGS := -W -Wall -Wextra -ansi -pedantic -O3 -fPIC $(CXXFLAGS) 6 7ZOPFLILIB_SRC = src/zopfli/blocksplitter.c src/zopfli/cache.c\ 8 src/zopfli/deflate.c src/zopfli/gzip_container.c\ 9 src/zopfli/hash.c src/zopfli/katajainen.c\ 10 src/zopfli/lz77.c src/zopfli/squeeze.c\ 11 src/zopfli/tree.c src/zopfli/util.c\ 12 src/zopfli/zlib_container.c src/zopfli/zopfli_lib.c 13ZOPFLILIB_OBJ := $(patsubst %.c,obj/%.o,$(ZOPFLILIB_SRC)) 14ZOPFLIBIN_SRC := src/zopfli/zopfli_bin.c 15ZOPFLIBIN_OBJ := $(patsubst %.c,obj/%.o,$(ZOPFLIBIN_SRC)) 16LODEPNG_SRC := src/zopflipng/lodepng/lodepng.cpp src/zopflipng/lodepng/lodepng_util.cpp 17LODEPNG_OBJ := $(patsubst %.cpp,obj/%.o,$(LODEPNG_SRC)) 18ZOPFLIPNGLIB_SRC := src/zopflipng/zopflipng_lib.cc 19ZOPFLIPNGLIB_OBJ := $(patsubst %.cc,obj/%.o,$(ZOPFLIPNGLIB_SRC)) 20ZOPFLIPNGBIN_SRC := src/zopflipng/zopflipng_bin.cc 21ZOPFLIPNGBIN_OBJ := $(patsubst %.cc,obj/%.o,$(ZOPFLIPNGBIN_SRC)) 22 23.PHONY: all libzopfli libzopflipng 24 25all: zopfli libzopfli libzopfli.a zopflipng libzopflipng libzopflipng.a 26 27obj/%.o: %.c 28 @mkdir -p `dirname $@` 29 $(CC) $(CFLAGS) -c $< -o $@ 30 31obj/%.o: %.cc 32 @mkdir -p `dirname $@` 33 $(CXX) $(CXXFLAGS) -c $< -o $@ 34 35obj/%.o: %.cpp 36 @mkdir -p `dirname $@` 37 $(CXX) $(CXXFLAGS) -c $< -o $@ 38 39# Zopfli binary 40zopfli: $(ZOPFLILIB_OBJ) $(ZOPFLIBIN_OBJ) 41 $(CC) $^ $(CFLAGS) -o $@ $(LDFLAGS) 42 43# Zopfli shared library 44libzopfli: $(ZOPFLILIB_OBJ) 45 $(CC) $^ $(CFLAGS) -shared -Wl,-soname,libzopfli.so.1 -o libzopfli.so.1.0.3 $(LDFLAGS) 46 47# Zopfli static library 48libzopfli.a: $(ZOPFLILIB_OBJ) 49 ar rcs $@ $^ 50 51# ZopfliPNG binary 52zopflipng: $(ZOPFLILIB_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) $(ZOPFLIPNGBIN_OBJ) 53 $(CXX) $^ $(CFLAGS) -o $@ $(LDFLAGS) 54 55# ZopfliPNG shared library 56libzopflipng: $(ZOPFLILIB_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) 57 $(CXX) $^ $(CFLAGS) --shared -Wl,-soname,libzopflipng.so.1 -o libzopflipng.so.1.0.3 $(LDFLAGS) 58 59# ZopfliPNG static library 60libzopflipng.a: $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) 61 ar rcs $@ $^ 62 63# Remove all libraries and binaries 64clean: 65 rm -f zopflipng zopfli $(ZOPFLILIB_OBJ) $(ZOPFLIBIN_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) $(ZOPFLIPNGBIN_OBJ) libzopfli* 66