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)
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})