diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 58 |
1 files changed, 43 insertions, 15 deletions
@@ -1,8 +1,8 @@ -CC = gcc -CXX = g++ +CC ?= gcc +CXX ?= g++ -CFLAGS = -W -Wall -Wextra -ansi -pedantic -lm -O2 -CXXFLAGS = -W -Wall -Wextra -ansi -pedantic -O2 +override CFLAGS := -W -Wall -Wextra -ansi -pedantic -lm -O3 -Wno-unused-function -fPIC $(CFLAGS) +override CXXFLAGS := -W -Wall -Wextra -ansi -pedantic -O3 -fPIC $(CXXFLAGS) ZOPFLILIB_SRC = src/zopfli/blocksplitter.c src/zopfli/cache.c\ src/zopfli/deflate.c src/zopfli/gzip_container.c\ @@ -10,28 +10,56 @@ ZOPFLILIB_SRC = src/zopfli/blocksplitter.c src/zopfli/cache.c\ src/zopfli/lz77.c src/zopfli/squeeze.c\ src/zopfli/tree.c src/zopfli/util.c\ src/zopfli/zlib_container.c src/zopfli/zopfli_lib.c -ZOPFLILIB_OBJ := $(patsubst src/zopfli/%.c,%.o,$(ZOPFLILIB_SRC)) +ZOPFLILIB_OBJ := $(patsubst %.c,obj/%.o,$(ZOPFLILIB_SRC)) ZOPFLIBIN_SRC := src/zopfli/zopfli_bin.c +ZOPFLIBIN_OBJ := $(patsubst %.c,obj/%.o,$(ZOPFLIBIN_SRC)) LODEPNG_SRC := src/zopflipng/lodepng/lodepng.cpp src/zopflipng/lodepng/lodepng_util.cpp +LODEPNG_OBJ := $(patsubst %.cpp,obj/%.o,$(LODEPNG_SRC)) ZOPFLIPNGLIB_SRC := src/zopflipng/zopflipng_lib.cc +ZOPFLIPNGLIB_OBJ := $(patsubst %.cc,obj/%.o,$(ZOPFLIPNGLIB_SRC)) ZOPFLIPNGBIN_SRC := src/zopflipng/zopflipng_bin.cc +ZOPFLIPNGBIN_OBJ := $(patsubst %.cc,obj/%.o,$(ZOPFLIPNGBIN_SRC)) -.PHONY: zopfli zopflipng +.PHONY: all libzopfli libzopflipng + +all: zopfli libzopfli libzopfli.a zopflipng libzopflipng libzopflipng.a + +obj/%.o: %.c + @mkdir -p `dirname $@` + $(CC) $(CFLAGS) -c $< -o $@ + +obj/%.o: %.cc + @mkdir -p `dirname $@` + $(CXX) $(CXXFLAGS) -c $< -o $@ + +obj/%.o: %.cpp + @mkdir -p `dirname $@` + $(CXX) $(CXXFLAGS) -c $< -o $@ # Zopfli binary -zopfli: - $(CC) $(ZOPFLILIB_SRC) $(ZOPFLIBIN_SRC) $(CFLAGS) -o zopfli +zopfli: $(ZOPFLILIB_OBJ) $(ZOPFLIBIN_OBJ) + $(CC) $^ $(CFLAGS) -o $@ $(LDFLAGS) # 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 +libzopfli: $(ZOPFLILIB_OBJ) + $(CC) $^ $(CFLAGS) -shared -Wl,-soname,libzopfli.so.1 -o libzopfli.so.1.0.3 $(LDFLAGS) + +# Zopfli static library +libzopfli.a: $(ZOPFLILIB_OBJ) + ar rcs $@ $^ # ZopfliPNG binary -zopflipng: - $(CC) $(ZOPFLILIB_SRC) $(CFLAGS) -c - $(CXX) $(ZOPFLILIB_OBJ) $(LODEPNG_SRC) $(ZOPFLIPNGLIB_SRC) $(ZOPFLIPNGBIN_SRC) $(CFLAGS) -o zopflipng +zopflipng: $(ZOPFLILIB_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) $(ZOPFLIPNGBIN_OBJ) + $(CXX) $^ $(CFLAGS) -o $@ $(LDFLAGS) + +# ZopfliPNG shared library +libzopflipng: $(ZOPFLILIB_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) + $(CXX) $^ $(CFLAGS) --shared -Wl,-soname,libzopflipng.so.1 -o libzopflipng.so.1.0.3 $(LDFLAGS) + +# ZopfliPNG static library +libzopflipng.a: $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) + ar rcs $@ $^ # Remove all libraries and binaries clean: - rm -f zopflipng zopfli $(ZOPFLILIB_OBJ) libzopfli* + rm -f zopflipng zopfli $(ZOPFLILIB_OBJ) $(ZOPFLIBIN_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) $(ZOPFLIPNGBIN_OBJ) libzopfli* |