include(helpers)

tristate(IGRAPH_ENABLE_LTO "Enable link-time optimization" OFF)

include(CheckIPOSupported)

if(IGRAPH_ENABLE_LTO)
  # this matches both ON and AUTO
  check_ipo_supported(RESULT IPO_SUPPORTED OUTPUT IPO_NOT_SUPPORTED_REASON)
  if(IGRAPH_ENABLE_LTO STREQUAL "AUTO")
    # autodetection
    set(IGRAPH_ENABLE_LTO ${IPO_SUPPORTED})
    if(IPO_SUPPORTED)
      set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
    endif()
  elseif(IPO_SUPPORTED)
    # user wanted LTO and the compiler supports it
    set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
  else()
    # user wanted LTO and the compiler does not support it
    message(FATAL_ERROR "Link-time optimization not supported on this compiler")
  endif()
endif()
