1 CC=gcc 2 CFLAGS=-O3 -Wall -Wextra -Wno-unknown-pragmas -Wcast-qual 3 LDFLAGS= 4 # CFLAGS=-O3 -Wall -Wextra -Wno-unknown-pragmas -Wcast-qual -g -fsanitize=thread 5 # LDFLAGS=-g -fsanitize=thread 6 # CFLAGS=-O3 -Wall -Wextra -Wno-unknown-pragmas -Wcast-qual -g -fsanitize=address 7 # LDFLAGS=-g -fsanitize=address 8 LIBS=-lm -lpthread -lz 9 ZOPFLI=zopfli/src/zopfli/ 10 ZOP=deflate.o blocksplitter.o tree.o lz77.o cache.o hash.o util.o squeeze.o katajainen.o symbols.o 11 12 # use gcc and gmake on Solaris 13 14 pigz: pigz.o yarn.o try.o $(ZOP) 15 $(CC) $(LDFLAGS) -o pigz pigz.o yarn.o try.o $(ZOP) $(LIBS) 16 ln -f pigz unpigz 17 18 pigz.o: pigz.c yarn.h try.h $(ZOPFLI)deflate.h $(ZOPFLI)util.h 19 20 yarn.o: yarn.c yarn.h 21 22 try.o: try.c try.h 23 24 deflate.o: $(ZOPFLI)deflate.c $(ZOPFLI)deflate.h $(ZOPFLI)blocksplitter.h $(ZOPFLI)lz77.h $(ZOPFLI)squeeze.h $(ZOPFLI)tree.h $(ZOPFLI)zopfli.h $(ZOPFLI)cache.h $(ZOPFLI)hash.h $(ZOPFLI)util.h $(ZOPFLI)symbols.h 25 $(CC) $(CFLAGS) -c $(ZOPFLI)deflate.c 26 27 blocksplitter.o: $(ZOPFLI)blocksplitter.c $(ZOPFLI)blocksplitter.h $(ZOPFLI)deflate.h $(ZOPFLI)lz77.h $(ZOPFLI)squeeze.h $(ZOPFLI)tree.h $(ZOPFLI)util.h $(ZOPFLI)zopfli.h $(ZOPFLI)cache.h $(ZOPFLI)hash.h 28 $(CC) $(CFLAGS) -c $(ZOPFLI)blocksplitter.c 29 30 tree.o: $(ZOPFLI)tree.c $(ZOPFLI)tree.h $(ZOPFLI)katajainen.h $(ZOPFLI)util.h 31 $(CC) $(CFLAGS) -c $(ZOPFLI)tree.c 32 33 lz77.o: $(ZOPFLI)lz77.c $(ZOPFLI)lz77.h $(ZOPFLI)util.h $(ZOPFLI)cache.h $(ZOPFLI)hash.h $(ZOPFLI)zopfli.h $(ZOPFLI)symbols.h 34 $(CC) $(CFLAGS) -c $(ZOPFLI)lz77.c 35 36 cache.o: $(ZOPFLI)cache.c $(ZOPFLI)cache.h $(ZOPFLI)util.h 37 $(CC) $(CFLAGS) -c $(ZOPFLI)cache.c 38 39 hash.o: $(ZOPFLI)hash.c $(ZOPFLI)hash.h $(ZOPFLI)util.h 40 $(CC) $(CFLAGS) -c $(ZOPFLI)hash.c 41 42 util.o: $(ZOPFLI)util.c $(ZOPFLI)util.h 43 $(CC) $(CFLAGS) -c $(ZOPFLI)util.c 44 45 squeeze.o: $(ZOPFLI)squeeze.c $(ZOPFLI)squeeze.h $(ZOPFLI)blocksplitter.h $(ZOPFLI)deflate.h $(ZOPFLI)tree.h $(ZOPFLI)util.h $(ZOPFLI)zopfli.h $(ZOPFLI)lz77.h $(ZOPFLI)cache.h $(ZOPFLI)hash.h $(ZOPFLI)symbols.h 46 $(CC) $(CFLAGS) -c $(ZOPFLI)squeeze.c 47 48 katajainen.o: $(ZOPFLI)katajainen.c $(ZOPFLI)katajainen.h 49 $(CC) $(CFLAGS) -c $(ZOPFLI)katajainen.c 50 51 symbols.o: $(ZOPFLI)symbols.c $(ZOPFLI)symbols.h 52 $(CC) $(CFLAGS) -c $(ZOPFLI)symbols.c 53 54 dev: pigz pigzj pigzt pigzn 55 56 pigzj: pigzj.o yarn.o try.o 57 $(CC) $(LDFLAGS) -o pigzj pigzj.o yarn.o try.o $(LIBS) 58 59 pigzj.o: pigz.c yarn.h try.h 60 $(CC) $(CFLAGS) -DNOZOPFLI -c -o pigzj.o pigz.c 61 62 pigzt: pigzt.o yarnt.o try.o $(ZOP) 63 $(CC) $(LDFLAGS) -o pigzt pigzt.o yarnt.o try.o $(ZOP) $(LIBS) 64 65 pigzt.o: pigz.c yarn.h try.h 66 $(CC) $(CFLAGS) -DPIGZ_DEBUG -g -c -o pigzt.o pigz.c 67 68 yarnt.o: yarn.c yarn.h 69 $(CC) $(CFLAGS) -DPIGZ_DEBUG -g -c -o yarnt.o yarn.c 70 71 pigzn: pigzn.o tryn.o $(ZOP) 72 $(CC) $(LDFLAGS) -o pigzn pigzn.o tryn.o $(ZOP) $(LIBS) 73 74 pigzn.o: pigz.c try.h 75 $(CC) $(CFLAGS) -DPIGZ_DEBUG -DNOTHREAD -g -c -o pigzn.o pigz.c 76 77 tryn.o: try.c try.h 78 $(CC) $(CFLAGS) -DPIGZ_DEBUG -DNOTHREAD -g -c -o tryn.o try.c 79 80 test: pigz 81 ./pigz -kf pigz.c ; ./pigz -t pigz.c.gz 82 ./pigz -kfb 32 pigz.c ; ./pigz -t pigz.c.gz 83 ./pigz -kfp 1 pigz.c ; ./pigz -t pigz.c.gz 84 ./pigz -kfz pigz.c ; ./pigz -t pigz.c.zz 85 ./pigz -kfK pigz.c ; ./pigz -t pigz.c.zip 86 printf "" | ./pigz -cdf | wc -c | test `cat` -eq 0 87 printf "x" | ./pigz -cdf | wc -c | test `cat` -eq 1 88 printf "xy" | ./pigz -cdf | wc -c | test `cat` -eq 2 89 printf "xyz" | ./pigz -cdf | wc -c | test `cat` -eq 3 90 (printf "w" | gzip ; printf "x") | ./pigz -cdf | wc -c | test `cat` -eq 2 91 (printf "w" | gzip ; printf "xy") | ./pigz -cdf | wc -c | test `cat` -eq 3 92 (printf "w" | gzip ; printf "xyz") | ./pigz -cdf | wc -c | test `cat` -eq 4 93 -@if test "`which compress | grep /`" != ""; then \ 94 echo 'compress -f < pigz.c | ./unpigz | cmp - pigz.c' ;\ 95 compress -f < pigz.c | ./unpigz | cmp - pigz.c ;\ 96 fi 97 @rm -f pigz.c.gz pigz.c.zz pigz.c.zip 98 99 tests: dev test 100 ./pigzn -kf pigz.c ; ./pigz -t pigz.c.gz 101 @rm -f pigz.c.gz 102 103 docs: pigz.pdf 104 105 pigz.pdf: pigz.1 106 groff -mandoc -f H -T ps pigz.1 | ps2pdf - pigz.pdf 107 108 all: pigz pigzj pigzt pigzn docs 109 110 clean: 111 @rm -f *.o pigz unpigz pigzj pigzn pigzt pigz.c.gz pigz.c.zz pigz.c.zip