d6cfb1f1创建于 4月27日历史提交
# the minimum version of CMake.
cmake_minimum_required(VERSION 3.5.0)
project(Harmonyapng)

set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})

if(DEFINED PACKAGE_FIND_FILE)
    include(${PACKAGE_FIND_FILE})
endif()

include_directories(${NATIVERENDER_ROOT_PATH}
                    ${NATIVERENDER_ROOT_PATH}/include
                    ${NATIVERENDER_ROOT_PATH}/apng-drawable)

# 仅使用 thirdparty/libpng 下按 ABI 放置的预编译库(须为 APNG 补丁构建)
set(LIBPNG_PREBUILT_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libpng/${OHOS_ARCH})
set(LIBPNG_PREBUILT_A ${LIBPNG_PREBUILT_ROOT}/lib/libpng.a)
set(LIBPNG_PREBUILT_SO ${LIBPNG_PREBUILT_ROOT}/lib/libpng.so)

if(EXISTS ${LIBPNG_PREBUILT_A})
    message(STATUS "libpng: 静态库 ${LIBPNG_PREBUILT_ROOT}")
    set(LIBPNG_LINK_MODE static)
elseif(EXISTS ${LIBPNG_PREBUILT_SO})
    message(STATUS "libpng: 动态库 ${LIBPNG_PREBUILT_ROOT}")
    set(LIBPNG_LINK_MODE shared)
else()
    message(FATAL_ERROR "未找到 libpng。请将 APNG 补丁版 libpng 放入 thirdparty/libpng/${OHOS_ARCH}/lib/(libpng.a 或 libpng.so)及对应 include。")
endif()

set(APNG_SOURCES
    apng-drawable/ApngDecoder.cpp
    apng-drawable/ApngDecoderNapi.cpp
    apng-drawable/ApngImage.cpp
    apng-drawable/ApngFrame.cpp
    apng-drawable/StreamSourceHarmony.cpp
)

add_library(entry SHARED
    napi_init.cpp
    ${APNG_SOURCES}
)

target_link_libraries(entry PUBLIC libace_napi.z.so)
if(LIBPNG_LINK_MODE STREQUAL "static")
    target_link_libraries(entry PRIVATE ${LIBPNG_PREBUILT_A})
elseif(LIBPNG_LINK_MODE STREQUAL "shared")
    target_link_libraries(entry PRIVATE ${LIBPNG_PREBUILT_SO})
endif()
target_include_directories(entry PRIVATE ${LIBPNG_PREBUILT_ROOT}/include)
target_compile_definitions(entry PRIVATE USE_LIBPNG_APNG=1)

find_library(
    zlib-lib
    z
)

find_library(
    hilog-lib
    hilog_ndk.z
)

target_link_libraries(entry PUBLIC ${libnapi-lib} ${libndk-lib} ${hilog-lib} ${zlib-lib})