1#This makefile is for generating debug standalone executables
2
3VERSION = "3.0"
4OBJS = array.o pcm.o pcmconv.o bitstream.a
5FLAGS = -Wall -g
6BINARIES = alacdec \
7flacdec \
8oggflacdec \
9shndec \
10wvdec \
11alacenc \
12flacenc \
13shnenc \
14wvenc \
15huffman \
16bitstream \
17bitstream-table \
18ttaenc \
19ttadec \
20opusenc
21
22all: $(BINARIES)
23
24clean:
25	rm -f $(BINARIES) $(OBJS)
26
27flacdec: $(OBJS) decoders/flac.c decoders/flac.h flac_crc.o buffer.o md5.o
28	$(CC) $(FLAGS) -o flacdec decoders/flac.c $(OBJS) flac_crc.o buffer.o md5.o -DSTANDALONE -DEXECUTABLE
29
30oggflacdec: $(OBJS) decoders/oggflac.c decoders/oggflac.h flac.o flac_crc.o md5.o ogg.o ogg_crc.o buffer.o
31	$(CC) $(FLAGS) -o oggflacdec decoders/oggflac.c $(OBJS) flac.o flac_crc.o md5.o ogg.o ogg_crc.o buffer.o -DSTANDALONE
32
33wvdec: $(OBJS) decoders/wavpack.c decoders/wavpack.h md5.o
34	$(CC) $(FLAGS) -o wvdec decoders/wavpack.c $(OBJS) md5.o -DSTANDALONE
35
36alacdec: $(OBJS) decoders/alac.c decoders/alac.h
37	$(CC) $(FLAGS) -o alacdec decoders/alac.c $(OBJS) -DSTANDALONE
38
39shndec: $(OBJS) decoders/shn.c decoders/shn.h buffer.o
40	$(CC) $(FLAGS) -o shndec decoders/shn.c $(OBJS) buffer.o -DSTANDALONE -lm
41
42ttadec: $(OBJS) decoders/tta.c decoders/tta.h
43	$(CC) $(FLAGS) -o ttadec decoders/tta.c $(OBJS) -DSTANDALONE
44
45flacenc: $(OBJS) encoders/flac.c encoders/flac.h flac_crc.o md5.o
46	$(CC) $(FLAGS) -DVERSION=$(VERSION) -o flacenc encoders/flac.c $(OBJS) md5.o flac_crc.o -DSTANDALONE -lm
47
48alacenc: $(OBJS) encoders/alac.c encoders/alac.h
49	$(CC) $(FLAGS) -DVERSION=$(VERSION) -o alacenc encoders/alac.c $(OBJS) -DSTANDALONE -lm
50
51shnenc: $(OBJS) encoders/shn.c encoders/shn.h buffer.o
52	$(CC) $(FLAGS) -DVERSION=$(VERSION) -o shnenc encoders/shn.c $(OBJS) buffer.o -DSTANDALONE -lm
53
54wvenc: $(OBJS) encoders/wavpack.c encoders/wavpack.h md5.o
55	$(CC) $(FLAGS) -o wvenc encoders/wavpack.c md5.o $(OBJS) -DSTANDALONE
56
57ttaenc: $(OBJS) encoders/tta.c encoders/tta.h
58	$(CC) $(FLAGS) -o ttaenc encoders/tta.c $(OBJS) -DSTANDALONE
59
60vorbisenc: $(OBJS) encoders/vorbis.c
61	$(CC) $(FLAGS) -o vorbisenc encoders/vorbis.c $(OBJS) -DSTANDALONE -lvorbis -logg -lvorbisenc
62
63opusenc: $(OBJS) encoders/opus.c
64	$(CC) $(FLAGS) -o opusenc encoders/opus.c $(OBJS) -DSTANDALONE `pkg-config --cflags --libs opus ogg`
65
66huffman: huffman.c huffman.h parson.o
67	$(CC) $(FLAGS) -o huffman huffman.c parson.o -DEXECUTABLE
68
69pcm.o: pcm.c pcm.h
70	$(CC) $(FLAGS) -c pcm.c -DSTANDALONE
71
72pcmconv.o: pcmconv.c pcmconv.h
73	$(CC) $(FLAGS) -c pcmconv.c -DSTANDALONE
74
75bitstream.o: bitstream.c bitstream.h
76	$(CC) $(FLAGS) -c bitstream.c
77
78md5.o: common/md5.c common/md5.h
79	$(CC) $(FLAGS) -c common/md5.c -DSTANDALONE
80
81flac.o: decoders/flac.c decoders/flac.h
82	$(CC) $(FLAGS) -c decoders/flac.c -DSTANDALONE
83
84ogg.o: ogg.c ogg.h
85	$(CC) $(FLAGS) -c ogg.c -DSTANDALONE
86
87ogg_crc.o: ogg_crc.c ogg_crc.h
88	$(CC) $(FLAGS) -c ogg_crc.c -DSTANDALONE
89
90flac_crc.o: common/flac_crc.c common/flac_crc.h
91	$(CC) $(FLAGS) -c common/flac_crc.c -DSTANDALONE
92
93huffman.o: huffman.c huffman.h
94	$(CC) $(FLAGS) -c huffman.c -DSTANDALONE
95
96buffer.o: buffer.c buffer.h
97	$(CC) $(FLAGS) -c buffer.c
98
99func_io.o: func_io.c func_io.h
100	$(CC) $(FLAGS) -c func_io.c
101
102mini-gmp.o: mini-gmp.c mini-gmp.h
103	$(CC) $(FLAGS) -c mini-gmp.c
104
105bitstream.a: bitstream.o huffman.o func_io.o mini-gmp.o
106	$(AR) -r $@ bitstream.o huffman.o func_io.o mini-gmp.o
107
108bitstream: bitstream.c bitstream.h huffman.o func_io.o mini-gmp.o
109	$(CC) $(FLAGS) bitstream.c huffman.o func_io.o mini-gmp.o -DEXECUTABLE -DDEBUG -o $@
110
111array: array.c array.h
112	$(CC) $(FLAGS) array.c -DEXECUTABLE -o $@
113
114parson.o: parson.c parson.h
115	$(CC) $(FLAGS) -c parson.c
116
117bitstream-table: bitstream-table.c array.o
118	$(CC) $(FLAGS) -o $@ bitstream-table.c array.o
119