Skip to content

Commit

Permalink
ci: use target properties instead of variables for flags, dirs, sourc…
Browse files Browse the repository at this point in the history
…es, and link libraries (#1778)
  • Loading branch information
fdintino authored Dec 4, 2023
1 parent 887ab8c commit bccbcc0
Show file tree
Hide file tree
Showing 24 changed files with 631 additions and 457 deletions.
1 change: 1 addition & 0 deletions .github/workflows/ci-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ jobs:
build\ext\libpng\libpng16_static.lib
build\ext\zlib\zlibstatic.lib
build\avif.lib
ws2_32.lib ntdll.lib userenv.lib bcrypt.lib advapi32.lib
/out:avifenc.exe
.\avifenc.exe --help
569 changes: 205 additions & 364 deletions CMakeLists.txt

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions cmake/Modules/Findaom.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,13 @@ find_package_handle_standard_args(
# show the AOM_INCLUDE_DIR, AOM_LIBRARY and AOM_LIBRARIES variables only
# in the advanced view
mark_as_advanced(AOM_INCLUDE_DIR AOM_LIBRARY AOM_LIBRARIES)

if(AOM_LIBRARY)
if("${AOM_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
add_library(aom STATIC IMPORTED GLOBAL)
else()
add_library(aom SHARED IMPORTED GLOBAL)
endif()
set_target_properties(aom PROPERTIES IMPORTED_LOCATION "${AOM_LIBRARY}")
target_include_directories(aom INTERFACE ${AOM_INCLUDE_DIR})
endif()
10 changes: 10 additions & 0 deletions cmake/Modules/Finddav1d.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,13 @@ find_package_handle_standard_args(
# show the DAV1D_INCLUDE_DIR, DAV1D_LIBRARY and DAV1D_LIBRARIES variables only
# in the advanced view
mark_as_advanced(DAV1D_INCLUDE_DIR DAV1D_LIBRARY DAV1D_LIBRARIES)

if(DAV1D_LIBRARY)
if("${DAV1D_LIBRARY}" MATCHES "\\.a$")
add_library(dav1d::dav1d STATIC IMPORTED GLOBAL)
else()
add_library(dav1d::dav1d SHARED IMPORTED GLOBAL)
endif()
set_target_properties(dav1d::dav1d PROPERTIES IMPORTED_LOCATION "${DAV1D_LIBRARY}" IMPORTED_SONAME dav1d)
target_include_directories(dav1d::dav1d INTERFACE ${DAV1D_INCLUDE_DIR})
endif()
6 changes: 6 additions & 0 deletions cmake/Modules/Findlibgav1.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,9 @@ find_package_handle_standard_args(
# show the LIBGAV1_INCLUDE_DIR, LIBGAV1_LIBRARY and LIBGAV1_LIBRARIES variables
# only in the advanced view
mark_as_advanced(LIBGAV1_INCLUDE_DIR LIBGAV1_LIBRARY LIBGAV1_LIBRARIES)

if(LIBGAV1_LIBRARY)
add_library(libgav1::libgav1 STATIC IMPORTED GLOBAL)
set_target_properties(libgav1::libgav1 PROPERTIES IMPORTED_LOCATION "${LIBGAV1_LIBRARY}" IMPORTED_SONAME gav1)
target_include_directories(libgav1::libgav1 INTERFACE ${LIBGAV1_INCLUDE_DIR})
endif()
10 changes: 10 additions & 0 deletions cmake/Modules/Findlibsharpyuv.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,13 @@ find_package_handle_standard_args(
# show the LIBSHARPYUV_INCLUDE_DIR, LIBSHARPYUV_LIBRARY and LIBSHARPYUV_LIBRARIES variables
# only in the advanced view
mark_as_advanced(LIBSHARPYUV_INCLUDE_DIR LIBSHARPYUV_LIBRARY LIBSHARPYUV_LIBRARIES)

if(LIBSHARPYUV_LIBRARY)
if("${LIBSHARPYUV_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
add_library(sharpyuv::sharpyuv STATIC IMPORTED GLOBAL)
else()
add_library(sharpyuv::sharpyuv SHARED IMPORTED GLOBAL)
endif()
set_target_properties(sharpyuv::sharpyuv PROPERTIES IMPORTED_LOCATION "${LIBSHARPYUV_LIBRARY}" IMPORTED_SONAME sharpyuv)
target_include_directories(sharpyuv::sharpyuv INTERFACE "${LIBSHARPYUV_INCLUDE_DIR}")
endif()
11 changes: 11 additions & 0 deletions cmake/Modules/Findlibyuv.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,14 @@ find_package_handle_standard_args(
# show the LIBYUV_INCLUDE_DIR, LIBYUV_LIBRARY and LIBYUV_LIBRARIES variables only
# in the advanced view
mark_as_advanced(LIBYUV_INCLUDE_DIR LIBYUV_LIBRARY LIBYUV_LIBRARIES)

if(LIBYUV_LIBRARY)
if("${LIBYUV_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
add_library(yuv::yuv STATIC IMPORTED GLOBAL)
else()
add_library(yuv::yuv SHARED IMPORTED GLOBAL)
endif()
set_target_properties(yuv::yuv PROPERTIES IMPORTED_LOCATION "${LIBYUV_LIBRARY}" IMPORTED_SONAME yuv)
target_include_directories(yuv::yuv INTERFACE "${LIBYUV_INCLUDE_DIR}")
set(libyuv_FOUND ON)
endif()
12 changes: 12 additions & 0 deletions cmake/Modules/Findrav1e.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,15 @@ find_package_handle_standard_args(
# show the RAV1E_INCLUDE_DIR, RAV1E_LIBRARY and RAV1E_LIBRARIES variables only
# in the advanced view
mark_as_advanced(RAV1E_INCLUDE_DIR RAV1E_LIBRARY RAV1E_LIBRARIES)

if(RAV1E_LIBRARY)
if(NOT TARGET rav1e::rav1e)
if("${RAV1E_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
add_library(rav1e::rav1e STATIC IMPORTED GLOBAL)
else()
add_library(rav1e::rav1e SHARED IMPORTED GLOBAL)
endif()
set_target_properties(rav1e::rav1e PROPERTIES IMPORTED_LOCATION "${RAV1E_LIBRARY}" IMPORTED_SONAME rav1e)
target_include_directories(rav1e::rav1e INTERFACE ${RAV1E_INCLUDE_DIR})
endif()
endif()
10 changes: 10 additions & 0 deletions cmake/Modules/Findsvt.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,13 @@ find_package_handle_standard_args(
# show the SVT_INCLUDE_DIR, SVT_LIBRARY and SVT_LIBRARIES variables only
# in the advanced view
mark_as_advanced(SVT_INCLUDE_DIR SVT_LIBRARY SVT_LIBRARIES)

if(SVT_LIBRARY)
if("${SVT_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$")
add_library(SvtAv1Enc STATIC IMPORTED GLOBAL)
else()
add_library(SvtAv1Enc SHARED IMPORTED GLOBAL)
endif()
set_target_properties(SvtAv1Enc PROPERTIES IMPORTED_LOCATION "${SVT_LIBRARY}")
target_include_directories(SvtAv1Enc INTERFACE ${SVT_INCLUDE_DIR})
endif()
8 changes: 8 additions & 0 deletions cmake/Modules/LocalAom.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/aom/build.libavif/${CMAKE_STATIC_LIBRARY_PREFIX}aom${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: ${LIB_FILENAME} is missing, bailing out")
endif()

add_library(aom STATIC IMPORTED GLOBAL)
set_target_properties(aom PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(aom INTERFACE "${AVIF_SOURCE_DIR}/ext/aom")
11 changes: 11 additions & 0 deletions cmake/Modules/LocalAvm.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Building the avm repository generates files such as "libaom.a" because it is a fork of aom.
set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/avm/build.libavif/${CMAKE_STATIC_LIBRARY_PREFIX}aom${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: ${LIB_FILENAME} (from avm) is missing, bailing out")
endif()

add_library(aom STATIC IMPORTED GLOBAL)
set_target_properties(aom PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(aom INTERFACE "${AVIF_SOURCE_DIR}/ext/avm")
# ext/avm/aom/aom_encoder.h includes config/aom_config.h which is generated by the local build of avm.
target_include_directories(aom INTERFACE "${AVIF_SOURCE_DIR}/ext/avm/build.libavif")
25 changes: 25 additions & 0 deletions cmake/Modules/LocalDav1d.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
set(AVIF_DAV1D_BUILD_DIR "${AVIF_SOURCE_DIR}/ext/dav1d/build")
# If ${ANDROID_ABI} is set, look for the library under that subdirectory.
if(DEFINED ANDROID_ABI)
set(AVIF_DAV1D_BUILD_DIR "${AVIF_DAV1D_BUILD_DIR}/${ANDROID_ABI}")
endif()
set(LIB_FILENAME "${AVIF_DAV1D_BUILD_DIR}/src/libdav1d${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
if("${CMAKE_STATIC_LIBRARY_SUFFIX}" STREQUAL ".a")
message(FATAL_ERROR "libavif: ${LIB_FILENAME} is missing, bailing out")
else()
# On windows, meson will produce a libdav1d.a instead of the expected libdav1d.dll/.lib.
# See https://github.com/mesonbuild/meson/issues/8153.
set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/dav1d/build/src/libdav1d.a")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: ${LIB_FILENAME} (or libdav1d${CMAKE_STATIC_LIBRARY_SUFFIX}) is missing, bailing out")
endif()
endif()
endif()

add_library(dav1d::dav1d STATIC IMPORTED)
set_target_properties(dav1d::dav1d PROPERTIES IMPORTED_LOCATION ${LIB_FILENAME} AVIF_LOCAL ON)
target_include_directories(
dav1d::dav1d INTERFACE "${AVIF_DAV1D_BUILD_DIR}" "${AVIF_DAV1D_BUILD_DIR}/include" "${AVIF_DAV1D_BUILD_DIR}/include/dav1d"
"${AVIF_SOURCE_DIR}/ext/dav1d/include"
)
28 changes: 28 additions & 0 deletions cmake/Modules/LocalGoogletest.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
set(GTEST_INCLUDE_DIRS ${AVIF_SOURCE_DIR}/ext/googletest/googletest/include)
set(GTEST_LIB_FILENAME
${AVIF_SOURCE_DIR}/ext/googletest/build/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
)
set(GTEST_MAIN_LIB_FILENAME
${AVIF_SOURCE_DIR}/ext/googletest/build/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}
)
if(NOT EXISTS ${GTEST_INCLUDE_DIRS}/gtest/gtest.h)
message(FATAL_ERROR "googletest(AVIF_LOCAL_GTEST): ${GTEST_INCLUDE_DIRS}/gtest/gtest.h is missing, bailing out")
elseif(NOT EXISTS ${GTEST_LIB_FILENAME})
message(FATAL_ERROR "googletest(AVIF_LOCAL_GTEST): ${GTEST_LIB_FILENAME} is missing, bailing out")
elseif(NOT EXISTS ${GTEST_MAIN_LIB_FILENAME})
message(FATAL_ERROR "googletest(AVIF_LOCAL_GTEST): ${GTEST_MAIN_LIB_FILENAME} is missing, bailing out")
else()
message(STATUS "Found local ext/googletest")
endif()

add_library(GTest::gtest STATIC IMPORTED)
set_target_properties(GTest::gtest PROPERTIES IMPORTED_LOCATION "${GTEST_LIB_FILENAME}" AVIF_LOCAL ON)

if(TARGET Threads::Threads)
target_link_libraries(GTest::gtest INTERFACE Threads::Threads)
endif()
target_include_directories(GTest::gtest INTERFACE "${GTEST_INCLUDE_DIRS}")

add_library(GTest::gtest_main STATIC IMPORTED)
target_link_libraries(GTest::gtest_main INTERFACE GTest::gtest)
set_target_properties(GTest::gtest_main PROPERTIES IMPORTED_LOCATION "${GTEST_MAIN_LIB_FILENAME}" AVIF_LOCAL ON)
7 changes: 7 additions & 0 deletions cmake/Modules/LocalJpeg.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
add_subdirectory(${AVIF_SOURCE_DIR}/ext/libjpeg EXCLUDE_FROM_ALL)

set_property(TARGET jpeg PROPERTY AVIF_LOCAL ON)
set(JPEG_INCLUDE_DIR "${AVIF_SOURCE_DIR}/ext/libjpeg")
target_include_directories(jpeg INTERFACE ${JPEG_INCLUDE_DIR})

add_library(JPEG::JPEG ALIAS jpeg)
9 changes: 9 additions & 0 deletions cmake/Modules/LocalLibXml2.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/lib/${AVIF_LIBRARY_PREFIX}xml2${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: ${LIB_FILENAME} is missing, bailing out")
endif()

add_library(LibXml2 STATIC IMPORTED GLOBAL)
set_target_properties(LibXml2 PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(LibXml2 INTERFACE "${AVIF_SOURCE_DIR}/ext/libxml2/install.libavif/include/libxml2")
add_library(LibXml2::LibXml2 ALIAS LibXml2)
10 changes: 10 additions & 0 deletions cmake/Modules/LocalLibargparse.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
set(LIBARGPARSE_FILENAME
"${AVIF_SOURCE_DIR}/ext/libargparse/build/${CMAKE_STATIC_LIBRARY_PREFIX}argparse${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
if(EXISTS "${LIBARGPARSE_FILENAME}")
add_library(libargparse STATIC IMPORTED GLOBAL)
set_target_properties(libargparse PROPERTIES IMPORTED_LOCATION "${LIBARGPARSE_FILENAME}" AVIF_LOCAL ON)
target_include_directories(libargparse INTERFACE "${AVIF_SOURCE_DIR}/ext/libargparse/src")
else()
message(WARNING "${LIBARGPARSE_FILENAME} is missing, not building avifgainmaputil, please run ext/libargparse.cmd")
endif()
14 changes: 14 additions & 0 deletions cmake/Modules/LocalLibgav1.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
set(AVIF_LIBGAV1_BUILD_DIR "${AVIF_SOURCE_DIR}/ext/libgav1/build")
# If ${ANDROID_ABI} is set, look for the library under that subdirectory.
if(DEFINED ANDROID_ABI)
set(AVIF_LIBGAV1_BUILD_DIR "${AVIF_LIBGAV1_BUILD_DIR}/${ANDROID_ABI}")
endif()
set(LIB_FILENAME "${AVIF_LIBGAV1_BUILD_DIR}/libgav1${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: ${LIB_FILENAME} is missing, bailing out")
endif()

add_library(libgav1_static STATIC IMPORTED GLOBAL)
set_target_properties(libgav1_static PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(libgav1_static INTERFACE "${AVIF_SOURCE_DIR}/ext/libgav1/src")
add_library(libgav1::libgav1 ALIAS libgav1_static)
10 changes: 10 additions & 0 deletions cmake/Modules/LocalLibsharpyuv.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
set(LIB_FILENAME "${CMAKE_CURRENT_SOURCE_DIR}/ext/libwebp/build/libsharpyuv${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif(AVIF_LIBSHARPYUV=LOCAL): ${LIB_FILENAME} is missing, bailing out")
endif()

add_library(sharpyuv::sharpyuv STATIC IMPORTED GLOBAL)
set_target_properties(sharpyuv::sharpyuv PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(sharpyuv::sharpyuv INTERFACE "${AVIF_SOURCE_DIR}/ext/libwebp")

set(libsharpyuv_FOUND ON)
33 changes: 33 additions & 0 deletions cmake/Modules/LocalLibyuv.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
set(AVIF_LIBYUV_BUILD_DIR "${AVIF_SOURCE_DIR}/ext/libyuv/build")

# If ${ANDROID_ABI} is set, look for the library under that subdirectory.
if(DEFINED ANDROID_ABI)
set(AVIF_LIBYUV_BUILD_DIR "${AVIF_LIBYUV_BUILD_DIR}/${ANDROID_ABI}")
endif()
set(LIB_FILENAME "${AVIF_LIBYUV_BUILD_DIR}/${AVIF_LIBRARY_PREFIX}yuv${CMAKE_STATIC_LIBRARY_SUFFIX}")

if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif(AVIF_LIBYUV=LOCAL): ${LIB_FILENAME} is missing, bailing out")
endif()

message(STATUS "libavif: local libyuv found; libyuv-based fast paths enabled.")

set(LIBYUV_INCLUDE_DIR "${AVIF_SOURCE_DIR}/ext/libyuv/include")

add_library(yuv::yuv STATIC IMPORTED GLOBAL)
set_target_properties(yuv::yuv PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(yuv::yuv INTERFACE "${LIBYUV_INCLUDE_DIR}")

set(libyuv_FOUND ON)

set(LIBYUV_VERSION_H "${LIBYUV_INCLUDE_DIR}/libyuv/version.h")
if(EXISTS ${LIBYUV_VERSION_H})
# message(STATUS "Reading: ${LIBYUV_VERSION_H}")
file(READ ${LIBYUV_VERSION_H} LIBYUV_VERSION_H_CONTENTS)
string(REGEX MATCH "#define LIBYUV_VERSION ([0-9]+)" _ ${LIBYUV_VERSION_H_CONTENTS})
set(LIBYUV_VERSION ${CMAKE_MATCH_1})
# message(STATUS "libyuv version detected: ${LIBYUV_VERSION}")
endif()
if(NOT LIBYUV_VERSION)
message(STATUS "libyuv version detection failed.")
endif()
8 changes: 8 additions & 0 deletions cmake/Modules/LocalRav1e.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/rav1e/build.libavif/usr/lib/${AVIF_LIBRARY_PREFIX}rav1e${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: compiled rav1e library is missing (in ext/rav1e/build.libavif/usr/lib), bailing out")
endif()

add_library(rav1e::rav1e STATIC IMPORTED)
set_target_properties(rav1e::rav1e PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" IMPORTED_SONAME rav1e AVIF_LOCAL ON)
target_include_directories(rav1e::rav1e INTERFACE "${AVIF_SOURCE_DIR}/ext/rav1e/build.libavif/usr/include/rav1e")
8 changes: 8 additions & 0 deletions cmake/Modules/LocalSvt.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
set(LIB_FILENAME "${AVIF_SOURCE_DIR}/ext/SVT-AV1/Bin/Release/${AVIF_LIBRARY_PREFIX}SvtAv1Enc${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(NOT EXISTS "${LIB_FILENAME}")
message(FATAL_ERROR "libavif: compiled svt library is missing (in ext/SVT-AV1/Bin/Release), bailing out")
endif()

add_library(SvtAv1Enc STATIC IMPORTED GLOBAL)
set_target_properties(SvtAv1Enc PROPERTIES IMPORTED_LOCATION "${LIB_FILENAME}" AVIF_LOCAL ON)
target_include_directories(SvtAv1Enc INTERFACE "${AVIF_SOURCE_DIR}/ext/SVT-AV1/include")
46 changes: 46 additions & 0 deletions cmake/Modules/LocalZlibpng.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# ---------------------------------------------------------------------------------------
# This insanity is for people embedding libavif or making fully static or Windows builds.
# Any proper unix environment should ignore these entire following blocks.
# Put the value of ZLIB_INCLUDE_DIR in the cache. This works around cmake behavior that has been updated by
# cmake policy CMP0102 in cmake 3.17. Remove the CACHE workaround when we require cmake 3.17 or later. See
# https://gitlab.kitware.com/cmake/cmake/-/issues/21343.
set(ZLIB_INCLUDE_DIR "${AVIF_SOURCE_DIR}/ext/zlib" CACHE PATH "zlib include dir")
# This include_directories() call must be before add_subdirectory(ext/zlib) to work around the
# zlib/CMakeLists.txt bug fixed by https://github.com/madler/zlib/pull/818.
include_directories(SYSTEM $<BUILD_INTERFACE:${ZLIB_INCLUDE_DIR}>)

add_subdirectory(ext/zlib EXCLUDE_FROM_ALL)

# Re-enable example and example64 targets, as these are used by tests
set_property(TARGET example PROPERTY EXCLUDE_FROM_ALL FALSE)
if(TARGET example64)
set_property(TARGET example64 PROPERTY EXCLUDE_FROM_ALL FALSE)
endif()

target_include_directories(zlibstatic INTERFACE $<BUILD_INTERFACE:${ZLIB_INCLUDE_DIR}>)

# This include_directories() call and the previous include_directories() call provide the zlib
# include directories for add_subdirectory(ext/libpng). Because we set PNG_BUILD_ZLIB,
# libpng/CMakeLists.txt won't call find_package(ZLIB REQUIRED) and will see an empty
# ${ZLIB_INCLUDE_DIRS}.
include_directories($<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/ext/zlib>)
set(CMAKE_DEBUG_POSTFIX "")

add_library(ZLIB::ZLIB ALIAS zlibstatic)

# This is the only way I could avoid libpng going crazy if it found awk.exe, seems benign otherwise
set(PREV_ANDROID ${ANDROID})
set(ANDROID TRUE)
set(PNG_BUILD_ZLIB "${AVIF_SOURCE_DIR}/ext/zlib" CACHE STRING "" FORCE)
set(PNG_SHARED OFF CACHE BOOL "")
set(PNG_TESTS OFF CACHE BOOL "")
set(PNG_EXECUTABLES OFF CACHE BOOL "")

add_subdirectory("${AVIF_SOURCE_DIR}/ext/libpng" EXCLUDE_FROM_ALL)

set(PNG_PNG_INCLUDE_DIR "${AVIF_SOURCE_DIR}/ext/libpng")
include_directories($<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/ext/libpng>)
set(ANDROID ${PREV_ANDROID})

set_target_properties(png_static zlibstatic PROPERTIES AVIF_LOCAL ON)
add_library(PNG::PNG ALIAS png_static)
Loading

0 comments on commit bccbcc0

Please sign in to comment.