# Copyright 2018, 2019 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt

include(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)

if(HAVE_BOOST_TEST)

    enable_testing()

    if(BOOST_CHARCONV_ENABLE_CUDA)

        message(STATUS "Building Boost.charconv with CUDA")

        find_package(CUDA REQUIRED)
        enable_language(CUDA)
        set(CMAKE_CUDA_EXTENSIONS OFF)

        boost_test_jamfile(FILE cuda_jamfile LINK_LIBRARIES Boost::charconv Boost::core Boost::assert ${CUDA_LIBRARIES} COMPILE_DEFINITIONS BOOST_CHARCONV_ENABLE_CUDA=1 INCLUDE_DIRECTORIES ${CUDA_INCLUDE_DIRS} )

    elseif(BOOST_CHARCONV_ENABLE_SYCL)

        message(STATUS "Building Boost.charconv with SYCL")

        set(CMAKE_CXX_COMPILER "icpx")
        set(CMAKE_C_COMPILER "icx")

        # -fsycl must be on the link line too (it bundles the device image); COMPILE_OPTIONS
        # only reaches the compile step, so add it to the linker flags as well.
        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsycl")

        boost_test_jamfile(FILE sycl_jamfile LINK_LIBRARIES Boost::charconv Boost::core Boost::assert sycl COMPILE_DEFINITIONS BOOST_CHARCONV_ENABLE_SYCL=1 COMPILE_OPTIONS -fsycl )

    else()

        # https://crascit.com/2015/03/28/enabling-cxx11-in-cmake/
        set(CMAKE_CXX_EXTENSIONS OFF)
        boost_test_jamfile(FILE Jamfile LINK_LIBRARIES Boost::charconv Boost::core Boost::assert)

    endif()

endif()
