• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2019 - 2020 Alexander Grund
2# Distributed under the Boost Software License, Version 1.0.
3# (See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt)
4
5include(CheckCXXCompilerFlag)
6check_cxx_compiler_flag(-Wsuggest-override _BOOST_NOWIDE_SUGGEST_OVERRIDE_SUPPORTED)
7
8function(boost_nowide_add_test name)
9  cmake_parse_arguments(PARSE_ARGV 1 ARG "COMPILE_ONLY" "SRC" "LIBRARIES;DEFINITIONS;ARGS")
10  if(NOT ARG_SRC)
11    set(ARG_SRC ${name}.cpp)
12  endif()
13  set(name ${PROJECT_NAME}-${name})
14
15  add_executable(${name} ${ARG_SRC})
16  target_link_libraries(${name} PRIVATE Boost::nowide ${ARG_LIBRARIES})
17  boost_add_warnings(${name} pedantic ${Boost_NOWIDE_WERROR})
18  if(_BOOST_NOWIDE_SUGGEST_OVERRIDE_SUPPORTED)
19    target_compile_options(${name} PRIVATE -Wsuggest-override -Wno-error=suggest-override)
20  endif()
21  target_compile_definitions(${name} PRIVATE BOOST_ALL_NO_LIB ${ARG_DEFINITIONS})
22  if(NOT ARG_COMPILE_ONLY)
23    add_test(NAME ${name} COMMAND ${name} ${ARG_ARGS})
24  endif()
25endfunction()
26
27boost_nowide_add_test(test_codecvt)
28boost_nowide_add_test(test_convert)
29boost_nowide_add_test(test_env)
30boost_nowide_add_test(test_env_win SRC test_env.cpp DEFINITIONS BOOST_NOWIDE_TEST_INCLUDE_WINDOWS)
31boost_nowide_add_test(test_fstream)
32boost_nowide_add_test(test_fstream_cxx11)
33boost_nowide_add_test(test_iostream)
34if(MSVC AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.13)
35  set_target_properties(${PROJECT_NAME}-test_iostream PROPERTIES VS_DEBUGGER_COMMAND_ARGUMENTS -i)
36endif()
37boost_nowide_add_test(test_stackstring)
38boost_nowide_add_test(test_stat)
39boost_nowide_add_test(test_stdio)
40boost_nowide_add_test(test_system_n SRC test_system.cpp DEFINITIONS BOOST_NOWIDE_TEST_USE_NARROW=1)
41if(WIN32)
42  boost_nowide_add_test(test_system_w SRC test_system.cpp DEFINITIONS BOOST_NOWIDE_TEST_USE_NARROW=0)
43else()
44  boost_nowide_add_test(test_internal_fstream SRC test_fstream.cpp DEFINITIONS BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT=1)
45  boost_nowide_add_test(test_internal_fstream_cxx11 SRC test_fstream_cxx11.cpp DEFINITIONS BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT=1)
46endif()
47
48if(NOT BOOST_SUPERPROJECT_SOURCE_DIR)
49  # Default boost libs are static on windows and dynamic on linux
50  if(WIN32 AND NOT DEFINED Boost_USE_STATIC_LIBS)
51    set(Boost_USE_STATIC_LIBS ON)
52  endif()
53  find_package(Boost 1.56 REQUIRED COMPONENTS filesystem system)
54endif()
55boost_nowide_add_test(test_fs LIBRARIES Boost::filesystem)
56boost_nowide_add_test(benchmark_fstream COMPILE_ONLY DEFINITIONS BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT=1)
57