File: android.cmake

package info (click to toggle)
caveexpress 2.5.2-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 42,288 kB
  • sloc: cpp: 63,815; ansic: 1,135; sh: 501; xml: 186; python: 74; makefile: 60; javascript: 22
file content (175 lines) | stat: -rw-r--r-- 6,589 bytes parent folder | download | duplicates (3)
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
set(ANDROID_ROOT ${ROOT_DIR}/android-project/)

set(ANDROID_SDK_ROOT $ENV{ANDROID_SDK})
set(ANDROID_SDK_BUILD_TOOLS_VERSION "25.0.2")
set(ANDROID_PLATFORM_TOOLS_ROOT ${ANDROID_SDK_ROOT}/platform-tools)
set(ANDROID_EXTRAS_ROOT ${ANDROID_SDK_ROOT}/extras)
set(ANDROID_GOOGLE_PLAY_SERVICES_ROOT ${ANDROID_EXTRAS_ROOT}/google/google_play_services)
set(ANDROID_BUILD_TOOLS_ROOT ${ANDROID_SDK_ROOT}/build-tools/${ANDROID_SDK_BUILD_TOOLS_VERSION})
set(ANDROID_API "android-13" CACHE STRING "Android platform version")

if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
	set(ANDROID_NDK_EXE_EXT ".exe")
	set(ANDROID_SDK_TOOL_EXT ".bat")
endif()

if (VERBOSE)
	set(ANT_FLAGS -v)
	set(ZIPALIGN_FLAGS -v)
	set(KEYTOOL_FLAGS -v)
	set(ANDROID_TOOL_FLAGS "${ANDROID_TOOL_FLAGS} -v")
endif()
if (GRADLE)
	set(ANDROID_TOOL_FLAGS "${ANDROID_TOOL_FLAGS} -g")
endif()

set(ANDROID_SDK_TOOL "${ANDROID_SDK_ROOT}/tools/android${ANDROID_SDK_TOOL_EXT}")

if (NOT CMAKE_ANDROID_NDK)
	message(FATAL_ERROR "ANDROID_NDK environment variable is not set")
endif()
if (NOT ANDROID_SDK_ROOT)
	message(FATAL_ERROR "ANDROID_SDK environment variable is not set")
endif()
message(STATUS "Android NDK root: ${CMAKE_ANDROID_NDK}")
message(STATUS "Android SDK root: ${ANDROID_SDK_ROOT}")

if (RELEASE)
	set(ANT_TARGET release)
	set(ANT_INSTALL_TARGET installr)
	set(MANIFEST_DEBUGGABLE false)
else()
	set(ANT_TARGET debug)
	set(ANT_INSTALL_TARGET installd)
	set(MANIFEST_DEBUGGABLE true)
endif()

if (ANDROID_INSTALL_PACKAGES)
	message(STATUS "Install android packages")
	cp_android_package("android-13")
	cp_android_package("android-16")
	if (NOT EXISTS "${ANDROID_GOOGLE_PLAY_SERVICES_ROOT}/")
		cp_android_package("extra-google-google_play_services")
	endif()
	if (NOT EXISTS "${ANDROID_PLATFORM_TOOLS_ROOT}/")
		cp_android_package("platform-tools")
	endif()
	if (NOT EXISTS "${ANDROID_BUILD_TOOLS_ROOT}/")
		cp_android_package("build-tools-${ANDROID_SDK_BUILD_TOOLS_VERSION}")
	endif()
	set(ANDROID_INSTALL_PACKAGES OFF)
else()
	message(STATUS "Skip installing android packages")
endif()

# find the ant tool
find_host_program(ANDROID_ANT ant)
if (ANDROID_ANT)
	message(STATUS "ant found")
else()
	message(FATAL_ERROR "ant not found in path!")
endif()

if (GRADLE)
	find_host_program(ANDROID_GRADLE gradle)
	if (ANDROID_GRADLE)
		message(STATUS "gradle found")
	else()
		message(FATAL_ERROR "gradle not found in path!")
	endif()
endif()

find_host_program(JARSIGNER "jarsigner")
find_host_program(ANDROID_NDK_STACK "ndk-stack" HINTS ${CMAKE_ANDROID_NDK})
find_host_program(ANDROID_ZIPALIGN "zipalign" HINTS ${ANDROID_SDK_ROOT}/tools)
if (ANDROID_ZIPALIGN)
	message(STATUS "zipalign tool found")
else()
	set(ANDROID_ZIPALIGN ${ANDROID_BUILD_TOOLS_ROOT}/zipalign)
	message(STATUS "could not find zipalign in path - use ${ANDROID_ZIPALIGN}")
endif()

option(HD_VERSION "Build the HD versions of the games" OFF)
set(ANDROID_REFERENCED_LIBS android.library.reference.1=google-play-services_lib)
set(TOOLS OFF)
set(USE_BUILTIN ON)

find_host_program(ANDROID_ADB adb PATHS ${ANDROID_SDK_ROOT}/platform-tools/)
if (ANDROID_ADB)
	message(STATUS "adb tool found")
else()
	message(FATAL_ERROR "adb tool not found in path!")
endif()

