diff options
author | Lode Vandevenne <lvandeve@users.noreply.github.com> | 2019-07-25 20:05:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-25 20:05:35 +0200 |
commit | 4a35d304787ffc02551b9bda7213a6a3d50ff87e (patch) | |
tree | 9243814fd989c639356e85e96fe9f4831242451d | |
parent | ef109ddf164911cf1e5612e90b4a619839a1e3ca (diff) | |
download | zopfli-4a35d304787ffc02551b9bda7213a6a3d50ff87e.tar.gz |
Makefile improvements
Add static library targets, support parallel build, overridable flags
-rw-r--r-- | Makefile | 59 |
1 files changed, 41 insertions, 18 deletions
@@ -1,8 +1,8 @@ -CC = gcc -CXX = g++ +CC ?= gcc +CXX ?= g++ -CFLAGS = -W -Wall -Wextra -ansi -pedantic -lm -O2 -Wno-unused-function -CXXFLAGS = -W -Wall -Wextra -ansi -pedantic -O2 +override CFLAGS := -W -Wall -Wextra -ansi -pedantic -lm -O2 -Wno-unused-function -fPIC $(CFLAGS) +override CXXFLAGS := -W -Wall -Wextra -ansi -pedantic -O2 -fPIC $(CXXFLAGS) ZOPFLILIB_SRC = src/zopfli/blocksplitter.c src/zopfli/cache.c\ src/zopfli/deflate.c src/zopfli/gzip_container.c\ @@ -10,33 +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.2 +libzopfli: $(ZOPFLILIB_OBJ) + $(CC) $^ $(CFLAGS) -shared -Wl,-soname,libzopfli.so.1 -o libzopfli.so.1.0.2 $(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: - $(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.2 +libzopflipng: $(ZOPFLILIB_OBJ) $(LODEPNG_OBJ) $(ZOPFLIPNGLIB_OBJ) + $(CXX) $^ $(CFLAGS) --shared -Wl,-soname,libzopflipng.so.1 -o libzopflipng.so.1.0.2 $(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* |