summaryrefslogtreecommitdiff
path: root/navit/android/CMakeLists.txt
blob: ca3bdbfa4a7f83eb998f2713f00f056d5c58a050 (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)

   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/xpm/*.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)