cmake_minimum_required(VERSION 3.6)

set(PREBUILD_DIR ${CMAKE_SOURCE_DIR}/prebuild/${ANDROID_ABI})

add_library(VNMediaClient-jni
            SHARED
            src/cpp/VN_JClient.cpp
            src/cpp/VN_JPlayer.cpp
            src/cpp/VN_JStreamer.cpp )

include_directories(src/cpp/include)

# zlib
find_package( ZLIB REQUIRED )
if ( ZLIB_FOUND )
    include_directories( ${ZLIB_INCLUDE_DIRS} )
    target_link_libraries( VNMediaClient-jni ${ZLIB_LIBRARIES} )
endif( ZLIB_FOUND )

message("ANDROID_ABI: ${ANDROID_ABI}")
message("LOG_LIB: ${log-lib}")

set(FFMPEG_DIR ${PREBUILD_DIR}/ffmpeg)
set(FFMPEG_INC ${FFMPEG_DIR}/include)
set(FFMPEG_LIB ${FFMPEG_DIR}/lib)

include_directories(${PREBUILD_DIR}
                    ${PREBUILD_DIR}/VNMediaClient/include
                    ${PREBUILD_DIR}/VNMediaClient/include/impl
                    ${PREBUILD_DIR}/VNMediaClient/include/impl/ot
                    ${FFMPEG_INC}
                    ${FFMPEG_INC}/libavcodec
                    ${FFMPEG_INC}/libavformat
                    ${FFMPEG_INC}/libswscale)

add_library(VNMediaClient STATIC IMPORTED)
set_target_properties(VNMediaClient PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/VNMediaClient/lib/libVNMediaClient.a)

# FFmpeg
add_library(ffmpeg-avcodec  STATIC IMPORTED)
add_library(ffmpeg-avformat STATIC IMPORTED)
add_library(ffmpeg-avutil   STATIC IMPORTED)
add_library(ffmpeg-avdevice STATIC IMPORTED)
add_library(ffmpeg-postproc STATIC IMPORTED)
set_target_properties(ffmpeg-avcodec  PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB}/libavcodec.a)
set_target_properties(ffmpeg-avformat PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB}/libavformat.a)
set_target_properties(ffmpeg-avutil   PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB}/libavutil.a)
set_target_properties(ffmpeg-avdevice PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB}/libavdevice.a)
set_target_properties(ffmpeg-postproc PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB}/libpostproc.a)

# ACE
add_library(ACE STATIC IMPORTED)
add_library(ACE_SSL STATIC IMPORTED)
set_target_properties(ACE PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/ace/lib/libACE.a)
set_target_properties(ACE_SSL PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/ace/lib/libACE_SSL.a)

# openSSL
add_library(ssl    STATIC IMPORTED)
add_library(crypto STATIC IMPORTED)
set_target_properties(ssl    PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/openssl/lib/libssl.a)
set_target_properties(crypto PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/openssl/lib/libcrypto.a)

# CURL
add_library(curl STATIC IMPORTED)
set_target_properties(curl PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/curl/lib/libcurl.a)

# XML2
add_library(xml2 STATIC IMPORTED)
set_target_properties(xml2 PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/libxml2/lib/libxml2.a)

# X264
add_library(x264 STATIC IMPORTED)
set_target_properties(x264 PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/x264/lib/libx264.a)

# live555
add_library(BasicUsageEnvironment STATIC IMPORTED)
add_library(UsageEnvironment STATIC IMPORTED)
add_library(groupsock STATIC IMPORTED)
add_library(liveMedia STATIC IMPORTED)
set_target_properties(BasicUsageEnvironment PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/live555/lib/libBasicUsageEnvironment.a)
set_target_properties(UsageEnvironment PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/live555/lib/libUsageEnvironment.a)
set_target_properties(groupsock PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/live555/lib/libgroupsock.a)
set_target_properties(liveMedia PROPERTIES IMPORTED_LOCATION ${PREBUILD_DIR}/live555/lib/libliveMedia.a)

target_link_libraries(VNMediaClient-jni
    VNMediaClient curl ACE ACE_SSL ssl crypto ffmpeg-avcodec ffmpeg-avformat ffmpeg-avutil x264 xml2
    # Links the target library to the log library
    # included in the NDK.
    android log
)
