#
# Copyright 2019,2020 NXP
# SPDX-License-Identifier: Apache-2.0
#
#

# Common and Communication Layers

IF(WithHost_Win10IoT)
    PROJECT(smComWin10IoTWrapper)
    FILE(
        GLOB
        smCom_Win10IoT_wrapper
        ../platform/win10iot/i2c_wrapper.cpp
        ../platform/win10iot/i2c_wrapper.h
        ../platform/inc/i2c_a7.h
    )
    ADD_LIBRARY(${PROJECT_NAME} ${smCom_Win10IoT_wrapper})

    SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY VS_WINRT_COMPONENT TRUE)
ENDIF()

PROJECT(smCom)

IF(WithHost_PCWindows)
    IF(WithSMCOM_VCOM)
        FILE(
            GLOB
            smCom_vcom_sources
            smCom/smComSerial*.h
            smCom/smComSerial_win32.c
        )
    ENDIF()
    IF(WithSMCOM_JRCP_V1)
        FILE(
            GLOB
            smCom_socket_sources
            smCom/smComSocket*.h
            smCom/smComSocket_win32.c
        )
    ENDIF()
ENDIF()
IF(WithSMCOM_PCSC)
    FILE(
        GLOB
        smCom_pcsc_sources
        smCom/smComPCSC.c
        smCom/smComPCSC.h
    )
ENDIF()

IF(WithSMCOM_JRCP_V2)
    FILE(
        GLOB
        smCom_jrcp_sources
        smCom/smComJRCP*.h
        smCom/smComJRCP*.c
    )
ENDIF()

IF(WithSMCOM_JRCP_V1)
    FILE(
        GLOB
        smCom_socket_sources
        smCom/smComSocket*.h
    )
    IF(WithHost_PCWindows)
        LIST(
            APPEND
            smCom_socket_sources
            smCom/smComSocket_win32.c
        )
    ELSE()
        LIST(
            APPEND
            smCom_socket_sources
            smCom/smComSocket_linux.c
            smCom/smComSocket_fd.c
        )
    ENDIF()
ENDIF()

IF(WithHost_Darwin)
    IF(WithSMCOM_VCOM)
        FILE(
            GLOB
            smCom_vcom_sources
            smCom/smComSerial*.h
            smCom/smComSerial_Darwin.c
            smCom/smComSocket_fd.c
        )
    ENDIF()
ENDIF()

IF(WithHost_PCLinux)
    IF(WithSMCOM_VCOM)
        FILE(
            GLOB
            smCom_vcom_sources
            smCom/smComSerial*.h
            smCom/smComSerial_PCLinux.c
            smCom/smComSocket_fd.c
        )
    ENDIF()
ENDIF()

IF(WithSMCOM_SCI2C)
    FILE(
        GLOB
        smCom_sci2c_sources
        smCom/sci2c*.h
        smCom/sci2c*.c
        smCom/smComSCI2C*.c
    )
ENDIF()

IF(WithHost_iMXLinux)
    FILE(
        GLOB
        smCom_imx_sources
        ../platform/linux/i2c_a7.c
        ../platform/imx/se05x_reset.c
    )
ENDIF()

IF(WithHost_Win10IoT)
    FILE(
        GLOB
        smCom_Win10IoT_sources
        ../platform/win10iot/i2c_a7.c
    )

ENDIF()

IF(WithHost_Raspbian)
    FILE(
        GLOB
        smCom_raspbian_sources
        ../platform/linux/i2c_a7.c
        ../platform/rsp/se05x_reset.c
    )
ENDIF()

IF(WithHost_Android)
    FILE(
        GLOB
        smCom_android_sources
        ../platform/linux/i2c_a7.c
        ../platform/imx/se05x_reset.c
    )
ENDIF()

