CC := $(shell wx-config --cxx)

CFLAGS := -I.. -O2 -Wall $(shell wx-config --cxxflags)

LDFLAGS :=

LIBS := -lfftw -lsndfile $(shell wx-config --libs)

all:		AudioData AudioMixerTest DopplerTest Fade FFTSpeed \
		FSK441Decoder FSK441Transmit JT44Decoder JT44Transmit \
		JT6MDecoder JT6MTransmit Noise NoisyToneGenerator \
		SunAndMoon ToneGenerator WAVEdit

AudioData:	AudioData.o ../common/common.a
		$(CC) $(LDFLAGS) AudioData.o ../common/common.a -o AudioData $(LIBS)

AudioMixerTest:	AudioMixerTest.o ../common/common.a
		$(CC) $(LDFLAGS) AudioMixerTest.o ../common/common.a -o AudioMixerTest $(LIBS)

DopplerTest:	DopplerTest.o ../common/common.a
		$(CC) $(LDFLAGS) DopplerTest.o ../common/common.a -o DopplerTest $(LIBS)

Fade:		Fade.o Gaussian.o ../common/common.a
		$(CC) $(LDFLAGS) Fade.o Gaussian.o ../common/common.a -o Fade $(LIBS)

FFTSpeed:	FFTSpeed.o ../common/common.a
		$(CC) $(LDFLAGS) FFTSpeed.o ../common/common.a -o FFTSpeed $(LIBS)

FSK441Decoder:	FSK441Decoder.o ../common/common.a ../fsk441/fsk441.a
		$(CC) $(LDFLAGS) FSK441Decoder.o ../common/common.a ../fsk441/fsk441.a -o FSK441Decoder $(LIBS)

FSK441Transmit:	FSK441Transmit.o ../common/common.a ../fsk441/fsk441.a
		$(CC) $(LDFLAGS) FSK441Transmit.o ../common/common.a ../fsk441/fsk441.a -o FSK441Transmit $(LIBS)

JT44Decoder:	JT44Decoder.o ../common/common.a ../jt44/jt44.a
		$(CC) $(LDFLAGS) JT44Decoder.o ../common/common.a ../jt44/jt44.a -o JT44Decoder $(LIBS)

JT44Transmit:	JT44Transmit.o ../common/common.a ../jt44/jt44.a
		$(CC) $(LDFLAGS) JT44Transmit.o ../common/common.a ../jt44/jt44.a -o JT44Transmit $(LIBS)

JT6MDecoder:	JT6MDecoder.o JT6MFoldMessages.o ../common/common.a ../jt6m/jt6m.a
		$(CC) $(LDFLAGS) JT6MDecoder.o JT6MFoldMessages.o ../common/common.a ../jt6m/jt6m.a -o JT6MDecoder $(LIBS)

JT6MTransmit:	JT6MTransmit.o ../common/common.a ../jt6m/jt6m.a
		$(CC) $(LDFLAGS) JT6MTransmit.o ../common/common.a ../jt6m/jt6m.a -o JT6MTransmit $(LIBS)

Noise:		Noise.o Gaussian.o ../common/common.a
		$(CC) $(LDFLAGS) Noise.o Gaussian.o ../common/common.a -o Noise $(LIBS)

NoisyToneGenerator: NoisyToneGenerator.o NoisyNCO.o Gaussian.o ../common/common.a
		$(CC) $(LDFLAGS) NoisyToneGenerator.o NoisyNCO.o Gaussian.o ../common/common.a -o NoisyToneGenerator $(LIBS)

SunAndMoon:	SunAndMoon.o ../common/common.a
		$(CC) $(LDFLAGS) SunAndMoon.o ../common/common.a -o SunAndMoon $(LIBS)

ToneGenerator:	ToneGenerator.o ../common/common.a
		$(CC) $(LDFLAGS) ToneGenerator.o ../common/common.a -o ToneGenerator $(LIBS)

WAVEdit:	WAVEdit.o ../common/common.a
		$(CC) $(LDFLAGS) WAVEdit.o ../common/common.a -o WAVEdit $(LIBS)

AudioData.o:	AudioData.cpp AudioData.h
		$(CC) $(CFLAGS) -c AudioData.cpp

AudioMixerTest.o: AudioMixerTest.cpp AudioMixerTest.h
		$(CC) $(CFLAGS) -c AudioMixerTest.cpp

DopplerTest.o:	DopplerTest.cpp DopplerTest.h
		$(CC) $(CFLAGS) -c DopplerTest.cpp

Fade.o:		Fade.cpp Fade.h Gaussian.h
		$(CC) $(CFLAGS) -c Fade.cpp

FFTSpeed.o:	FFTSpeed.cpp FFTSpeed.h
		$(CC) $(CFLAGS) -c FFTSpeed.cpp

FSK441Decoder.o: FSK441Decoder.cpp FSK441Decoder.h
		$(CC) $(CFLAGS) -c FSK441Decoder.cpp

FSK441Transmit.o: FSK441Transmit.cpp FSK441Transmit.h
		$(CC) $(CFLAGS) -c FSK441Transmit.cpp

Gaussian.o:	Gaussian.cpp Gaussian.h
		$(CC) $(CFLAGS) -c Gaussian.cpp

JT44Decoder.o:	JT44Decoder.cpp JT44Decoder.h
		$(CC) $(CFLAGS) -c JT44Decoder.cpp

JT44Transmit.o:	JT44Transmit.cpp JT44Transmit.h
		$(CC) $(CFLAGS) -c JT44Transmit.cpp

JT6MBurstData.o: JT6MBurstData.cpp JT6MBurstData.h
		$(CC) $(CFLAGS) -c JT6MBurstData.cpp

JT6MDecoder.o:	JT6MDecoder.cpp JT6MDecoder.h JT6MFoldMessages.h
		$(CC) $(CFLAGS) -c JT6MDecoder.cpp

JT6MFoldMessages.o: JT6MFoldMessages.cpp JT6MFoldMessages.h
		$(CC) $(CFLAGS) -c JT6MFoldMessages.cpp

JT6MTransmit.o:	JT6MTransmit.cpp JT6MTransmit.h
		$(CC) $(CFLAGS) -c JT6MTransmit.cpp

Noise.o:	Noise.cpp Noise.h Gaussian.h
		$(CC) $(CFLAGS) -c Noise.cpp

NoisyNCO.o:	NoisyNCO.cpp NoisyNCO.h Gaussian.h
		$(CC) $(CFLAGS) -c NoisyNCO.cpp

NoisyToneGenerator.o: NoisyToneGenerator.cpp NoisyToneGenerator.h NoisyNCO.h
		$(CC) $(CFLAGS) -c NoisyToneGenerator.cpp

SunAndMoon.o:	SunAndMoon.cpp SunAndMoon.h
		$(CC) $(CFLAGS) -c SunAndMoon.cpp

ToneGenerator.o: ToneGenerator.cpp ToneGenerator.h
		$(CC) $(CFLAGS) -c ToneGenerator.cpp

WAVEdit.o:	WAVEdit.cpp WAVEdit.h
		$(CC) $(CFLAGS) -c WAVEdit.cpp

clean:
		rm -f AudioData AudioMixerTest DopplerTest Fade FFTSpeed \
		FSK441Decoder FSK441Transmit JT44Decoder JT44Transmit \
		JT6MDecoder JT6MTransmit Noise NoisyToneGenerator \
		SunAndMoon ToneGenerator WAVEdit core *.o *~ *.bak
