cmake_minimum_required(VERSION 3.12...3.31) project( blast VERSION 1.3.0 LANGUAGES C DESCRIPTION "A library for creating zipfiles based in zlib" HOMEPAGE_URL "https://www.zlib.net") option(ZLIB_BLAST_BUILD_SHARED "Enable building blast shared library" ON) option(ZLIB_BLAST_BUILD_STATIC "Enable building blast static library" ON) option(ZLIB_BLAST_BUILD_TESTING "Enable building tests for blast" ON) option(ZLIB_BLAST_INSTALL "Enable installation of blast" ON) include(GNUInstallDirs) include(CMakePackageConfigHelpers) if(WIN32 OR CYGWIN) set(zlibblast_static_suffix "s") set(CMAKE_DEBUG_POSTFIX "d") set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) endif(WIN32 OR CYGWIN) function(blast_findTestEnv testName) set(testEnv "PATH=") if(MSVC OR MINGW) set(separator "\\\;") else() set(separator ":") endif() string(APPEND testEnv "$${separator}") string(APPEND testEnv "$ENV{PATH}") set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}") endfunction(blast_findTestEnv testName) if(ZLIB_BLAST_BUILD_SHARED) add_library(zlib_blast_blast SHARED blast.c blast.h) add_library(BLAST::BLAST ALIAS zlib_blast_blast) if(NOT CYGWIN) set_target_properties(zlib_blast_blast PROPERTIES SOVERSION ${blast_VERSION_MAJOR} VERSION ${blast_VERSION}) endif(NOT CYGWIN) set_target_properties(zlib_blast_blast PROPERTIES EXPORT_NAME BLAST OUTPUT_NAME blast) if(ZLIB_BLAST_BUILD_TESTING) enable_testing() add_executable(zlib_blast_blast-test blast-test.c) target_link_libraries(zlib_blast_blast-test PRIVATE zlib_blast_blast) add_test(NAME zlib_blast_blast-test COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") if(MSVC OR MSYS OR MINGW OR CYGWIN) blast_findtestenv(zlib_blast_blast-test) endif( MSVC OR MSYS OR MINGW OR CYGWIN) endif(ZLIB_BLAST_BUILD_TESTING) endif(ZLIB_BLAST_BUILD_SHARED) if(ZLIB_BLAST_BUILD_STATIC) add_library(zlib_blast_blastStatic STATIC blast.c blast.h) add_library(BLAST::BLASTSTATIC ALIAS zlib_blast_blastStatic) set_target_properties(zlib_blast_blastStatic PROPERTIES EXPORT_NAME BLASTSTATIC OUTPUT_NAME blast${zlibblast_static_suffix}) if(ZLIB_BLAST_BUILD_TESTING) enable_testing() add_executable(zlib_blast_testStatic blast-test.c) target_link_libraries(zlib_blast_testStatic PRIVATE zlib_blast_blastStatic) add_test(NAME zlib_blast_testStatic COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake "$" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}") endif(ZLIB_BLAST_BUILD_TESTING) endif(ZLIB_BLAST_BUILD_STATIC) if(ZLIB_BLAST_BUILD_TESTING) add_subdirectory(test) endif(ZLIB_BLAST_BUILD_TESTING) if(ZLIB_BLAST_INSTALL) if(ZLIB_BLAST_BUILD_SHARED) install( TARGETS zlib_blast_blast COMPONENT Runtime EXPORT zlibBlastSharedExport RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( EXPORT zlibBlastSharedExport FILE blast-shared.cmake NAMESPACE BLAST:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) if(MSVC) install( FILES $ COMPONENT Development DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS Debug OR RelWithDebInfo OPTIONAL) endif(MSVC) endif(ZLIB_BLAST_BUILD_SHARED) if(ZLIB_BLAST_BUILD_STATIC) install( TARGETS zlib_blast_blastStatic COMPONENT Development EXPORT zlibBlastStaticExport ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install( EXPORT zlibBlastStaticExport FILE blast-static.cmake NAMESPACE BLAST:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) endif(ZLIB_BLAST_BUILD_STATIC) configure_package_config_file( ${blast_SOURCE_DIR}/blastConfig.cmake.in ${blast_BINARY_DIR}/blastConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) write_basic_package_version_file( "${blast_BINARY_DIR}/blastConfigVersion.cmake" VERSION "${blast_VERSION}" COMPATIBILITY AnyNewerVersion) install(FILES ${blast_BINARY_DIR}/blastConfig.cmake ${blast_BINARY_DIR}/blastConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/blast) install( FILES blast.h COMPONENT Development DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") endif(ZLIB_BLAST_INSTALL)