project (mcu_tmf8805)

# create the project executable for running on the target
add_executable (${PROJECT_NAME} main.c)

set (TMF8805_LIB "tmf8805_lib" CACHE INTERNAL "")

# Configure header for source-visible version info
configure_file (
    "${PROJECT_SOURCE_DIR}/mcu_tmf8805_config.h.in"
    "${PROJECT_BINARY_DIR}/generated/mcu_tmf8805_config.h"
  )

# include paths
include_directories ("${PROJECT_BINARY_DIR}/generated")
include_directories ("${PROJECT_SOURCE_DIR}/../inc")

# generate binary image to build into target
if (BUILTIN_FW)
    add_definitions (-D_HAS_BUILTIN_FW)
    find_program(SREC_EXE srec_cat)
    if (NOT ${SREC_EXE_FOUND})
        message(FATAL_ERROR "'srec_cat' utility not found!")
    endif()
    set (SREC_CMD ${SREC_EXE} ${FW_PATH} -intel @${SREC_CFG})
    set (TOF_BIN_IMAGE_SOURCES
        "${PROJECT_BINARY_DIR}/generated/tof_bin_image.c"
        "${PROJECT_BINARY_DIR}/generated/tof_bin_image.h"
    )

    add_custom_command (OUTPUT ${TOF_BIN_IMAGE_SOURCES}
                        COMMAND ${SREC_CMD}
                        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/generated
                        COMMENT "Generate binary image source files"
                        VERBATIM
    )
    add_custom_target (tof_builtin_fw ALL DEPENDS ${TOF_BIN_IMAGE_SOURCES})
    # create the project executable for running on the target
    add_dependencies (${PROJECT_NAME} tof_builtin_fw)
    target_sources (${PROJECT_NAME} PUBLIC ${TOF_BIN_IMAGE_SOURCES})
endif()

file (GLOB SOURCES "${PROJECT_SOURCE_DIR}/*.c")
list (REMOVE_ITEM SOURCES "${PROJECT_SOURCE_DIR}/main.c")

# create the driver archive
add_library (${TMF8805_LIB} STATIC ${SOURCES})

# link in realtime package for clock_gettime()
target_link_libraries (${PROJECT_NAME} ${TMF8805_LIB} ${RT_LIB})

#custom target for generating doxygen documentation
string (REPLACE ";" " " DOC_SOURCES "${SOURCES}")
find_package (Doxygen)
if (DOXYGEN_FOUND)
    set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/../docs/Doxyfile.in)
    set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
    configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
    add_custom_target (docs ALL
        COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        COMMENT "Generate Doxygen docs for tmf8805 mcu driver"
        VERBATIM)
    set_target_properties (docs PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
else(DOXYGEN_FOUND)
    message ("Doxygen is required to generate documentation")
endif()
