cmake_minimum_required(VERSION 3.03)

project(generic VERSION 1.0)

add_compile_options(
    -Wall
    -Wformat=2
    -O0
    -g
    -Wuninitialized
    -Wno-unused-function
)

# Check if the required environment variables MIDASSYS is available
if (NOT DEFINED ENV{MIDASSYS})
   message(SEND_ERROR "MIDASSYS environment variable not defined.")
endif()

set(CMAKE_CXX_STANDARD 17)
set(MIDASSYS $ENV{MIDASSYS})

find_package(Midas REQUIRED)

################################################################################
## Device
################################################################################

add_library(
    itcPressureOptimizer
    src/device/itc_pressure_optimizer.cpp
    src/device/handlers/DemandHandler.cpp
    src/device/handlers/InputHandler.cpp
    src/device/handlers/SettingsHandler.cpp
    src/device/handlers/PressureCalculator.cpp
    src/device/handlers/FeedbackHandler.cpp
    src/device/handlers/OutputHandler.cpp
)

set_property(
    TARGET
        itcPressureOptimizer
    PROPERTY
        CXX_STANDARD 17
)

target_link_libraries(
    itcPressureOptimizer
    PRIVATE
        midas::mfe
        ${LIBS}
)

target_include_directories(
    itcPressureOptimizer
    PUBLIC
        ${CMAKE_CURRENT_SOURCE_DIR}
)

################################################################################
## Frontend
################################################################################
if(${BUILD_FRONTEND})

add_executable(itcPressureOptimizerScfe
    src/frontend/itc_pressure_optimizer_scfe.cpp    
)

set_property(
  TARGET
    itcPressureOptimizerScfe
  PROPERTY
    CXX_STANDARD 17
)

target_include_directories(
  itcPressureOptimizerScfe 
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

target_link_libraries(
  itcPressureOptimizerScfe
  PRIVATE
    itcPressureOptimizer  
    midas::mfe
    ${LIBS}
)

# Install the executable
install(
  TARGETS itcPressureOptimizerScfe
  RUNTIME DESTINATION bin
)
endif()

