Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake:add pkgconfig usage if find_package failed #182

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 43 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,53 @@ add_library(boost_iostreams
src/mapped_file.cpp
)

function(boost_iostreams_option name description package version found target) # sources...
function(boost_iostreams_option name description package version found target pkgconfig_name pkgconfig_target) # sources...

find_package(${package} ${version} QUIET)

if(${found} AND TARGET ${target})
if(${name})

option(${name} ${description} ON)
find_package(${package} ${version} QUIET)

if(${found} AND TARGET ${target})

option(${name} ${description} ON)
target_sources(boost_iostreams PRIVATE ${ARGN})
target_link_libraries(boost_iostreams PRIVATE ${target})

else()

find_package(PkgConfig REQUIRED)
pkg_check_modules(${pkgconfig_name} GLOBAL IMPORTED_TARGET REQUIRED ${pkgconfig_name})

if(TARGET ${pkgconfig_target})

target_sources(boost_iostreams PRIVATE ${ARGN})
target_link_libraries(boost_iostreams PRIVATE ${pkgconfig_target})

else()

message(FATAL_ERROR "Option ${boost_iostreams_option} was turned on, but no .cmake config or .pc files related to corresponding library wasn't found. Are those libraries installed?")

endif()
endif()
elseif(DEFINED ${name} AND NOT ${name})

option(${name} ${description} OFF)

else()

option(${name} ${description} OFF)
find_package(${package} ${version} QUIET)

if(${found} AND TARGET ${target})

endif()
option(${name} ${description} ON)
target_sources(boost_iostreams PRIVATE ${ARGN})
target_link_libraries(boost_iostreams PRIVATE ${target})

if(${name})
else()

option(${name} ${description} OFF)

find_package(${package} ${version} REQUIRED)
target_sources(boost_iostreams PRIVATE ${ARGN})
target_link_libraries(boost_iostreams PRIVATE ${target})
endif()

endif()

Expand All @@ -39,10 +67,10 @@ endfunction()
set(BOOST_IOSTREAMS_ZSTD_TARGET "zstd::libzstd_shared" CACHE STRING "Target name for Zstd (zstd::libzstd_shared, zstd::libzstd_static)")
set_property(CACHE BOOST_IOSTREAMS_ZSTD_TARGET PROPERTY STRINGS "zstd::libzstd_shared" "zstd::libzstd_static")

boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_ZLIB "Boost.Iostreams: Enable ZLIB support" ZLIB "" ZLIB_FOUND ZLIB::ZLIB src/zlib.cpp src/gzip.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_BZIP2 "Boost.Iostreams: Enable BZip2 support" BZip2 "" BZIP2_FOUND BZip2::BZip2 src/bzip2.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_LZMA "Boost.Iostreams: Enable LZMA support" LibLZMA "" LIBLZMA_FOUND LibLZMA::LibLZMA src/lzma.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_ZSTD "Boost.Iostreams: Enable Zstd support" zstd "1.0" zstd_FOUND ${BOOST_IOSTREAMS_ZSTD_TARGET} src/zstd.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_ZLIB "Boost.Iostreams: Enable ZLIB support" ZLIB "" ZLIB_FOUND ZLIB::ZLIB zlib PkgConfig::zlib src/zlib.cpp src/gzip.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_BZIP2 "Boost.Iostreams: Enable BZip2 support" BZip2 "" BZIP2_FOUND BZip2::BZip2 bzip2 PkgConfig::bzip2 src/bzip2.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_LZMA "Boost.Iostreams: Enable LZMA support" LibLZMA "" LIBLZMA_FOUND LibLZMA::LibLZMA liblzma PkgConfig::liblzma src/lzma.cpp)
boost_iostreams_option(BOOST_IOSTREAMS_ENABLE_ZSTD "Boost.Iostreams: Enable Zstd support" zstd "1.0" zstd_FOUND ${BOOST_IOSTREAMS_ZSTD_TARGET} libzstd PkgConfig::libzstd src/zstd.cpp)

include(CheckCXXSourceCompiles)

Expand Down