include(RunCMake)

# FASTBuild generator does Unity build natively
# and has its own tests for it in "RunCMake/FASTBuild" folder.
if(RunCMake_GENERATOR STREQUAL "FASTBuild")
  return()
endif()

function(run_build name)
  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}-build)
  run_cmake(${name})
  set(RunCMake_TEST_NO_CLEAN 1)
  run_cmake_command(${name}-build ${CMAKE_COMMAND} --build . --config Debug)
endfunction()

run_cmake(unitybuild_c)
run_cmake(unitybuild_c_absolute_path)
run_cmake(unitybuild_c_relocatable_path)
run_cmake(unitybuild_c_batch)
run_cmake(unitybuild_c_group)
run_cmake(unitybuild_cxx)
run_cmake(unitybuild_cxx_absolute_path)
run_cmake(unitybuild_cxx_relocatable_path)
run_cmake(unitybuild_cxx_group)
run_cmake(unitybuild_c_and_cxx_absolute_path)
run_cmake(unitybuild_c_and_cxx_relocatable_path)
run_cmake(unitybuild_c_and_cxx)
run_cmake(unitybuild_c_and_cxx_filename_prefix)
run_cmake(unitybuild_c_and_cxx_group)
if(CMake_TEST_OBJC)
  run_cmake(unitybuild_objc)
  run_cmake(unitybuild_objc_group)
  run_cmake(unitybuild_objcxx)
  run_cmake(unitybuild_objcxx_group)
  run_cmake(unitybuild_c_and_cxx_and_objc_and_objcxx)
endif()
if(CMake_TEST_CUDA)
  run_cmake(unitybuild_cuda)
  run_cmake(unitybuild_cuda_group)
  run_cmake(unitybuild_cxx_and_cuda)
endif()
run_cmake(unitybuild_batchsize)
run_cmake(unitybuild_default_batchsize)
run_cmake(unitybuild_skip)
run_cmake(unitybuild_code_before_and_after_include)
run_cmake(unitybuild_c_no_unity_build)
run_cmake(unitybuild_c_no_unity_build_group)
run_cmake(unitybuild_order)
run_cmake(unitybuild_invalid_mode)
run_build(unitybuild_anon_ns)
run_build(unitybuild_anon_ns_no_unity_build)
run_build(unitybuild_anon_ns_group_mode)
run_cmake(unitybuild_relocatable_locations)

function(run_per_config name)
  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}-build)
  run_cmake(${name})
  set(RunCMake_TEST_NO_CLEAN 1)
  if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
    run_cmake_command(${name}-build-debug ${CMAKE_COMMAND} --build . --config Debug)
    run_cmake_command(${name}-build-release ${CMAKE_COMMAND} --build . --config Release)
  else()
    run_cmake_command(${name}-build ${CMAKE_COMMAND} --build .)
  endif()
endfunction()

if(NOT RunCMake_GENERATOR STREQUAL "Xcode")
  run_per_config(per_config_c)
endif()

function(run_test name)
  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}-build)
  run_cmake(${name})
  set(RunCMake_TEST_NO_CLEAN 1)
  run_cmake_command(${name}-build ${CMAKE_COMMAND} --build . --config Debug)
  run_cmake_command(${name}-test ${CMAKE_CTEST_COMMAND} -C Debug)
endfunction()

run_test(unitybuild_runtest)
run_test(unitybuild_object_library)

if (RunCMake_GENERATOR MATCHES "(Ninja|Makefiles|Visual Studio)")
  run_build(unitybuild_cxx_short)
endif ()
