#
# TOOL
#

cmake_minimum_required(VERSION 3.10)

project(IoTApi C)

# NEW POLICY: link_directories() command prefers to interpret relative paths with
# respect to CMAKE_CURRENT_SOURCE_DIR, which is consistent with include_directories()
# and other commands.
cmake_policy(SET CMP0015 NEW)

#
# INCLDUE GENERAL PROJECT SETTINGS
#

include(1_CMake_TB.txt)
include(1_CMakeLists_Aux.txt)

# Interface selection
# Either simply use cmake-gui to select or from command line configure using either:
# $ make -DPTX_SDK_HAL=I2C ../SRC/
# $ make -DPTX_SDK_HAL=SPI ../SRC/
# $ make -DPTX_SDK_HAL=UART ../SRC/

set (PTX_SDK_HAL "SPI" CACHE STRING "Select HAL interface type")
set_property(CACHE PTX_SDK_HAL PROPERTY STRINGS SPI I2C UART)

message(STATUS "*** BUILDING THE SYSTEM ***")

include_directories(
    # Not used.
)

#
# LINKER
#

link_directories(
    ${PRJ_CFG_OUTPUT_PATH} # Where Lib ends up
)

#
# LIBRARY TARGETS
#

#
# IOT-RD shared Library
add_library(${CMAKE_TARGET_IOTRD}      SHARED
    # C-Files which are generic and embed test bench
    ${CFG_SOURCES_DIR_IOTRD_LIB}					
)

#
# EXECUTABLE TARGETS
#

#
# IOT-RD example executable
add_executable(${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}
    # C-Files which are generic and embed test bench
    ${CFG_SOURCES_DIR_IOTRD_EXE}       
)

#
# TARGET PROPERTIES
#

#
# IOT-RD shared Library
set_target_properties(${CMAKE_TARGET_IOTRD}               PROPERTIES INCLUDE_DIRECTORIES "${CFG_INCLUDE_DIR_IOTRD_LIB}")
set_target_properties(${CMAKE_TARGET_IOTRD}               PROPERTIES COMPILE_FLAGS       "${CFG_ADDITIONAL_COMPILE_FLAGS}")
set_target_properties(${CMAKE_TARGET_IOTRD}               PROPERTIES LINK_FLAGS          "${CFG_ADDITIONAL_IOTRD_LIB_LINK_FLAGS}")
set_target_properties(${CMAKE_TARGET_IOTRD}               PROPERTIES LINKER_LANGUAGE     C)

#
# IOT-RD example executable
set_target_properties(${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}   PROPERTIES INCLUDE_DIRECTORIES "${CFG_INCLUDE_DIR_IOTRD_EXE}")
set_target_properties(${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}   PROPERTIES COMPILE_FLAGS       "${CFG_ADDITIONAL_EXE_COMPILE_FLAGS}")
set_target_properties(${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}   PROPERTIES LINK_FLAGS          "${CFG_ADDITIONAL_IOTRD_EXE_LINK_FLAGS}")
set_target_properties(${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}   PROPERTIES LINKER_LANGUAGE     C)
target_link_libraries(${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}   ${CMAKE_TARGET_IOTRD} m)

#
# More dependencies
# - Pre-Build steps
# - Other libraries
#

#
# Pre-build for IOT-RD-API example executable
add_dependencies(
    ${CMAKE_TARGET_IOTRD_EXAMPLE_EXE}
    ${CMAKE_TARGET_IOTRD}
)
