summaryrefslogtreecommitdiff
path: root/navit/android/CMakeLists.txt
blob: f785322973ae45209ac4893a4488c8aad21a9916 (plain)
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
if (ANDROID AND NOT ${CMAKE_GENERATOR} STREQUAL Ninja)

	FILE(GLOB SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*/*/*/*")

	foreach ( PERMISSION ${ANDROID_PERMISSIONS})
		set(ANDROID_PERMISSIONS_EXPANDED "${ANDROID_PERMISSIONS_EXPANDED}<uses-permission\tandroid:name=\\\"android.permission.${PERMISSION}\\\"/>" )
	endforeach()

	# Generate Android string resource files from gettext .po.in files.
	# Note: Android language resources should have two letter ISO 639-1 code, and, optionally, iso-3166-1-alpha-2 region code,
	# so we skip all translation files which do not conform these requirements.
	FILE(GLOB POIN_FILES1 RELATIVE ${CMAKE_SOURCE_DIR}/po "${CMAKE_SOURCE_DIR}/po/??.po.in")
	FILE(GLOB POIN_FILES2 RELATIVE ${CMAKE_SOURCE_DIR}/po "${CMAKE_SOURCE_DIR}/po/??_??.po.in")
	set(POIN_FILES ${POIN_FILES1} ${POIN_FILES2})
	foreach (POIN_FILE ${POIN_FILES})
		string(REPLACE ".po.in" "" LANG ${POIN_FILE})
		string(REPLACE "_" "-r" LANG ${LANG})
		set(LANG_RESOURCES ${LANG_RESOURCES} "${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}/strings.xml")
		compose_xslt_transform_command(TRANS "${CMAKE_CURRENT_SOURCE_DIR}/po2xml.xslt" "${CMAKE_CURRENT_SOURCE_DIR}/res/values/strings.xml" "${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}/strings.xml" "po_file=${CMAKE_SOURCE_DIR}/po/${POIN_FILE}")
		ADD_CUSTOM_COMMAND(
			OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}/strings.xml"
			DEPENDS "${CMAKE_BINARY_DIR}/po/navit.pot" "${CMAKE_SOURCE_DIR}/po/${POIN_FILE}" "${CMAKE_CURRENT_SOURCE_DIR}/po2xml.xslt" "${CMAKE_CURRENT_SOURCE_DIR}/res/values/strings.xml"
			COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}
			${TRANS}
			)
	endforeach(POIN_FILE ${POIN_FILES})

	add_custom_command (
		OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml
		DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml.cmake
		COMMAND ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml.cmake
		-D DST=${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml
		-D NAME=ANDROID_VERSION_INT
		-D ANDROID_VERSION_NAME=${PACKAGE_STRING}
		-D ANDROID_API_VERSION=${ANDROID_API_VERSION}
		-D ANDROID_PERMISSIONS:string="${ANDROID_PERMISSIONS_EXPANDED}"
		-D STRIP_M="1"
		-P ${PROJECT_SOURCE_DIR}/cmake/version.cmake
		)

	add_custom_command (
		OUTPUT build.xml
		DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml ${SRC_FILES}
		COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
		COMMAND android update project -t android-${ANDROID_API_VERSION} -p ${CMAKE_CURRENT_BINARY_DIR}
		)

	add_custom_target( android_resources
		DEPENDS build.xml ${MODULES_NAME} ${NAVIT_SUPPORT_LIBS} ${LANG_RESOURCES}
		COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/res/raw/
		COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_ARCH}
		COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/navit/libnavit.so ${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_ARCH}/
		COMMAND ${CMAKE_COMMAND}
		-D GLOB_EXP="${PROJECT_BINARY_DIR}/navit/navit*.xml"
		-D DST=${CMAKE_CURRENT_BINARY_DIR}/res/raw
		-P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
		COMMAND ${CMAKE_COMMAND}
		-D GLOB_EXP="${PROJECT_BINARY_DIR}/navit/icons/*.png"
		-D DST=${CMAKE_CURRENT_BINARY_DIR}/res/drawable-nodpi
		-D LOWER=1
		-P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
		COMMAND ${CMAKE_COMMAND}
		-D GLOB_EXP="${PROJECT_BINARY_DIR}/navit/*/*/.libs/lib[b-z]*.so"
		-D DST=${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_ARCH}
		-P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
		COMMAND ${CMAKE_COMMAND}
		-D GLOB_EXP="${PROJECT_BINARY_DIR}/po/*.mo"
		-D DST=${CMAKE_CURRENT_BINARY_DIR}/res/raw
		-D LOWER=1
		-P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
		)

	add_dependencies (android_resources images locales ${NAVIT_LIBNAME})

	add_custom_target ( apkg
		COMMAND ant debug
		)

	add_custom_target ( apkg-release
		COMMAND ant release
		)

	add_dependencies(apkg android_resources)
	add_dependencies(apkg-release android_resources)

endif(ANDROID AND NOT ${CMAKE_GENERATOR} STREQUAL Ninja)