cc_sources += \
    ../io.cc \
    ../Hardware.cc \
    ../HardwareTaskSimulation.cc \
    ../DataChannelSimulation.cc \
    ../HardwareTimerSimulation.cc \
    ../dataChannelTestUtility.cc \
    ../taskTests.cc \

c_sources += \
    ../../../software/signal_processing/system/data_channel.c \
    ../../../software/signal_processing/system/hardware_task.c \
    ../../../software/signal_processing/system/Complex.c \
    ../../../software/signal_processing/system/task_sine.c \
    ../../../software/signal_processing/system/task_rand.c \
    ../../../software/signal_processing/system/task_add.c \
    ../../../software/signal_processing/system/task_fft.c \
    ../../../software/signal_processing/system/task_crc.c \
    ../../../software/signal_processing/sine.c \
    ../../../software/signal_processing/rand.c \
    ../../../software/signal_processing/add.c \
    ../../../software/signal_processing/fft.c \
    ../../../software/signal_processing/crc.c \

includes += \
    -I .. \
    -I ../../../software/signal_processing_bsp \
    -I ../../../software/signal_processing_bsp/drivers/inc \
    -I ../../../software/signal_processing_bsp/HAL/inc \

c_objects = $(patsubst %.c,%.o, ${c_sources})
cc_objects = $(patsubst %.cc,%.oo, $(cc_sources))

objects = ${c_objects} ${cc_objects}

.PHONY: all
all: ${binary}
	@./$< --gtest_filter=*_and_check

data.py: ${binary}
	@./$< --gtest_filter=*_only

${binary}: bsp ${objects}
	@${CXX} ${objects} -lgtest -lpthread -o $@

%.oo:%.cc
	${CXX} --std=c++14 ${includes} -c $< -o $@

%.o:%.c
	${CC} --std=gnu99 ${includes} -c $< -o $@

PHONY: bsp
bsp:
	@${MAKE} -C ../../.. $@

.PHONY: clean
clean:
	@${RM} -rf ${objects} ${binary} ${artifacts}

