#
# Copyright (c) [2019~2020] SigmaStar Technology.
#
#
# This software is licensed under the terms of the GNU General Public
# License version 2, as published by the Free Software Foundation, and
# may be copied, distributed, and modified under those terms.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License version 2 for more details.
#

-include ../../../.config

CROSS_COMPILE ?=aarch64-linux-gnu-
ARCH ?=arm64
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar
STRIP = $(CROSS_COMPILE)strip
BUILD_DIR := .build
LIB_NAME=ss_mbx
BRANCH_ID := $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null | sed -e 's/\//_/g')
GIT_COMMIT_INFO:="Sigmastar Module version: kernel_commit.$(shell git log -n 1 --format="%h") build_time.$(shell date +%Y%m%d%H%M%S)"

LINUX_KERNEL_PATH ?= $(PWD)/../../../
KL_API_INCLUDE ?= $(LINUX_KERNEL_PATH)/drivers/sstar/include

CFLAGS := -Wall -Werror -Wno-sync-nand -O2 -ffunction-sections -funwind-tables -fstack-protector
CFLAGS += -fPIC -DPIC

CFLAGS += -DCAM_OS_LINUX_USER

#CFLAGS += -D__USE_GNU
LDFLAGS += -O2 -Bdirect -Wl,--hash-style=gnu
LIBS := -ldl -lpthread

CORE_LIB_C_SRCS := \
    ./ss_mbx.c

CINCLUDES := \
    -I$(KL_API_INCLUDE)

LIB_HEADERS := \
    ../include/ss_mbx.h

CORE_LIB_C_OBJS := $(patsubst %.c, %.c.o,  $(CORE_LIB_C_SRCS))

.PHONY: clean prepare lib$(LIB_NAME)

ifeq ($(CONFIG_SSTAR_MBX),)
    all:
		@echo "  CONFIG_SSTAR_MBX is not set, not need make ss_mbx lib"

    clean:
		@echo "  CONFIG_SSTAR_MBX is not set, not need clean"
else
    all: prepare lib$(LIB_NAME)


    prepare:
		@echo
		@echo ">>>>========================================================"
		@echo
		@echo "  LIB_NAME = ${LIB_NAME}"
		@echo "  CONFIG_SSTAR_MBX = $(CONFIG_SSTAR_MBX)"
		@echo "  PWD = $(shell pwd)"
		@echo "  CC = $(CC)"
		@echo "  BRANCH_ID = $(BRANCH_ID)"
		@echo "  GIT_COMMIT_INFO = $(GIT_COMMIT_INFO)"
		@echo
		@mkdir -p $(BUILD_DIR)
		@echo "  Copying headers to '$(BUILD_DIR)/include'..."
		@echo
		@mkdir -p $(BUILD_DIR)/include
		@cp -f $(LIB_HEADERS) $(BUILD_DIR)/include

    clean:
		@rm -Rf $(CORE_LIB_C_OBJS)
		@rm -Rf $(BUILD_DIR)

    lib$(LIB_NAME):	 prepare $(CORE_LIB_C_OBJS)
		@mkdir -p $(BUILD_DIR)/lib
		@echo "  LD      $(BUILD_DIR)/lib/$@.so"
		@$(CC) -shared $(LDFLAGS) -o $(BUILD_DIR)/lib/$@.so $(CORE_LIB_C_OBJS) ${LIBS}
		@echo "  AR      $(BUILD_DIR)/lib/$@.a"
		@$(AR) -crs $(BUILD_DIR)/lib/$@.a $(CORE_LIB_C_OBJS)
		@echo
		@echo "<<<<========================================================"
		@echo

    %.c.o : %.c
		@mkdir -p $(dir $@)
		@echo "  CC      $<"
#		@echo $(CFLAGS) $(CINCLUDES)  -c $< -o $@
		@$(CC) $(CFLAGS) $(CINCLUDES)  -c $< -o $@ -DSIGMASTAR_MODULE_VERSION=$(GIT_COMMIT_INFO)
endif