# Generated by `boostdep --cmake charconv`
# Copyright 2020, 2021 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt

cmake_minimum_required(VERSION 3.8...3.20)

project(boost_charconv VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)

add_library(boost_charconv
  src/from_chars.cpp
  src/to_chars.cpp
)

add_library(Boost::charconv ALIAS boost_charconv)

target_include_directories(boost_charconv PUBLIC include)


# find_library for quadmath does not always work so attempt
# to compile the trivial test case we use with B2
include(CheckCXXSourceRuns)
set(BOOST_CHARCONV_QUADMATH_TEST_SOURCE
"
#include <quadmath.h>
int main()
{
    __float128 f = -2.0Q;
    f = fabsq(f);

    return 0;
}
")

set(CMAKE_REQUIRED_LIBRARIES "quadmath")
check_cxx_source_runs("${BOOST_CHARCONV_QUADMATH_TEST_SOURCE}" BOOST_CHARCONV_QUADMATH_FOUND)
set(CMAKE_REQUIRED_LIBRARIES "")

target_link_libraries(boost_charconv
  PUBLIC
    Boost::config
    Boost::assert
    Boost::core
)

if(NOT BOOST_CHARCONV_QUADMATH_FOUND)
  message(STATUS "Boost.Charconv: quadmath support OFF")
  target_compile_definitions(boost_charconv PUBLIC BOOST_CHARCONV_NO_QUADMATH)
else()
  message(STATUS "Boost.Charconv: quadmath support ON")
  target_compile_definitions(boost_charconv PUBLIC BOOST_CHARCONV_HAS_QUADMATH)
  target_link_libraries(boost_charconv PUBLIC quadmath)
endif()

target_compile_features(boost_charconv PUBLIC cxx_std_11)

target_compile_definitions(boost_charconv
  PUBLIC BOOST_CHARCONV_NO_LIB
  PRIVATE BOOST_CHARCONV_SOURCE
)

if(BUILD_SHARED_LIBS)
  target_compile_definitions(boost_charconv PUBLIC BOOST_CHARCONV_DYN_LINK)
else()
  target_compile_definitions(boost_charconv PUBLIC BOOST_CHARCONV_STATIC_LINK)
endif()

if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
  
  add_subdirectory(test)

endif()
