[cmake] Check the availability of `bzip2.pc'.

(CMakeLists.txt): Check the availability of `bzip2.pc'.

* If `bzip2.pc' is available, Requires.private should include
bzip2, but Libs.private should not include -lbz2.

* If `bzip2.pc' is unavailable, Requires.private cannot include
bzip2, but Libs.private should include -lbz2.

Fix #897.
This commit is contained in:
suzuki toshiya 2022-01-28 12:04:36 +09:00
parent fa226478b1
commit 35740aa6a9
1 changed files with 10 additions and 1 deletions

View File

@ -271,11 +271,16 @@ if (NOT FT_DISABLE_ZLIB)
endif () endif ()
if (NOT FT_DISABLE_BZIP2) if (NOT FT_DISABLE_BZIP2)
# Genuine BZip2 does not provide bzip2.pc, but some platforms have it.
# For better dependency in freetype2.pc, bzip2.pc is searched
# regardless of the availability of libbz2. If bzip2.pc is found,
# Requires.private is used instead of Libs.private.
if (FT_REQUIRE_BZIP2) if (FT_REQUIRE_BZIP2)
find_package(BZip2 REQUIRED) find_package(BZip2 REQUIRED)
else () else ()
find_package(BZip2) find_package(BZip2)
endif () endif ()
pkg_check_modules(PC_BZIP2 bzip2)
endif () endif ()
if (NOT FT_DISABLE_BROTLI) if (NOT FT_DISABLE_BROTLI)
@ -504,7 +509,11 @@ endif ()
if (BZIP2_FOUND) if (BZIP2_FOUND)
target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES}) target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES})
target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS
list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2") if (PC_BZIP2_FOUND)
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "bzip2")
else ()
list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2")
endif ()
endif () endif ()
if (PNG_FOUND) if (PNG_FOUND)
target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES}) target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES})