Changed CRC to be generic CRC-CCITT and take a polynomial
[C_DigiMode.git] / makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
###############################################################################
# C_DigiMode                                                                  #
#                                                                             #
# A library for decoding various Digital radio modes with a sound card        #
#  written in C                                                               #
#                                                                             #
# Author Michael Marques <dryerzinia@gmail.com>                               #
#                                                                             #
###############################################################################
 
CC=gcc
CFLAGS=-O3
 
.PHONY: build disable-float
build: create-dirs all
 
all: bin/psk31 bin/filter_test bin/packet bin/sound_device bin/NOAA_ATP bin/mixer bin/forward
 
create-dirs:
        mkdir -p bin
        mkdir -p build
        mkdir -p build/obj
 
###############################################################################
# Configuration Options                                                       #
###############################################################################
 
# Enables debug code
enable-debug:
        @echo "Debug enabled"
        $(eval DEFINES+=-D__DEBUG)
 
# For hardware without FPU's uses Integer only math to gain speed at cost of some accuracy
disable-float:
        @echo "Floats disabled"
        $(eval DEFINES+=-DDISABLE_FLOAT)
 
# Compiles faster less accurate algorithms for low end hardware
fast-algorithms:
        @echo "Faster Less accurate algorithms enabled"
        $(eval DEFINES+=-DFAST_ALGORITHMS)
 
###############################################################################
# Mixes 2 raw audio files                                                     #
###############################################################################
 
bin/mixer: build/obj/mixer.o
        $(CC) $(CFLAGS) -o bin/mixer build/obj/mixer.o
 
build/obj/mixer.o: src/mixer/mixer.c
        $(CC) $(CFLAGS) -o build/obj/mixer.o -c src/mixer/mixer.c
 
###############################################################################
# PSK31 Demodulator                                                           #
###############################################################################
 
bin/psk31: build/obj/main.o build/obj/psk31.o build/obj/Util.o build/obj/psk31_tdtl.o build/obj/psk31_wcpd.o build/obj/psk31_wpdd.o
        g++ -O3 -o bin/psk31 build/obj/main.o build/obj/psk31.o build/obj/Util.o build/obj/psk31_tdtl.o build/obj/psk31_wcpd.o build/obj/psk31_wpdd.o
 
build/obj/main.o: src/psk31/main.cpp
        g++ -O3 -o build/obj/main.o -c src/psk31/main.cpp
 
build/obj/psk31.o: src/psk31/psk31.cpp
        g++ -O3 -o build/obj/psk31.o -c src/psk31/psk31.cpp
 
build/obj/psk31_tdtl.o: src/psk31/psk31_tdtl.cpp
        g++ -O3 -o build/obj/psk31_tdtl.o -c src/psk31/psk31_tdtl.cpp
 
build/obj/psk31_wcpd.o: src/psk31/psk31_wcpd.cpp
        g++ -O3 -o build/obj/psk31_wcpd.o -c src/psk31/psk31_wcpd.cpp
 
build/obj/psk31_wpdd.o: src/psk31/psk31_wpdd.cpp
        g++ -O3 -o build/obj/psk31_wpdd.o -c src/psk31/psk31_wpdd.cpp
 
###############################################################################
# Finite Impulse Response filter                                              #
###############################################################################
 
bin/filter_test: build/obj/filter_test.o build/obj/filter.o build/obj/FIR_filter.o build/obj/Util.o
        g++ -O3 -o bin/filter_test build/obj/filter_test.o build/obj/filter.o build/obj/FIR_filter.o build/obj/Util.o
 
build/obj/filter_test.o: src/filter/filter_test.cpp
        g++ -O3 -o build/obj/filter_test.o -c src/filter/filter_test.cpp
 
build/obj/filter.o: src/filter/filter.cpp
        g++ -O3 -o build/obj/filter.o -c src/filter/filter.cpp
 
build/obj/FIR_filter.o: src/filter/FIR_filter.cpp
        g++ -O3 -o build/obj/FIR_filter.o -c src/filter/FIR_filter.cpp
 
###############################################################################
# Gets Microphone and pipes to stdout or file                                 #
###############################################################################
 
bin/sound_device: build/obj/sound_device.o build/obj/Util.o
        g++ -O3 -o bin/sound_device build/obj/sound_device.o build/obj/Util.o -lpulse -lpulse-simple
 
