# For more information about using CMake with Android Studio, read the # documentation: https://d.android.com/studio/projects/add-native-code.html # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.4.1) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libs/cmake) # I have no idea why this is required... if(NOT DEFINED CMAKE_SYSROOT AND DEFINED ANDROID_SYSROOT) set(CMAKE_SYSROOT ${ANDROID_SYSROOT}) endif(NOT DEFINED CMAKE_SYSROOT AND DEFINED ANDROID_SYSROOT) # OpenSSL stuff file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/openssl/include) add_custom_command(OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libssl.so ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libcrypto.so COMMAND ${CMAKE_COMMAND} -E env SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/libs/openssl OUTPUT_DIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ANDROID_NDK=${ANDROID_NDK} ANDROID_ABI=${ANDROID_ABI} ANDROID_CXX_COMPILER=${CMAKE_CXX_COMPILER} ${CMAKE_CURRENT_SOURCE_DIR}/libs/build-openssl.sh COMMENT "Building OpenSSL" WORKING_DIRECTORY openssl) add_custom_target(openssl DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libssl.so ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libcrypto.so) add_library(libssl SHARED IMPORTED) add_dependencies(libssl openssl) set_property(TARGET libssl PROPERTY IMPORTED_LOCATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libssl.so) set_property(TARGET libssl PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/openssl/include ${CMAKE_CURRENT_SOURCE_DIR}/libs/openssl/include) add_library(libcrypto SHARED IMPORTED) add_dependencies(libcrypto openssl) set_property(TARGET libcrypto PROPERTY IMPORTED_LOCATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libcrypto.so) set_property(TARGET libssl PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/openssl/include ${CMAKE_CURRENT_SOURCE_DIR}/libs/openssl/include) # libjpeg-turbo set(ENABLE_STATIC OFF CACHE BOOL "Disable turbojpeg static libs") set(WITH_TURBOJPEG OFF CACHE BOOL "Disable turbojpeg libturbojpeg") add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/libjpeg-turbo libjpeg-turbo EXCLUDE_FROM_ALL) target_include_directories(jpeg INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/libs/libjpeg-turbo INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo ) # libvncserver add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libs/libvncserver libvncserver EXCLUDE_FROM_ALL) # Creates and names a library, sets it as either STATIC # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds them for you. # Gradle automatically packages shared libraries with your APK. add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/native-lib.cpp ) # Searches for a specified prebuilt library and stores the path as a # variable. Because CMake includes system libraries in the search path by # default, you only need to specify the name of the public NDK library # you want to add. CMake verifies that the library exists before # completing its build. find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log ) # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in this # build script, prebuilt third-party libraries, or system libraries. target_link_libraries( # Specifies the target library. native-lib libssl libcrypto jpeg vncserver # Links the target library to the log library # included in the NDK. ${log-lib} )