set(CFG_SRC_ROOT_DIR    ${CFG_SRC_ROOT}/)
set(CFG_INC_ROOT_DIR    ${CFG_INC_ROOT}/)

#
# NSC STACK LIB
#

set (CFG_INCLUDE_DIR_NSC_LIB
    # Components
    ${CFG_INC_ROOT_DIR}COMPS
    ${CFG_INC_ROOT_DIR}COMPS/IORQ
    ${CFG_INC_ROOT_DIR}COMPS/LOG
    ${CFG_INC_ROOT_DIR}COMPS/HAL
    ${CFG_INC_ROOT_DIR}COMPS/HCE
    ${CFG_INC_ROOT_DIR}COMPS/HCI
    ${CFG_INC_ROOT_DIR}COMPS/NSC
    ${CFG_INC_ROOT_DIR}COMPS/FACTORY
    ${CFG_INC_ROOT_DIR}COMPS/NVM
    ${CFG_INC_ROOT_DIR}COMPS/OSAL
    ${CFG_INC_ROOT_DIR}COMPS/INT
)

set (CFG_SOURCES_DIR_NSC_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}COMPS/IORQ/ptx_IoRq.c
    ${CFG_SRC_ROOT_DIR}COMPS/IORQ/ptx_Fifo_IoRq.c
    ${CFG_SRC_ROOT_DIR}COMPS/IORQ/ptxThread_Fifo.c
    ${CFG_SRC_ROOT_DIR}COMPS/IORQ/ptxBufferPool.c
    ${CFG_SRC_ROOT_DIR}COMPS/LOG/ptxLog.c
    ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal.c
    ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal_Gpio_Linux.c
    ${CFG_SRC_ROOT_DIR}COMPS/HCE/ptxHce.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Interface.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Thread.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_WR.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Download.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Hal.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_uCODE.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_RfConfig.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_RfParameter.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_RfTest.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_System.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_GPIO.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Common.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_RfActivate.c
    ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_RoutingTable.c
    ${CFG_SRC_ROOT_DIR}COMPS/FACTORY/ptxNscFactory.c
    ${CFG_SRC_ROOT_DIR}COMPS/OSAL/ptxOsal_Linux.c
    ${CFG_SRC_ROOT_DIR}COMPS/NVM/ptxNvm.c
    ${CFG_SRC_ROOT_DIR}COMPS/INT/ptxTbInt.c
    ${CFG_SRC_ROOT_DIR}COMPS/INT/ptxTbInt_VersionInfo.c
)

if (PTX_SDK_HAL)
    if(${PTX_SDK_HAL} STREQUAL "SPI")
        message("Selected SPI Interface, generating CMake Files...")
        list(APPEND CFG_SOURCES_DIR_NSC_LIB
            ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal_SPI_Linux.c
            ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Thread_SPI.c
        )
    elseif(${PTX_SDK_HAL} STREQUAL "I2C")
        message("Selected I2C Interface, generating CMake Files...")
        list(APPEND CFG_SOURCES_DIR_NSC_LIB
            ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal_I2C_Linux.c
            ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Thread_I2C.c
        )
    elseif(${PTX_SDK_HAL} STREQUAL "UART")
        message("Selected UART Interface, generating CMake Files...")
        list(APPEND CFG_SOURCES_DIR_NSC_LIB
            ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal_UART_Linux.c
            ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Thread_UART.c
        )
    else()
        message(WARNING "No or unavailable HAL interface selected, defaulting to SPI")
        list(APPEND CFG_SOURCES_DIR_NSC_LIB
            ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal_SPI_Linux.c
            ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Thread_SPI.c
        )
    endif()
else()
    message(WARNING "No or unavailable HAL interface selected, defaulting to SPI")
    list(APPEND CFG_SOURCES_DIR_NSC_LIB
        ${CFG_SRC_ROOT_DIR}COMPS/HAL/ptxHal_SPI_Linux.c
        ${CFG_SRC_ROOT_DIR}COMPS/NSC/ptxNSC_Thread_SPI.c
    )
endif()

#
# STACK LIB for IOT-RD
#
set (CFG_INCLUDE_DIR_COMMON
	#Components
	${CFG_INC_ROOT_DIR}APIs/COMMON
)

set (CFG_INCLUDE_DIR_IOTRD_LIB
    # Components
    ${CFG_INCLUDE_DIR_NSC_LIB}
    ${CFG_INCLUDE_DIR_COMMON}
    ${CFG_INC_ROOT_DIR}APIs/IOT_READER
    ${CFG_INC_ROOT_DIR}APIs/NATIVE_TAG
    ${CFG_INC_ROOT_DIR}APIs/NDEF
    ${CFG_INC_ROOT_DIR}APIs/GPIO
    ${CFG_INC_ROOT_DIR}APIs/FELICA_DTE
    ${CFG_INC_ROOT_DIR}APIs/RF_TEST
    ${CFG_INC_ROOT_DIR}APIs/TRANSPARENT_MODE
    ${CFG_INC_ROOT_DIR}APIs/TDC
)

set (CFG_SOURCES_DIR_NATIVE_TAG_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/NATIVE_TAG/ptxNativeTag_T2T.c
    ${CFG_SRC_ROOT_DIR}/APIs/NATIVE_TAG/ptxNativeTag_T3T.c
    ${CFG_SRC_ROOT_DIR}/APIs/NATIVE_TAG/ptxNativeTag_T4T.c
    ${CFG_SRC_ROOT_DIR}/APIs/NATIVE_TAG/ptxNativeTag_T5T.c
)

set (CFG_SOURCES_DIR_NDEF_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/NDEF/ptxNDEF_T2TOP.c
    ${CFG_SRC_ROOT_DIR}/APIs/NDEF/ptxNDEF_T3TOP.c
    ${CFG_SRC_ROOT_DIR}/APIs/NDEF/ptxNDEF_T4TOP.c
    ${CFG_SRC_ROOT_DIR}/APIs/NDEF/ptxNDEF_T5TOP.c
    ${CFG_SRC_ROOT_DIR}/APIs/NDEF/ptxNDEF.c
)

set (CFG_SOURCES_DIR_GPIO_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/GPIO/ptxGPIO.c
)

set (CFG_SOURCES_DIR_FELICA_DTE_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/FELICA_DTE/ptxFeliCa_DTE.c
)

set (CFG_SOURCES_DIR_RF_TEST_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/RF_TEST/ptxRF_Test.c
)

set (CFG_SOURCES_DIR_TRANSPARENT_MODE_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/TRANSPARENT_MODE/ptxTransparentMode.c
)

set (CFG_SOURCES_DIR_TDC_LIB
    # Components
    ${CFG_SRC_ROOT_DIR}/APIs/TDC/ptxTDC.c
)

set (CFG_SOURCES_DIR_IOTRD_LIB
    # Components
    ${CFG_SOURCES_DIR_NSC_LIB}
    ${CFG_SRC_ROOT_DIR}/APIs/IOT_READER/ptx_IOT_READER.c
    ${CFG_SRC_ROOT_DIR}/APIs/COMMON/ptxCOMMON.c
    ${CFG_SRC_ROOT_DIR}/APIs/COMMON/ptxIoTRd_COMMON.c
    ${CFG_SRC_ROOT_DIR}/APIs/COMMON/ptxHce_Exchange.c
    ${CFG_SRC_ROOT_DIR}/APIs/COMMON/ptxHce_Loopback.c
    ${CFG_SRC_ROOT_DIR}/APIs/COMMON/ptxT4T.c
    ${CFG_SRC_ROOT_DIR}/APIs/COMMON/ptxMisc_Mode.c
    ${CFG_SOURCES_DIR_NATIVE_TAG_LIB}
    ${CFG_SOURCES_DIR_NDEF_LIB}
    ${CFG_SOURCES_DIR_GPIO_LIB}
    ${CFG_SOURCES_DIR_FELICA_DTE_LIB}
    ${CFG_SOURCES_DIR_RF_TEST_LIB}
    ${CFG_SOURCES_DIR_TRANSPARENT_MODE_LIB}
    ${CFG_SOURCES_DIR_TDC_LIB}        
)

#
# IOT-RD EXE
#

set (CFG_INCLUDE_DIR_IOTRD_EXE
    ${CFG_INCLUDE_DIR_IOTRD_LIB}
    ${CFG_INC_ROOT_DIR}EXAMPLE
)

set (CFG_SOURCES_DIR_IOTRD_EXE
    ${CFG_SOURCES_DIR_IOTRD_LIB}
    ${CFG_SRC_ROOT_DIR}/EXAMPLE/ptx_IOT_RD_Main.c
)
