Makefile 2.3 KB

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