200 lines
6.4 KiB
CMake
200 lines
6.4 KiB
CMake
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)
|