XTENSA_ISS_CYCLES_LIMIT := 1000000000 # Simulate 10^9 cycles.

ifndef XTENSA_TOOLS_PATH
    $(error Please set XTENSA_TOOLS_PATH first)
endif

ifndef XTENSA_BUILDS_PATH
    $(error Please set XTENSA_BUILDS_PATH first)
endif

XTENSA_BUILD_DIR := $(patsubst "%",%,${XTENSA_BUILD_DIR})

ifeq (${XTENSA_BUILD_DIR},)
    XTENSA_BUILD=$(shell echo ${XTENSA_BUILDS_PATH}/${CONFIG_SOC})
else
    ifeq ($(patsubst /%,/,${XTENSA_BUILD_DIR}),/)
        XTENSA_BUILD=${XTENSA_BUILD_DIR}
    else
        XTENSA_BUILD=$(shell echo ${CONFIG_XTENSA_BUILDS_PATH}/${XTENSA_BUILD_DIR})
    endif
endif

# Strip quotes from cross compiler anme prefix
CROSS_COMPILE_xtensa=$(patsubst "%",%,${CONFIG_CROSS_COMPILE})

ifeq (${CROSS_COMPILE_xtensa},)
    # Use default name prefix if no cross compiler name prefix is set
    CROSS_COMPILE_xtensa=xt-
endif

ifeq (${CONFIG_XTENSA},y)
CROSS_COMPILE = ${XTENSA_TOOLS_PATH}/bin/$(CROSS_COMPILE_$(ARCH))

ifeq ($(USE_CCACHE),1)
    CC = $(CCACHE) ${CROSS_COMPILE}xcc --xtensa-core=$(CONFIG_SOC)
    CXX = $(CCACHE) ${CROSS_COMPILE}xc++ --xtensa-core=$(CONFIG_SOC)
else
    CC = ${CROSS_COMPILE}xcc --xtensa-core=$(CONFIG_SOC)
    CXX = ${CROSS_COMPILE}xc++ --xtensa-core=$(CONFIG_SOC)
endif
AS = ${CROSS_COMPILE}as --xtensa-core=$(CONFIG_SOC)
LD = ${CROSS_COMPILE}ld --xtensa-core=$(CONFIG_SOC)
CROSS_COMPILE_TARGET = ${CROSS_COMPILE_TARGET_${ARCH}}

XTENSA_SYSTEM=$(XTENSA_BUILD)/config

XTSC_INC=$(realpath $(patsubst "%",%,${CONFIG_XTENSA_XTSC_INC}))
ifeq (${XTSC_INC},)
XTSC_INC=$(realpath ../$(patsubst "%",%,${CONFIG_XTENSA_XTSC_INC}))
endif
XTSC_WORK_DIR=$(dir ${XTSC_INC})
XTSC_INC_FILE=$(notdir ${XTSC_INC})

# Include XCC standard libraries so that users used to Xplorer IDE can port
# their code easily
TOOLCHAIN_LIBS += gcc hal
LIB_INCLUDE_DIR += -L${XTENSA_BUILD}/xtensa-elf/lib/xcc \
                   -L${XTENSA_BUILD}/xtensa-elf/lib \
                   -L${XTENSA_BUILD}/xtensa-elf/arch/lib

KBUILD_CPPFLAGS += -I$(XTENSA_TOOLS_PATH)/lib/xcc/include \
                   -I$(XTENSA_TOOLS_PATH)/xtensa-elf/include \
                   -I${XTENSA_BUILD}/xtensa-elf/arch/include \
                   -I${XTENSA_BUILD}/xtensa-elf/include \
                   -D'__builtin_unreachable()=while(1);'

# xt-xcc does not support -Og, replace with -O0
KBUILD_CFLAGS_OPTIMIZE:=$(patsubst -Og,-O0,${KBUILD_CFLAGS_OPTIMIZE})
KBUILD_CXXFLAGS:=$(filter-out \
			-std=c++11 \
			-fno-reorder-functions \
			-fno-asynchronous-unwind-tables \
			-fno-defer-pop \
			-Wno-unused-but-set-variable \
			-fno-omit-frame-pointer \
			,${KBUILD_CXXFLAGS})

# Support for Xtensa simulator from Cadence Design Systems, Inc.
XTRUN=${CROSS_COMPILE}run
XTRUN_FLAGS += --cycle_limit=${XTENSA_ISS_CYCLES_LIMIT}

export CROSS_COMPILE XTENSA_SYSTEM LIB_INCLUDE_DIR
endif # CONFIG_XTENSA

prepare2:
	${Q}test -d ${XTENSA_BUILD} || ( \
		echo '*** Error: Invalid Xtensa core configuration path \
			"${XTENSA_BUILD}"' && \
		exit 1 \
	)