build/obj/sound_device.o: src/sound_device/sound_device.cpp
        g++ -O3 -o build/obj/sound_device.o -c src/sound_device/sound_device.cpp
 
###############################################################################
# NOAA ATP decoder                                                            #
###############################################################################
 
bin/NOAA_ATP: build/obj/NOAA_ATP_main.o build/obj/NOAA_ATP.o build/obj/Util.o
        g++ -O3 -o bin/NOAA_ATP build/obj/NOAA_ATP_main.o build/obj/NOAA_ATP.o build/obj/Util.o
 
build/obj/NOAA_ATP_main.o: src/NOAA_ATP/NOAA_ATP_main.cpp
        g++ -O3 -o build/obj/NOAA_ATP_main.o -c src/NOAA_ATP/NOAA_ATP_main.cpp
 
build/obj/NOAA_ATP.o: src/NOAA_ATP/NOAA_ATP.cpp
        g++ -O3 -o  build/obj/NOAA_ATP.o -c src/NOAA_ATP/NOAA_ATP.cpp
 
###############################################################################
# Network fowarder for data                                                   #
###############################################################################
 
bin/forward: build/obj/forward.o
        $(CC) -O3 -o bin/forward build/obj/forward.o
 
build/obj/forward.o: src/net/forward.c
        $(CC) -O3 -o build/obj/forward.o -c src/net/forward.c
 
###############################################################################
# AFSK Demodulator / APRSPacket Decoder                                       #
###############################################################################
 
bin/packet: build/obj/char_array_expandable.o build/obj/float_ring_buffer.o build/obj/char_ring_buffer.o build/obj/APRSPacket.o build/obj/AFSK_Demodulator.o build/obj/packet_main.o build/obj/crcccitt.o
        $(CC) $(CFLAGS) -lm $(DEFINES) -o bin/packet build/obj/char_array_expandable.o build/obj/float_ring_buffer.o build/obj/char_ring_buffer.o build/obj/APRSPacket.o build/obj/AFSK_Demodulator.o build/obj/packet_main.o build/obj/crcccitt.o
 
build/obj/packet_main.o: src/packet/packet_main.c
        $(CC) $(CFLAGS) $(DEFINES) -o build/obj/packet_main.o -c src/packet/packet_main.c
 
build/obj/AFSK_Demodulator.o: src/packet/AFSK_Demodulator.c
        $(CC) $(CFLAGS) $(DEFINES) -o build/obj/AFSK_Demodulator.o -c src/packet/AFSK_Demodulator.c
 
build/obj/APRSPacket.o: src/packet/APRSPacket.c
        $(CC) $(CFLAGS) $(DEFINES) -o build/obj/APRSPacket.o -c src/packet/APRSPacket.c
 
build/obj/char_ring_buffer.o: src/packet/char_ring_buffer.c
        $(CC) $(CFLAGS) $(DEFINES) -o build/obj/char_ring_buffer.o -c src/packet/char_ring_buffer.c
 
build/obj/float_ring_buffer.o: src/packet/float_ring_buffer.c
        $(CC) $(CFLAGS) $(DEFINES) -o build/obj/float_ring_buffer.o -c src/packet/float_ring_buffer.c
 
build/obj/char_array_expandable.o: src/packet/char_array_expandable.c
        $(CC) $(CFLAGS) $(DEFINES) -o build/obj/char_array_expandable.o -c src/packet/char_array_expandable.c
 
###############################################################################
# CRC                                                                         #
###############################################################################
 
build/obj/crcccitt.o: src/crc/crcccitt.c
        $(CC) $(CFLAGS) -o build/obj/crcccitt.o -c src/crc/crcccitt.c
 
###############################################################################
# Math                                                                        #
###############################################################################
 
build/obj/trig_table.o: src/math/trig_table.c
        $(CC) $(CFLAGS) -o build/obj/trig_table.o -c src/math/trig_table.c
 
###############################################################################
# Utility functions                                                           #
###############################################################################
 
build/obj/Util.o: src/util/Util.cpp
        g++ -O3 -o build/obj/Util.o -c src/util/Util.cpp
 
###############################################################################
# Cleans built objects                                                        #
###############################################################################
 
clean:
        rm -rf bin
        rm -rf build