Fix test for libstd++/Windows NativeFileStream configuration
This commit is contained in:
parent
e8f5c5c948
commit
c4128799bc
|
@ -121,6 +121,7 @@ option(USE_NATIVE_FILE_BUFFER "enables use of native file buffer, affects ABI" O
|
||||||
option(FORCE_BOOST_IOSTREAMS_FOR_NATIVE_FILE_BUFFER "forces use of Boost.Iostreams for native file buffer" OFF)
|
option(FORCE_BOOST_IOSTREAMS_FOR_NATIVE_FILE_BUFFER "forces use of Boost.Iostreams for native file buffer" OFF)
|
||||||
if (USE_NATIVE_FILE_BUFFER)
|
if (USE_NATIVE_FILE_BUFFER)
|
||||||
list(APPEND META_PUBLIC_COMPILE_DEFINITIONS ${META_PROJECT_VARNAME}_USE_NATIVE_FILE_BUFFER)
|
list(APPEND META_PUBLIC_COMPILE_DEFINITIONS ${META_PROJECT_VARNAME}_USE_NATIVE_FILE_BUFFER)
|
||||||
|
set(NATIVE_FILE_STREAM_IMPL_FILES io/nativefilestream.cpp tests/iotests.cpp)
|
||||||
|
|
||||||
# check whether __gnu_cxx::stdio_filebuf is available
|
# check whether __gnu_cxx::stdio_filebuf is available
|
||||||
try_compile(GNU_CXX_STDIO_FILEBUF_AVAILABLE
|
try_compile(GNU_CXX_STDIO_FILEBUF_AVAILABLE
|
||||||
|
@ -129,19 +130,24 @@ if (USE_NATIVE_FILE_BUFFER)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/feature_detection/stdio_filebuf.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/feature_detection/stdio_filebuf.cpp
|
||||||
OUTPUT_VARIABLE GNU_CXX_STDIO_FILEBUF_CHECK_LOG)
|
OUTPUT_VARIABLE GNU_CXX_STDIO_FILEBUF_CHECK_LOG)
|
||||||
|
|
||||||
|
|
||||||
# use __gnu_cxx::stdio_filebuf if available or fallback to boost::iostreams::stream_buffer
|
# use __gnu_cxx::stdio_filebuf if available or fallback to boost::iostreams::stream_buffer
|
||||||
if (GNU_CXX_STDIO_FILEBUF_AVAILABLE AND NOT FORCE_BOOST_IOSTREAMS_FOR_NATIVE_FILE_BUFFER)
|
if (GNU_CXX_STDIO_FILEBUF_AVAILABLE AND NOT FORCE_BOOST_IOSTREAMS_FOR_NATIVE_FILE_BUFFER)
|
||||||
message(STATUS "Using __gnu_cxx::stdio_filebuf for NativeFileStream")
|
message(STATUS "Using __gnu_cxx::stdio_filebuf for NativeFileStream")
|
||||||
set_property(SOURCE io/nativefilestream.cpp
|
foreach (NATIVE_FILE_STREAM_IMPL_FILE ${NATIVE_FILE_STREAM_IMPL_FILES})
|
||||||
|
set_property(SOURCE ${NATIVE_FILE_STREAM_IMPL_FILE}
|
||||||
APPEND
|
APPEND
|
||||||
PROPERTY COMPILE_DEFINITIONS ${META_PROJECT_VARNAME}_USE_GNU_CXX_STDIO_FILEBUF)
|
PROPERTY COMPILE_DEFINITIONS ${META_PROJECT_VARNAME}_USE_GNU_CXX_STDIO_FILEBUF)
|
||||||
|
endforeach ()
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "Using boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_sink> for NativeFileStream")
|
message(STATUS "Using boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_sink> for NativeFileStream")
|
||||||
find_package(Boost REQUIRED COMPONENTS iostreams)
|
find_package(Boost REQUIRED COMPONENTS iostreams)
|
||||||
use_target(TARGET_NAME Boost::iostreams)
|
use_target(TARGET_NAME Boost::iostreams)
|
||||||
set_property(SOURCE io/nativefilestream.cpp
|
foreach (NATIVE_FILE_STREAM_IMPL_FILE ${NATIVE_FILE_STREAM_IMPL_FILES})
|
||||||
|
set_property(SOURCE ${NATIVE_FILE_STREAM_IMPL_FILE}
|
||||||
APPEND
|
APPEND
|
||||||
PROPERTY COMPILE_DEFINITIONS ${META_PROJECT_VARNAME}_USE_BOOST_IOSTREAMS)
|
PROPERTY COMPILE_DEFINITIONS ${META_PROJECT_VARNAME}_USE_BOOST_IOSTREAMS)
|
||||||
|
endforeach ()
|
||||||
endif ()
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "Using std::fstream for NativeFileStream")
|
message(STATUS "Using std::fstream for NativeFileStream")
|
||||||
|
|
|
@ -448,7 +448,11 @@ void IoTests::testNativeFileStream()
|
||||||
CPPUNIT_FAIL("expected exception");
|
CPPUNIT_FAIL("expected exception");
|
||||||
} catch (const std::ios_base::failure &failure) {
|
} catch (const std::ios_base::failure &failure) {
|
||||||
#ifdef PLATFORM_WINDOWS
|
#ifdef PLATFORM_WINDOWS
|
||||||
|
#ifdef CPP_UTILITIES_USE_GNU_CXX_STDIO_FILEBUF
|
||||||
|
CPPUNIT_ASSERT_EQUAL("_wopen failed: iostream error"s, string(failure.what()));
|
||||||
|
#else // CPP_UTILITIES_USE_BOOST_IOSTREAMS
|
||||||
CPPUNIT_ASSERT_EQUAL("CreateFileW failed: iostream error"s, string(failure.what()));
|
CPPUNIT_ASSERT_EQUAL("CreateFileW failed: iostream error"s, string(failure.what()));
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
CPPUNIT_ASSERT_EQUAL("open failed: iostream error"s, string(failure.what()));
|
CPPUNIT_ASSERT_EQUAL("open failed: iostream error"s, string(failure.what()));
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue