File: Android.cmake

package info (click to toggle)
ausweisapp2 2.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 23,632 kB
  • sloc: cpp: 114,622; python: 2,833; xml: 1,426; java: 923; sh: 186; makefile: 7
file content (137 lines) | stat: -rw-r--r-- 3,918 bytes parent folder | download
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
if("APK" IN_LIST NAMES)
	set(APK ON)
	set(PRESET ci-android-apk)
elseif(NAME MATCHES "_AAR_" OR NAME MATCHES "_AAR:")
	set(AAR ON)
	set(PRESET ci-android-aar)
else()
	step(${CMAKE_COMMAND} -DDIST_DIR=${T_DIST_DIR} -P ${CMAKE_DIR}/Merge.cmake)

	block()
		include(Files)
	endblock()
	prepare_gpg(GPG_CMD)

	set(files *-sources.jar *.aar *.pom)
	foreach(file ${files})
		file(GLOB file "${T_DIST_DIR}/${file}")
		hashsum(${file} NO_FILENAME ALGORITHM MD5 SHA1 SHA256)
		step(${GPG_CMD} -a --detach-sig -u $ENV{GPG_ID} ${file})
	endforeach()

	cmake_minimum_required(VERSION 3.29) # CMP0159

	file(GLOB POM "${T_DIST_DIR}/*.pom")
	list(LENGTH POM POM_COUNT)
	if(NOT POM_COUNT EQUAL 1)
		message(FATAL_ERROR "Cannot find unique POM file: ${POM}")
	endif()

	function(parse_pom _tag)
		file(STRINGS "${POM}" _unused REGEX "<${_tag}>(.+)</${_tag}>")
		set(${_tag} ${CMAKE_MATCH_1} PARENT_SCOPE)
		message(STATUS "Parse ${_tag}: ${CMAKE_MATCH_1}")
	endfunction()

	parse_pom(groupId)
	parse_pom(artifactId)
	parse_pom(version)

	string(REPLACE "." ";" groupId_List "${groupId}")
	list(JOIN groupId_List "/" groupId_Dir)
	list(GET groupId_List 0 groupId_RootDir)

	set(BUNDLE_DIR ${T_BUILD_DIR}/${groupId_Dir}/${artifactId}/${version})
	step(${CMAKE_COMMAND} -E make_directory ${BUNDLE_DIR})

	file(GLOB FILES "${T_DIST_DIR}/${artifactId}-*")
	foreach(file ${FILES})
		step(${CMAKE_COMMAND} -E copy_if_different ${file} ${BUNDLE_DIR})
	endforeach()

	step(${CMAKE_COMMAND} -E tar cf dist/${artifactId}-${version}.zip --format=zip ${groupId_RootDir} CHDIR ${T_BUILD_DIR})

	if(DEFINED ENV{JENKINS_HOME} AND RELEASE)
		list(APPEND CMAKE_MODULE_PATH ${CMAKE_CI_DIR}/Deploy.cmake)
		include(AAR)
	endif()
	return()
endif()

block()
	include(Files)
	include(Libraries)
endblock()

if(REVIEW)
	set(PRESET ${PRESET}-review)
endif()

if(APK AND RELEASE AND DEFINED ENV{GITLAB_CI} AND DEFINED ENV{ANDROID_API_KEY})
	set(API_JSON ${WORKSPACE}/api.json)
	download_file(${API_JSON} $ENV{ANDROID_API_KEY})
	find_package(Python REQUIRED)
	step(${Python_EXECUTABLE} ${CMAKE_SOURCE_DIR}/ci/playstore.py --json ${API_JSON} OUTPUT VERSION_CODE)
	message(STATUS "Next VERSION_CODE: ${VERSION_CODE}")
	set(VERSION_CODE -DANDROID_VERSION_CODE_BASE=${VERSION_CODE})
endif()
step(${T_CFG} ${VERSION_CODE} --preset ${PRESET})

if(APK)
	if(REVIEW OR DEFINED ENV{JENKINS_HOME})
		prepare_android_keystore(DEBUG _unused)
		step(${T_TARGET} apk)
	else()
		if(RELEASE)
			prepare_android_keystore(RELEASE STORE_APK)
		else()
			prepare_android_keystore(DEBUG STORE_APK)
		endif()

		step(${T_TARGET} apk ENV
			QT_ANDROID_KEYSTORE_PATH=${STORE_APK}
			QT_ANDROID_KEYSTORE_ALIAS=${STORE_APK_ALIAS}
			QT_ANDROID_KEYSTORE_STORE_PASS=${STORE_APK_PSW})
	endif()

	step(${T_TARGET} dump.apk)

	if(REVIEW OR (DAILY AND DEFINED ENV{JENKINS_HOME}))
		step(${T_TARGET} aab)
	else()
		if(RELEASE)
			prepare_android_keystore(UPLOAD STORE_AAB)
		else()
			prepare_android_keystore(DEBUG STORE_AAB)
		endif()

		if(DEFINED ENV{JENKINS_HOME})
			set(STORE_AAB $ENV{APK_SIGN_KEYSTORE_UPLOAD})
			set(STORE_AAB_ALIAS $ENV{APK_SIGN_KEYSTORE_ALIAS_UPLOAD})
			set(STORE_AAB_PSW $ENV{APK_SIGN_KEYSTORE_PSW_UPLOAD})
		endif()

		step(${T_TARGET} aab ENV
			QT_ANDROID_KEYSTORE_PATH=${STORE_AAB}
			QT_ANDROID_KEYSTORE_ALIAS=${STORE_AAB_ALIAS}
			QT_ANDROID_KEYSTORE_STORE_PASS=${STORE_AAB_PSW})
	endif()

	step(${T_TARGET} verify.signature)
	file(GLOB FILES "${T_DIST_DIR}/*.apk" "${T_DIST_DIR}/*.aab")
elseif(AAR)
	step(${T_TARGET} aar)
	file(GLOB FILES "${T_DIST_DIR}/*.aar")
endif()

find_program(XSLTPROC xsltproc REQUIRED)
file(GLOB LINT_RESULT "${T_BUILD_DIR}/src/android-build/build/reports/lint-results*.xml")
step(${XSLTPROC} ${CMAKE_SOURCE_DIR}/ci/lint-to-junit.xsl ${LINT_RESULT} OUTPUT_FILE ${T_BUILD_DIR}/lint-results-junit.xml)

hashsum(${FILES})

if(NOT RELEASE)
	step(${T_CTEST})

	step(grep -Fq failures=\"0\" ${T_BUILD_DIR}/lint-results-junit.xml)
endif()