CC ?= gcc
CFLAGS ?= -O2 -g
CFLAGS += -std=c11 -Wall -Wextra -Werror
CPPFLAGS += -I/usr/hobot/include/canhal
LDFLAGS += -L/usr/hobot/lib
LDLIBS += -lhbcanhal -lpthread -lm

.PHONY: all test clean

all: gm6020_demo

gm6020_demo: gm6020_demo.o gm6020_protocol.o gm6020_speed_control.o
	$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@

test_gm6020_protocol: test_gm6020_protocol.o gm6020_protocol.o
	$(CC) $^ -o $@

test_gm6020_speed_control: test_gm6020_speed_control.o gm6020_speed_control.o
	$(CC) $^ -lm -o $@

libfake_canhal.so: fake_canhal.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -shared $< -ldl -o $@

test: gm6020_demo test_gm6020_protocol test_gm6020_speed_control libfake_canhal.so
	./test_gm6020_protocol
	./test_gm6020_speed_control
	sh ./test_gm6020_cli.sh

clean:
	rm -f *.o *.so gm6020_demo test_gm6020_protocol test_gm6020_speed_control
