# Copyright 2021-2022 Alexander Grund
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt

function(boost_locale_add_example name)
  cmake_parse_arguments(PARSE_ARGV 1 ARG "COMPILE_ONLY" "SRC;WORKING_DIRECTORY" "ARGS")

  if(NOT ARG_SRC)
    set(ARG_SRC ${name}.cpp)
  endif()
  set(name ${PROJECT_NAME}-expl_${name})

  add_executable(${name} ${ARG_SRC})
  add_dependencies(tests ${name})
  target_link_libraries(${name} PRIVATE
    Boost::locale
    Boost::algorithm
  )

  if(ARG_WORKING_DIRECTORY)
    set_target_properties(${name} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${ARG_WORKING_DIRECTORY}")
  endif()

  if(NOT ARG_COMPILE_ONLY)
    add_test(NAME ${name} COMMAND ${name} ${ARG_ARGS})
    if(ARG_WORKING_DIRECTORY)
      set_tests_properties(${name} PROPERTIES WORKING_DIRECTORY "${ARG_WORKING_DIRECTORY}")
    endif()
  endif()
endfunction()

boost_locale_add_example(boundary)
boost_locale_add_example(calendar)
boost_locale_add_example(collate COMPILE_ONLY)
boost_locale_add_example(conversions)
boost_locale_add_example(hello)
boost_locale_add_example(wboundary)
boost_locale_add_example(wconversions)
boost_locale_add_example(whello)

boost_locale_add_example(perf_collate SRC performance/perf_collate.cpp COMPILE_ONLY)
boost_locale_add_example(perf_convert SRC performance/perf_convert.cpp COMPILE_ONLY)
boost_locale_add_example(perf_format SRC performance/perf_format.cpp COMPILE_ONLY)