summaryrefslogtreecommitdiff
path: root/app/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'app/CMakeLists.txt')
-rw-r--r--app/CMakeLists.txt86
1 files changed, 86 insertions, 0 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
new file mode 100644
index 0000000..c56f72d
--- /dev/null
+++ b/app/CMakeLists.txt
@@ -0,0 +1,86 @@
+# 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)
+
+# 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_LLVM_TOOLCHAIN_PREFIX=${ANDROID_LLVM_TOOLCHAIN_PREFIX}
+ ${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} ) \ No newline at end of file