• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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