-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathgen_android_example.cmake.in
More file actions
134 lines (116 loc) · 6.96 KB
/
gen_android_example.cmake.in
File metadata and controls
134 lines (116 loc) · 6.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Copyright (C) 2019 HERE Europe B.V.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# License-Filename: LICENSE
function(gen_android_example_application
OLP_SDK_EXAMPLE_TARGET_NAME
OLP_SDK_EXAMPLE_PACKAGE_NAME
OLP_SDK_EXAMPLE_PACKAGE_JNI_NAME
OLP_SDK_EXAMPLE_SUCCESS_STRING
OLP_SDK_EXAMPLE_FAILURE_STRING)
if(NOT ANDROID)
message(FATAL_ERROR "Unsupported platform!")
endif()
# Copy all the files from android directory except the *.in files
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/android/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/android)
file(GLOB_RECURSE EXCLUDED_IN_FILES ${CMAKE_CURRENT_BINARY_DIR}/android/*.in)
file(REMOVE ${EXCLUDED_IN_FILES})
# Configure all the variables required to generated gralde project
set(OLP_SDK_SUCCESSFUL_EXAMPLE_EXECUTION_STRING ${OLP_SDK_EXAMPLE_SUCCESS_STRING})
set(OLP_SDK_FAILING_EXAMPLE_EXECUTION_STRING ${OLP_SDK_EXAMPLE_FAILURE_STRING})
set(OLP_SDK_EXAMPLE_ANDROID_ABI "// abiFilters 'arm64-v8a'")
if (DEFINED ANDROID_ABI)
set(OLP_SDK_EXAMPLE_ANDROID_ABI "abiFilters '${ANDROID_ABI}'")
endif()
set(OLP_SDK_EXAMPLE_ANDROID_TOOLCHAIN_FILE "-DCMAKE_TOOLCHAIN_FILE='path to your toolchain file'")
if (DEFINED CMAKE_TOOLCHAIN_FILE)
set(OLP_SDK_EXAMPLE_ANDROID_TOOLCHAIN_FILE "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
endif()
set(OLP_SDK_EXAMPLE_HTTP_CLIENT_JAR "-DOLP_SDK_HTTP_CLIENT_JAR='full path to the OlpHttpClient.jar in the <olp-sdk-build-folder>/olp-cpp-sdk-core/ folder'")
# Try to find the path to the built OlpHttpClient.jar archive
if (DEFINED olp-cpp-sdk-core_BINARY_DIR)
set(OLP_SDK_HTTP_CLIENT_PATH ${olp-cpp-sdk-core_BINARY_DIR})
# User can change the install path of the OlpHttpClient.jar via CMAKE_JAVA_TARGET_OUTPUT_DIR variable
if (DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR)
set(OLP_SDK_HTTP_CLIENT_PATH ${CMAKE_JAVA_TARGET_OUTPUT_DIR})
endif()
set(OLP_SDK_EXAMPLE_HTTP_CLIENT_JAR "-DOLP_SDK_HTTP_CLIENT_JAR=${OLP_SDK_HTTP_CLIENT_PATH}/OlpHttpClient.jar")
endif()
set(OLP_SDK_EXAMPLE_LEVELDB_DIR "-Dleveldb_DIR='path to the directory which contains LevelDB cmake config files'")
if (DEFINED leveldb_DIR)
set(OLP_SDK_EXAMPLE_LEVELDB_DIR "-Dleveldb_DIR=${leveldb_DIR}")
endif()
if(OLP_SDK_ENABLE_DEFAULT_CACHE_LMDB)
set(OLP_SDK_EXAMPLE_LMDB_DIR "-Dlmdb_DIR='path to the directory which contains LMDB cmake config files'")
if (DEFINED lmdb_DIR)
set(OLP_SDK_EXAMPLE_LMDB_DIR "-Dlmdb_DIR=${lmdb_DIR}")
endif()
endif()
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/android/app/build.gradle.in
${CMAKE_CURRENT_BINARY_DIR}/android/app/build.gradle
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/android/app/CMakeLists.txt.in
${CMAKE_CURRENT_BINARY_DIR}/android/app/CMakeLists.txt
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/android/app/src/main/AndroidManifest.xml.in
${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/AndroidManifest.xml
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/android/app/src/main/cpp/MainActivityNative.cpp.in
${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/cpp/MainActivityNative.cpp
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/android/app/src/main/java/MainActivity.java.in
${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/java/com/here/android/olp/${OLP_SDK_EXAMPLE_PACKAGE_NAME}/MainActivity.java
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/android/app/src/main/res/values/strings.xml.in
${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/res/values/strings.xml
@ONLY
)
# Symlink (or copy - depending on the platform) the *.h / *.cpp files to the gradle fodler
set(OLP_SDK_EXAMPLE_H_FILE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/Examples.h)
set(OLP_SDK_EXAMPLE_H_FILE_DST ${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/cpp/Examples.h)
set(OLP_SDK_EXAMPLE_READ_H_FILE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/ReadExample.h)
set(OLP_SDK_EXAMPLE_READ_H_FILE_DST ${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/cpp/ReadExample.h)
set(OLP_SDK_EXAMPLE_WRITE_H_FILE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/WriteExample.h)
set(OLP_SDK_EXAMPLE_WRITE_H_FILE_DST ${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/cpp/WriteExample.h)
set(OLP_SDK_EXAMPLE_CPP_WRITE_FILE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/WriteExample.cpp)
set(OLP_SDK_EXAMPLE_CPP_READ_FILE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/ReadExample.cpp)
set(OLP_SDK_EXAMPLE_CPP_CACHE_FILE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/ProtectedCacheExample.cpp)
set(OLP_SDK_EXAMPLE_CPP_WRITE_FILE_DST ${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/cpp/WriteExample.cpp)
set(OLP_SDK_EXAMPLE_CPP_READ_FILE_DST ${CMAKE_CURRENT_BINARY_DIR}/android/app/src/main/cpp/ReadExample.cpp)
if(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS)
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${OLP_SDK_EXAMPLE_H_FILE_SRC} ${OLP_SDK_EXAMPLE_H_FILE_DST})
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${OLP_SDK_EXAMPLE_READ_H_FILE_SRC} ${OLP_SDK_EXAMPLE_READ_H_FILE_DST})
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${OLP_SDK_EXAMPLE_WRITE_H_FILE_SRC} ${OLP_SDK_EXAMPLE_WRITE_H_FILE_DST})
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${OLP_SDK_EXAMPLE_CPP_WRITE_FILE_SRC} ${OLP_SDK_EXAMPLE_CPP_WRITE_FILE_DST})
execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${OLP_SDK_EXAMPLE_CPP_READ_FILE_SRC} ${OLP_SDK_EXAMPLE_CPP_READ_FILE_DST})
else(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OLP_SDK_EXAMPLE_H_FILE_SRC} ${OLP_SDK_EXAMPLE_H_FILE_DST})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OLP_SDK_EXAMPLE_READ_H_FILE_SRC} ${OLP_SDK_EXAMPLE_READ_H_FILE_DST})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OLP_SDK_EXAMPLE_WRITE_H_FILE_SRC} ${OLP_SDK_EXAMPLE_WRITE_H_FILE_DST})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OLP_SDK_EXAMPLE_CPP_WRITE_FILE_SRC} ${OLP_SDK_EXAMPLE_CPP_WRITE_FILE_DST})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${OLP_SDK_EXAMPLE_CPP_READ_FILE_SRC} ${OLP_SDK_EXAMPLE_CPP_READ_FILE_DST})
endif(CMAKE_HOST_WIN32 AND NOT CYGWIN AND NOT MSYS)
endfunction()