cmake_minimum_required (VERSION 3.17)

set(ADDITIONAL_CONFIG_FILE_DIR ${PROJECT_SOURCE_DIR}/Configuration_Files)
option(USE_ADDITIONAL_CONFIG_FILE_DIR "If ON, also search in ADDITIONAL_CONFIG_FILE_DIR for XML files (and not only in execution dir)")

if(USE_ADDITIONAL_CONFIG_FILE_DIR)
    if(NOT EXISTS ADDITIONAL_CONFIG_FILE_DIR)
        file(MAKE_DIRECTORY ${ADDITIONAL_CONFIG_FILE_DIR})
    endif()
    if(EXISTS ${ADDITIONAL_CONFIG_FILE_DIR}/syncAXISConfig.xml)
        set(BASE_PATH ${PROJECT_SOURCE_DIR})
        configure_file(${ADDITIONAL_CONFIG_FILE_DIR}/syncAXISConfig.xml ${ADDITIONAL_CONFIG_FILE_DIR}/syncAXISConfig.xml)
    else()
        message("   WARNING: No syncAXISConfig.xml found in ${CMAKE_CURRENT_SOURCE_DIR}/.\n\n")
    endif()
else()
    unset(ADDITIONAL_CONFIG_FILE_DIR)	
endif()

if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/include/IncludePath.h)
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/IncludePath.h.in ${CMAKE_CURRENT_SOURCE_DIR}/include/IncludePath.h)
endif()

set(INCS 
include/MainLoop.h
include/InputTypes.h
include/OperationTypesProcedures.h
include/Jobs.h
include/syncAXISControl.h
include/MarkingPatterns.h
include/DemoFunctions.h
include/ConfigFileSearch.h
include/IncludePath.h
)

set(SRCS
source/Main.cpp
source/MainLoop.cpp
source/InputTypes.cpp
source/OperationTypesProcedures.cpp
source/Jobs.cpp
source/syncAXISControl.cpp
source/MarkingPatterns.cpp
source/DemoFunctions.cpp
source/ConfigFileSearch.cpp
)

add_executable(Installation_Project ${SRCS} ${INCS})
target_include_directories(Installation_Project
                           PRIVATE ${syncAXIS_INCLUDE_DIR} include)
target_link_libraries(Installation_Project PRIVATE ${syncAXIS_LIBRARY})

foreach(file_i ${syncAXIS_DLL_FILES})
add_custom_command(TARGET Installation_Project POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy_if_different 
                ${file_i} $<TARGET_FILE_DIR:Installation_Project>)
endforeach()
