.PHONY: build clean

# 头文件
INCS += -I.
INCS += -I../swapi
INCS += -I./include
INCS += -I./nmealib/include

# 源文件
NMEA_SRCS := $(wildcard ./nmealib/src/*.c)
SRCS += $(filter-out ../swapi/testLib.c, $(wildcard ../swapi/*.c))
SRCS += ../swapi/subjects/serial/serial.c air530z.c
SRCS += $(NMEA_SRCS)

# .o文件
OBJS := $(SRCS:.c=.o)

# 编译器
CC := gcc
CFLAGS := -Wall -fPIC -O2 -g
CFLAGS_NMEA := $(CFLAGS) -Wno-unused-but-set-variable
DEFINS := -D_GNU_SOURCE

# 单元测试时使用用, 开启调试模式, 正式编译时需要注释掉
# DEFINS += -D_DEBUG

target ?= x86_64
ifeq ($(target),armv7hf)
  CC := arm-linux-gnueabihf-gcc
	AR := arm-linux-gnueabihf-ar
endif

# 库文件
LIBS += -Wl,-Bdynamic -lc -lm -ldl -lpthread

# 编译和清理
build : libair530z.a air530z_test.out

%.o : %.c
	$(CC) $(DEFINS) $(CFLAGS) -c $< $(INCS) -o $@

nmealib/src/%.o: nmealib/src/%.c
	$(CC) $(DEFINS) $(CFLAGS_NMEA) -c $< $(INCS) -o $@

libair530z.a : $(OBJS)
	$(AR) -cr $@ $(OBJS)

air530z_test.out : $(OBJS) air530z_test.c
	$(CC) $(DEFINS) $(CFLAGS) $(OBJS) air530z_test.c $(INCS) $(LIBS) -o $@

clean :
	rm -rf $(OBJS) *.out *.a config/ log/ status/ var/