set(PERMISSIONS)
list(APPEND PERMISSIONS "<uses-permission android:name=\"com.android.vending.BILLING\" />")

set(META_DATA, "")
if (NOT HD_VERSION)
	set(META_DATA "${META_DATA}<meta-data android:value=\"true\" android:name=\"ADMOB_ALLOW_LOCATION_FOR_ADS\" />")
	message(STATUS "Don't build HD version")
else()
	message(STATUS "Build HD version")
endif()
set(META_DATA "${META_DATA}<meta-data android:name=\"com.google.android.gms.games.APP_ID\" android:value=\"@string/app_id\" />")
set(META_DATA "${META_DATA}<meta-data android:name=\"com.google.android.gms.appstate.APP_ID\" android:value=\"@string/app_id\" />")
set(META_DATA "${META_DATA}<meta-data android:name=\"com.google.android.gms.version\" android:value=\"@integer/google_play_services_version\" />")

set(DEBUG_KEYSTORES "$ENV{HOME}/.android/debug.keystore" "$ENV{HOMEPATH}/.android/debug.keystore")
foreach(DEBUG_KEYSTORE ${DEBUG_KEYSTORES})
	if (EXISTS ${DEBUG_KEYSTORE})
		set(ANDROID_DEBUG_KEYSTORE ${DEBUG_KEYSTORE})
	endif()
endforeach()

set(ANDROID_DEBUG_ALIAS androiddebugkey)
set(ANDROID_DEBUG_STOREPASS android)
set(ANDROID_DEBUG_KEYPASS android)
if ("${ANDROID_DEBUG_KEYSTORE}" STREQUAL "")
	find_host_program(KEYTOOL keytool)
	if (KEYTOOL)
		message(STATUS "keytool found (${KEYTOOL})- generate debug keystore at $ENV{HOME}/.android with storepass ${ANDROID_DEBUG_STOREPASS}, alias ${ANDROID_DEBUG_ALIAS}, keypass ${ANDROID_DEBUG_KEYPASS}")
		file(MAKE_DIRECTORY $ENV{HOME}/.android)
		execute_process(COMMAND ${KEYTOOL} -genkeypair ${KEYTOOL_FLAGS} -keystore $ENV{HOME}/.android/debug.keystore -storepass ${ANDROID_DEBUG_STOREPASS} -alias ${ANDROID_DEBUG_ALIAS} -keypass ${ANDROID_DEBUG_KEYPASS} -dname "CN=Android Debug,O=Android,C=US" RESULT_VARIABLE exitcode)
		execute_process(COMMAND ${KEYTOOL} --help)
		message(STATUS "keytool exited with ${exitcode}")
		set(DEBUG_KEYSTORE "$ENV{HOME}/.android/debug.keystore")
		if (NOT EXISTS ${DEBUG_KEYSTORE})
			message(FATAL_ERROR "Could not create debug keystore")
		else()
			set(ANDROID_DEBUG_KEYSTORE ${DEBUG_KEYSTORE})
		endif()
	else()
		message(FATAL_ERROR "keytool not found in path! no debug keystore found")
	endif()
else()
	message(STATUS "Found android debug keystore at ${ANDROID_DEBUG_KEYSTORE}")
endif()

set(ANDROID_RELEASE_KEYSTORE $ENV{CAVEPRODUCTIONS_KEYSTORE_PATH})
set(ANDROID_RELEASE_ALIAS CaveProductions)
set(ANDROID_RELEASE_STOREPASS $ENV{CAVEPRODUCTIONS_KEYSTORE_PASSWD})
set(ANDROID_RELEASE_KEYPASS $ENV{CAVEPRODUCTIONS_ALIAS_PASSWD})

if (RELEASE)
	if (NOT DEFINED ENV{CAVEPRODUCTIONS_KEYSTORE_PASSWD})
		message(FATAL_ERROR "No keystore password set - export CAVEPRODUCTIONS_KEYSTORE_PASSWD env var")
	endif()
	if (NOT DEFINED ENV{CAVEPRODUCTIONS_KEYSTORE_PATH})
		message(FATAL_ERROR "No keystore path set - export CAVEPRODUCTIONS_KEYSTORE_PATH env var")
	endif()
	set(ANDROID_KEYSTORE ${ANDROID_RELEASE_KEYSTORE})
	set(ANDROID_ALIAS ${ANDROID_RELEASE_ALIAS})
	set(ANDROID_STOREPASS ${ANDROID_RELEASE_STOREPASS})
	set(ANDROID_KEYPASS ${ANDROID_RELEASE_KEYPASS})
else()
	set(ANDROID_KEYSTORE ${ANDROID_DEBUG_KEYSTORE})
	set(ANDROID_ALIAS ${ANDROID_DEBUG_ALIAS})
	set(ANDROID_STOREPASS ${ANDROID_DEBUG_STOREPASS})
	set(ANDROID_KEYPASS ${ANDROID_DEBUG_KEYPASS})
endif()

add_definitions(-DGL_GLEXT_PROTOTYPES)

set(CMAKE_C_STANDARD_LIBRARIES "-ldl -landroid -llog -lm -lz -lc -lgcc")
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}")