set(COMPONENT_NAME "FMU2_crane")
set(COMPONENT_MAIN_DIR "${DEMO_FMU_MAIN_DIR}")
set(COMPONENT_SOURCES craneFMU.h craneFMU.cpp)
set(COMPONENT_RESOURCES_DIR "")
if (ENABLE_MODULE_IRRLICHT)
  set(COMPONENT_CHRONO_DEPENDENCIES ChronoEngine ChronoEngine_irrlicht)
  if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
    set(COMPONENT_DLL_DEPENDENCIES "${CH_IRRLICHT_DLL}")
  else()
    set(COMPONENT_DLL_DEPENDENCIES "")
  endif()
else()
  set(COMPONENT_CHRONO_DEPENDENCIES ChronoEngine)
endif()

set(FMU_CS ON)

#--------------------------------------------------------------

# Set include paths, compiler & linker flags, and libraries
include_directories(${CH_INCLUDES})
set(COMPILER_FLAGS "${CH_CXX_FLAGS}")
set(LINKER_FLAGS "${CH_LINKERFLAG_EXE}")
list(APPEND LIBS "ChronoEngine")

include_directories(${FMU_TOOLS_DIR})

if(ENABLE_MODULE_IRRLICHT)
  include_directories(${CH_IRRLICHT_INCLUDES})
  set(COMPILER_FLAGS "${COMPILER_FLAGS} ${CH_IRRLICHT_CXX_FLAGS}")
  list(APPEND LIBS "ChronoEngine_irrlicht")
endif()

#==============================================================

message(STATUS "...add ${COMPONENT_NAME}")
message(STATUS "   FetchContent(fmu_tools)")

set(FMU_MODEL_IDENTIFIER ${COMPONENT_NAME})
set(USE_CUSTOM_TYPESPLATFORM OFF)
set(FMU_MAIN_DIRECTORY ${COMPONENT_MAIN_DIR})
set(FMU_RESOURCES_DIRECTORY ${COMPONENT_RESOURCES_DIR})
set(FMU_DEPENDENCIES ${COMPONENT_DLL_DEPENDENCIES})
set(FMU_MSG_PREFIX "   - ")

FetchContent_Declare(
    ${FMU_MODEL_IDENTIFIER}
    SOURCE_DIR ${FMU_TOOLS_DIR}/fmi2
)

FetchContent_MakeAvailable(${FMU_MODEL_IDENTIFIER})

string(TOUPPER ${FMU_MODEL_IDENTIFIER} FMU_MODEL_IDENTIFIER_UPPERCASE)
MARK_AS_ADVANCED(FETCHCONTENT_BASE_DIR)
MARK_AS_ADVANCED(FETCHCONTENT_FULLY_DISCONNECTED)
MARK_AS_ADVANCED(FETCHCONTENT_QUIET)
MARK_AS_ADVANCED(FETCHCONTENT_SOURCE_DIR_${FMU_MODEL_IDENTIFIER_UPPERCASE})
MARK_AS_ADVANCED(FETCHCONTENT_UPDATES_DISCONNECTED)
MARK_AS_ADVANCED(FETCHCONTENT_UPDATES_DISCONNECTED_${FMU_MODEL_IDENTIFIER_UPPERCASE})

#--------------------------------------------------------------

add_dependencies(${FMU_MODEL_IDENTIFIER} ${COMPONENT_CHRONO_DEPENDENCIES})

# add FMU target
target_sources(${FMU_MODEL_IDENTIFIER} PRIVATE ${COMPONENT_SOURCES})

set_target_properties(${FMU_MODEL_IDENTIFIER} PROPERTIES FOLDER demos COMPILE_FLAGS "${COMPILER_FLAGS}" LINK_FLAGS "${LINKER_FLAGS}")
target_link_libraries(${FMU_MODEL_IDENTIFIER} ${LIBS})  

#--------------------------------------------------------------

set(CRANE_FMU_MODEL_IDENTIFIER ${FMU_MODEL_IDENTIFIER} PARENT_SCOPE)
set(CRANE_FMU_DIRECTORY ${FMU_DIRECTORY} PARENT_SCOPE)
set(CRANE_FMU_FILENAME ${FMU_FILENAME} PARENT_SCOPE)
set(CRANE_FMU_RUNTIME_OUTPUT_DIRECTORY ${FMU_RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE)
