GPP      ?= $(CROSS_PREFIX)g++
LIB_NAME :=
RT_ROOT  ?= ../
RT_OUT ?= ../output
OBJ_DIR  := ./obj
BIN_DIR  := $(RT_OUT)/bin
KL2_RT_EN ?= 0

INC      := -I. -I$(RT_ROOT)/api -I$(RT_ROOT)/include -I$(RT_ROOT)/pcida
LDFLAGS  := -L$(RT_OUT)/lib
CFLAGS   := -fPIC -O2 -Wall -fpermissive -std=c++11

ifdef CROSS_SYSROOT
	CFLAGS += --sysroot=$(CROSS_SYSROOT)
endif

ifdef XDEBUG
	CFLAGS  += -DXDEBUG
	LDFLAGS += -lxpurt-debug
else
	LDFLAGS += -lxpurt
endif

ifeq ($(KL2_RT_EN), 1)
	LDFLAGS += -DKL2_RT -lssl -lcrypto
	#LDFLAGS += -DKL2_RT -I/usr/local/openssl/include -L/usr/local/openssl/lib -lssl -lcrypto
endif

LDFLAGS += -lpcida -ldl -lpthread

targets = $(patsubst %.cpp, $(BIN_DIR)/%, $(wildcard *.cpp))

SUBDIRS := run_sse_tc/ xpu_smi/ xpu_modprobe/ kl1/ kl2/

all: $(targets) $(SUBDIRS)

$(SUBDIRS):
	$(MAKE) -C $@

$(BIN_DIR)/%: %.cpp dirmake
	$(GPP) $(INC) $(CFLAGS)  -o $@ $< $(LDFLAGS)

#$(OBJ_DIR)/%.o: %.cpp dirmake
#	$(GPP) -c $(INC) $(CFLAGS) -o $@  $<

dirmake:
	@mkdir -p $(BIN_DIR)
#	@mkdir -p $(OBJ_DIR)

clean:
#	rm -f $(OBJ_DIR)/*.o
	rm -f Makefile.bak
	rm -f $(targets)
#	rm -rf $(OBJ_DIR)

rebuild: clean build

.PHONY: all $(SUBDIRS)
