OUT_DIR = $(PWD)

.PHONY: build install clean

BIN_NAME = canhal_get

SRCS = $(wildcard *.c)
OBJS = $(addprefix ${OUT_DIR}/, $(patsubst %.c, %.o, ${SRCS}))

OBJECT = ${OUT_DIR}/${BIN_NAME}

USER_API_VERSION_MAJOR := 1
USER_API_VERSION_MINOR := 0
USER_API_VERSION_PATCH := 0

DEFINES += -DUSER_API_VERSION_MAJOR=${USER_API_VERSION_MAJOR}
DEFINES += -DUSER_API_VERSION_MINOR=${USER_API_VERSION_MINOR}
DEFINES += -DUSER_API_VERSION_PATCH=${USER_API_VERSION_PATCH}

CFLAGS += -Wall
CFLAGS  += $(DEFINES)
CFLAGS += -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -Wno-sizeof-pointer-memaccess

CXXFLAGS  += $(DEFINES)
CXXFLAGS += -Wall

LDFLAGS := -L/usr/hobot/lib/ -L${OUT_DIR} ${LDFLAGS}

INCS := -I${OUTPUT_HBROOTFS_DIR}/include/canhal/ -I${OUTPUT_HBROOTFS_DIR}/usr/hobot/include/canhal/ -I${OUTPUT_HBROOTFS_DIR}/include/ ${INCS}

LIBS += -lhbcanhal

build: ${OBJECT}

$(OBJECT): $(OBJS)
	$(Q)mkdir -p $(abspath $(dir $@))
	$(Q)echo CC $@
	$(CC) $(CFLAGS) $(INCS) $^ $(LDFLAGS) $(LIBS) -o $@

${OUT_DIR}/%.o: %.c
	$(Q)mkdir -p $(abspath $(dir $@))
	$(Q)echo CC $@
	$(CC) $(INCS) -c $< -o $@

${OUT_DIR}/%.o : %.cpp
	$(Q)mkdir -p $(abspath $(dir $@))
	$(Q)echo CXX $@
	$(Q)$(CXX) $(INCS) $(CXXFLAGS) -c $< $(LDFLAGS) $(LIBS) -o $@

clean :
	rm -rf *.o $(OBJECT)

install:
