diff options
Diffstat (limited to 'compat/zlib/contrib/iostream3/CMakeLists.txt')
| -rw-r--r-- | compat/zlib/contrib/iostream3/CMakeLists.txt | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/compat/zlib/contrib/iostream3/CMakeLists.txt b/compat/zlib/contrib/iostream3/CMakeLists.txt new file mode 100644 index 0000000..e2ac480 --- /dev/null +++ b/compat/zlib/contrib/iostream3/CMakeLists.txt @@ -0,0 +1,200 @@ +cmake_minimum_required(VERSION 3.12...3.31) + +project( + iostreamV3 + VERSION 1.0.0 + LANGUAGES CXX + DESCRIPTION "A library for using C++ IOStreams with zlib V3" + HOMEPAGE_URL "https://www.zlib.net") + +option(ZLIB_IOSTREAM3_BUILD_SHARED "Enable building blast shared library" ON) +option(ZLIB_IOSTREAM3_BUILD_STATIC "Enable building blast static library" ON) +option(ZLIB_IOSTREAM3_BUILD_TESTING "Enable building tests for blast" ON) +option(ZLIB_IOSTREAM3_INSTALL "Enable installation of iostream" ON) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +if(NOT DEFINED ZLIB_BUILD_IOSTREAM3) + if(ZLIB_IOSTREAM3_BUILD_SHARED) + list(APPEND REQUIRED_COMPONENTS "shared") + endif(ZLIB_IOSTREAM3_BUILD_SHARED) + + if(ZLIB_IOSTREAM3_BUILD_STATIC) + list(APPEND REQUIRED_COMPONENTS "static") + endif(ZLIB_IOSTREAM3_BUILD_STATIC) + + find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG) +endif(NOT DEFINED ZLIB_BUILD_IOSTREAM3) + +if(WIN32 OR CYGWIN) + set(zlibIOStream3_static_suffix "s") + set(CMAKE_DEBUG_POSTFIX "d") +endif(WIN32 OR CYGWIN) + + +function(iostreamv3_findTestEnv testName) + set(testEnv "PATH=") + + if(MSVC OR MINGW) + set(separator "\\\;") + else() + set(separator ":") + endif() + + string(APPEND testEnv "$<TARGET_FILE_DIR:zlib_iostream3_iostreamv3>${separator}") + string(APPEND testEnv "$<TARGET_FILE_DIR:ZLIB::ZLIB>${separator}") + string(APPEND testEnv "$ENV{PATH}") + + set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") +endfunction(iostreamv3_findTestEnv testName) + +if(ZLIB_IOSTREAM3_BUILD_SHARED) + add_library(zlib_iostream3_iostreamv3 SHARED + zfstream.cc + zfstream.h) + + add_library(IOSTREAMV3::IOSTREAMV3 ALIAS zlib_iostream3_iostreamv3) + + if(NOT CYGWIN) + set_target_properties(zlib_iostream3_iostreamv3 + PROPERTIES + SOVERSION ${iostreamV3_VERSION_MAJOR} + VERSION ${iostreamV3_VERSION}) + endif(NOT CYGWIN) + + set_target_properties(zlib_iostream3_iostreamv3 + PROPERTIES + EXPORT_NAME IOSTREAMV3 + OUTPUT_NAME iostream3) + + target_link_libraries(zlib_iostream3_iostreamv3 + PUBLIC ZLIB::ZLIB) + + if(ZLIB_IOSTREAM3_BUILD_TESTING) + enable_testing() + + add_executable(zlib_iostream3_test test.cc zfstream.h) + + target_link_libraries(zlib_iostream3_test + PRIVATE zlib_iostream3_iostreamv3) + + add_test(NAME zlib_iostream3_test COMMAND zlib_iostream3_test) + + set_tests_properties(zlib_iostream3_test + PROPERTIES + FIXTURES_REQUIRED zlib_iostream3_cleanup) + + if(MSVC + OR MSYS + OR MINGW + OR CYGWIN) + iostreamv3_findtestenv(zlib_iostream3_test) + endif( + MSVC + OR MSYS + OR MINGW + OR CYGWIN) + endif(ZLIB_IOSTREAM3_BUILD_TESTING) +endif(ZLIB_IOSTREAM3_BUILD_SHARED) + +if(ZLIB_IOSTREAM3_BUILD_STATIC) + add_library(zlib_iostream3_iostreamv3Static STATIC + zfstream.cc + zfstream.h) + + add_library(IOSTREAMV3::IOSTREAMV3STATIC + ALIAS zlib_iostream3_iostreamv3Static) + + target_link_libraries(zlib_iostream3_iostreamv3Static + PUBLIC ZLIB::ZLIBSTATIC) + + set_target_properties(zlib_iostream3_iostreamv3Static + PROPERTIES + EXPORT_NAME IOSTREAMV3STATIC + OUTPUT_NAME iostream3${zlib_IOStream3_static_suffix}) + + if(ZLIB_IOSTREAM3_BUILD_TESTING) + enable_testing() + + add_executable(zlib_iostream3_testStatic test.cc zfstream.h) + + target_link_libraries(zlib_iostream3_testStatic + PRIVATE zlib_iostream3_iostreamv3Static) + + add_test(NAME zlib_iostream3_testStatic + COMMAND zlib_iostream3_testStatic) + + set_tests_properties(zlib_iostream3_testStatic + PROPERTIES + FIXTURES_REQUIRED zlib_iostream3_cleanup) + endif(ZLIB_IOSTREAM3_BUILD_TESTING) +endif(ZLIB_IOSTREAM3_BUILD_STATIC) + +if(ZLIB_IOSTREAM3_BUILD_TESTING) + add_test(NAME zlib_iostream3_cleanup COMMAND ${CMAKE_COMMAND} -E rm + ${CMAKE_CURRENT_BINARY_DIR}/test1.txt.gz + ${CMAKE_CURRENT_BINARY_DIR}/test2.txt.gz) + + set_tests_properties(zlib_iostream3_cleanup + PROPERTIES + FIXTURES_CLEANUP zlib_iostream3_cleanup) + + add_subdirectory(test) +endif(ZLIB_IOSTREAM3_BUILD_TESTING) + +if(ZLIB_IOSTREAM3_INSTALL) + if(ZLIB_IOSTREAM3_BUILD_SHARED) + install( + TARGETS zlib_iostream3_iostreamv3 + COMPONENT Runtime + EXPORT zlibiostream3SharedExport + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install( + EXPORT zlibiostream3SharedExport + FILE iostreamv3-shared.cmake + NAMESPACE IOSTREAMV3:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + + if(MSVC) + install( + FILES $<TARGET_PDB_FILE:zlib_iostream3_iostreamv3> + COMPONENT Development + DESTINATION ${CMAKE_INSTALL_BINDIR} + CONFIGURATIONS Debug OR RelWithDebInfo + OPTIONAL) + endif(MSVC) + endif(ZLIB_IOSTREAM3_BUILD_SHARED) + + if(ZLIB_IOSTREAM3_BUILD_STATIC) + install( + TARGETS zlib_iostream3_iostreamv3Static + COMPONENT Development + EXPORT iostream3StaticExport + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install( + EXPORT iostream3StaticExport + FILE iostreamv3-static.cmake + NAMESPACE IOSTREAMV3:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + endif(ZLIB_IOSTREAM3_BUILD_STATIC) + + configure_package_config_file( + ${iostreamV3_SOURCE_DIR}/iostream3Config.cmake.in + ${iostreamV3_BINARY_DIR}/iostreamv3Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + + write_basic_package_version_file( + "${iostreamV3_BINARY_DIR}/iostreamv3ConfigVersion.cmake" + VERSION "${iostream3_VERSION}" + COMPATIBILITY AnyNewerVersion) + + install(FILES ${iostreamV3_BINARY_DIR}/iostreamv3Config.cmake + ${iostreamV3_BINARY_DIR}/iostreamv3ConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/iostreamv3) + install( + FILES zfstream.h + COMPONENT Development + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +endif(ZLIB_IOSTREAM3_INSTALL) |