IF(WithSMCOM_T1oI2C)
    FILE(
        GLOB
        smCom_T1oi2c_sources
        smCom/T1oI2C/*.c
        smCom/smComT1oI2C*.h
        smCom/smComT1oI2C*.c
    )
ENDIF()

IF(WithSMCOM_T1oI2C_GP1_0)
    FILE(
        GLOB
        smCom_T1oI2C_GP1_0_sources
        smCom/T1oI2C/*.c
        smCom/smComT1oI2C*.h
        smCom/smComT1oI2C*.c
    )
ENDIF()

IF(WithSMCOM_PN7150)
    FILE(
        GLOB
        smCom_pn7150_sources
        smCom/smComPN7150*.h
        smCom/smComPN7150*.c
    )
ENDIF()

IF(WithSMCOM_Thread)
    FILE(
        GLOB
        smCom_thread_sources
        smCom/smComThread*.h
        smCom/smComThread*.c
    )
ENDIF()

IF(WithSMCOM_RC663_VCOM OR WithSMCOM_RC663_SPI)
    FILE(
        GLOB
        smCom_rc663_sources
        smCom/smComNxpNfcRdLib*.h
        smCom/smComNxpNfcRdLib*.c
        smCom/npRdLib/*.c
        smCom/npRdLib/*.h
    )
ENDIF()

IF(WithKSDK)
    SET(smCom_timer_sources ../platform/ksdk/timer_kinetis.c ../tstUtil/tst_sm_time_kinetis.c)
ELSE()
    SET(smCom_timer_sources ../platform/generic/sm_timer.c ../tstUtil/tst_sm_time.c)
ENDIF()

FILE(
    GLOB
    smCom_sources
    infra/sm_apdu.*
    infra/sm_errors.*
    infra/sm_printf.c
    infra/nxLog*.h
    smCom/smCom.*
    infra/nxLog*.h
    ${smCom_vcom_sources}
    ${smCom_jrcp_sources}
    ${smCom_socket_sources}
    ${smCom_sci2c_sources}
    ${smCom_timer_sources}
    ${smCom_T1oi2c_sources}
    ${smCom_T1oI2C_GP1_0_sources}
    ${smCom_imx_sources}
    ${smCom_Win10IoT_sources}
    ${smCom_raspbian_sources}
    ${smCom_android_sources}
    ${smCom_pn7150_sources}
    ${smCom_thread_sources}
    ${smCom_pcsc_sources}
    ${smCom_rc663_sources}
)
IF(WithHost_Android)
    FILE(
        GLOB
        nxLog_sources
        infra/nxLog_Android.c
    )
ELSEIF(NOT WithLog_SeggerRTT)
    IF(NOT WithHost_lpcxpresso55s_ns)
        FILE(
            GLOB
            nxLog_sources
            infra/nxLog.c
        )
    ENDIF()
    IF(WithHost_lpcxpresso55s_ns)
        FILE(
            GLOB
            nxLog_sources
            infra/nxLog_lpc55s_ns.c
        )
    ENDIF()
ENDIF()

IF(WithSCP_SCP03_SSS)
    FILE(
        GLOB
        nxScp_files
        nxScp/*.c
        ../inc/nxScp03_*.h
    )
ENDIF()

ADD_LIBRARY(
    smCom
    ${smCom_sources}
    ${nxLog_sources}
    ${nxScp_files}
)

TARGET_COMPILE_DEFINITIONS(smCom PRIVATE # FLOW_VERBOSE
)

TARGET_INCLUDE_DIRECTORIES(
    smCom
    PUBLIC smCom
    PUBLIC infra
    PUBLIC ../inc
    PUBLIC ../platform/inc
    PUBLIC ../tstUtil
    PRIVATE ${CMAKE_SOURCE_DIR}/sss/ex/inc
)

IF(WithSCP_SCP03_SSS)
    INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sss/inc)
    IF(WithKSDK)
        INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sss/port/kinetis)
    ELSE()
        INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sss/port/x86 #TODO Purnank to fix1
        )
    ENDIF()
ELSE()
    TARGET_INCLUDE_DIRECTORIES(smCom PRIVATE scp)
ENDIF()

IF(WithSMCOM_T1oI2C)
    TARGET_INCLUDE_DIRECTORIES(smCom PUBLIC smCom/T1oI2C)
ENDIF()

IF(WithSMCOM_T1oI2C_GP1_0)
    TARGET_INCLUDE_DIRECTORIES(smCom PUBLIC smCom/T1oI2C)
ENDIF()

IF(WithSMCOM_JRCP_V2)
    TARGET_LINK_LIBRARIES(smCom jrcplib)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SMCOM_JRCP_V2 # New version
    )
ENDIF()

IF(WithSMCOM_PN7150)
    TARGET_LINK_LIBRARIES(smCom PN7150Nfc)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SMCOM_PN7150)
ENDIF()

IF(WithSMCOM_JRCP_V1)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SMCOM_JRCP_V1 # Old version
    )
ENDIF()

IF(WithSMCOM_PCSC)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SMCOM_PCSC)
    IF(WithHost_PCLinux)
        TARGET_INCLUDE_DIRECTORIES(smCom PRIVATE /usr/include/PCSC)
    ENDIF()
ENDIF()

IF(WithSMCOM_VCOM)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC RJCT_VCOM)
ENDIF()

IF(WithSMCOM_SCI2C)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SCI2C)
ENDIF()

IF(WithSMCOM_T1oI2C)
    TARGET_COMPILE_DEFINITIONS(smCom PRIVATE T1oI2C_UM11225)
ENDIF()

IF(WithSMCOM_T1oI2C_GP1_0)
    TARGET_COMPILE_DEFINITIONS(smCom PRIVATE T1oI2C_GP1_0)
ENDIF()

IF(WithSMCOM_Thread)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SMCOM_THREAD)
ENDIF()

IF(WithSMCOM_RC663_VCOM)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC SMCOM_RC663_VCOM)
    TARGET_LINK_LIBRARIES(smCom nxpnfcrdlib)
ENDIF()

IF(WithKSDK)
    TARGET_LINK_LIBRARIES(smCom board)
ENDIF()

IF(WithHostCrypto_MBEDTLS OR WithHostCrypto_MBEDCRYPTO)
    TARGET_LINK_LIBRARIES(smCom mbedtls)
ENDIF()

IF(WithApplet_A71CH OR WithApplet_A71CH_SIM)
    TARGET_COMPILE_DEFINITIONS(
        smCom PUBLIC TGT_A71CH
                     # FLOW_VERBOSE
    )
ENDIF()

IF(WithApplet_LoopBack)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC TGT_NONE)
ENDIF()

IF(WithApplet_A71CL OR WithApplet_SE050_L)
    TARGET_COMPILE_DEFINITIONS(
        smCom PUBLIC TGT_A71CL TGT_A71ID2
                     # FLOW_VERBOSE
    )
ENDIF()

IF(WithHost_iMXLinux)
    TARGET_COMPILE_DEFINITIONS(smCom PUBLIC PLATFORM_IMX)
ENDIF()

TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OPENSSL_LIBRARIES})

IF(WithLog_SeggerRTT)
    TARGET_LINK_LIBRARIES(smCom seggerrtt)
ENDIF()

IF(WithHost_lpcxpresso55s_ns)
    TARGET_LINK_LIBRARIES(${PROJECT_NAME} lpc55s_veneer)
ENDIF()

IF(WithHost_Raspbian)
    TARGET_LINK_LIBRARIES(${PROJECT_NAME} pthread)
ENDIF()

IF(WithHost_Android)
    TARGET_LINK_LIBRARIES(${PROJECT_NAME} log)
    INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
ENDIF()

IF(WithHost_LinuxLike)
    INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
    INSTALL(
        DIRECTORY infra/ smCom/
        DESTINATION ${SIMW_INSTALL_INC_DIR}
        FILES_MATCHING
        PATTERN "*.h"
    )
ENDIF()

IF(CMAKE_COMPILER_IS_GNUCC AND (NOT WithKSDK))
    TARGET_LINK_LIBRARIES(smCom -lpthread)
ENDIF()

IF(WithHost_PCLinux)
    TARGET_LINK_LIBRARIES(smCom -lrt)
ENDIF()

IF(WithHost_Win10IoT)
    SET_TARGET_PROPERTIES(smCom PROPERTIES LINK_FLAGS_RELEASE "/defaultlib:vccorlib.lib /defaultlib:msvcrt.lib")
    SET_TARGET_PROPERTIES(smCom PROPERTIES LINK_FLAGS_DEBUG "/defaultlib:vccorlibd.lib /defaultlib:msvcrtd.lib")

    TARGET_LINK_LIBRARIES(${PROJECT_NAME} smComWin10IoTWrapper)
ENDIF()

IF(WithSMCOM_PCSC)
    IF(WithHost_PCWindows)
        TARGET_LINK_LIBRARIES(${PROJECT_NAME} Winscard)
    ENDIF()
    IF(WithHost_Darwin)
        TARGET_LINK_LIBRARIES(${PROJECT_NAME} "-framework PCSC")
    ENDIF()
    IF(WithHost_PCLinux)
        TARGET_LINK_LIBRARIES(${PROJECT_NAME} pcsclite)
    ENDIF()
ENDIF()
