android.cmake 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. set(ANDROID_NDK_ROOT ${ANDROID_NDK})
  2. if (VERBOSE)
  3. set(ANT_FLAGS -v)
  4. set(ZIPALIGN_FLAGS -v)
  5. set(KEYTOOL_FLAGS -v)
  6. set(ANDROID_TOOL_FLAGS "${ANDROID_TOOL_FLAGS} -v")
  7. endif()
  8. if (GRADLE)
  9. set(ANDROID_TOOL_FLAGS "${ANDROID_TOOL_FLAGS} -g")
  10. endif()
  11. if (NOT ANDROID_NDK_ROOT)
  12. message(FATAL_ERROR "ANDROID_NDK environment variable is not set")
  13. endif()
  14. message(STATUS "Android NDK root: ${ANDROID_NDK_ROOT}")
  15. if (RELEASE)
  16. set(ANT_TARGET release)
  17. set(ANT_INSTALL_TARGET installr)
  18. set(MANIFEST_DEBUGGABLE false)
  19. else()
  20. set(ANT_TARGET debug)
  21. set(ANT_INSTALL_TARGET installd)
  22. set(MANIFEST_DEBUGGABLE true)
  23. endif()
  24. # find the ant tool
  25. find_host_program(ANDROID_ANT ant)
  26. if (ANDROID_ANT)
  27. message(STATUS "ant found")
  28. else()
  29. message(FATAL_ERROR "ant not found in path!")
  30. endif()
  31. if (GRADLE)
  32. find_host_program(ANDROID_GRADLE gradle)
  33. if (ANDROID_GRADLE)
  34. message(STATUS "gradle found")
  35. else()
  36. message(FATAL_ERROR "gradle not found in path!")
  37. endif()
  38. endif()
  39. find_host_program(JARSIGNER "jarsigner")
  40. find_host_program(ANDROID_NDK_STACK "ndk-stack" HINTS ${ANDROID_NDK_ROOT})
  41. find_host_program(ANDROID_ADB adb)
  42. if (ANDROID_ADB)
  43. message(STATUS "adb tool found")
  44. else()
  45. message(FATAL_ERROR "adb tool not found in path!")
  46. endif()
  47. set(DEBUG_KEYSTORES "$ENV{HOME}/.android/debug.keystore" "$ENV{HOMEPATH}/.android/debug.keystore")
  48. foreach(DEBUG_KEYSTORE ${DEBUG_KEYSTORES})
  49. if (EXISTS ${DEBUG_KEYSTORE})
  50. set(ANDROID_DEBUG_KEYSTORE ${DEBUG_KEYSTORE})
  51. endif()
  52. endforeach()
  53. set(ANDROID_DEBUG_ALIAS androiddebugkey)
  54. set(ANDROID_DEBUG_STOREPASS android)
  55. set(ANDROID_DEBUG_KEYPASS android)
  56. if ("${ANDROID_DEBUG_KEYSTORE}" STREQUAL "")
  57. find_host_program(KEYTOOL keytool)
  58. if (KEYTOOL)
  59. 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}")
  60. file(MAKE_DIRECTORY $ENV{HOME}/.android)
  61. 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)
  62. execute_process(COMMAND ${KEYTOOL} --help)
  63. message(STATUS "keytool exited with ${exitcode}")
  64. set(DEBUG_KEYSTORE "$ENV{HOME}/.android/debug.keystore")
  65. if (NOT EXISTS ${DEBUG_KEYSTORE})
  66. message(FATAL_ERROR "Could not create debug keystore")
  67. else()
  68. set(ANDROID_DEBUG_KEYSTORE ${DEBUG_KEYSTORE})
  69. endif()
  70. else()
  71. message(FATAL_ERROR "keytool not found in path! no debug keystore found")
  72. endif()
  73. else()
  74. message(STATUS "Found android debug keystore at ${ANDROID_DEBUG_KEYSTORE}")
  75. endif()
  76. set(ANDROID_RELEASE_KEYSTORE $ENV{SHERVANATOR_KEYSTORE_PATH})
  77. set(ANDROID_RELEASE_ALIAS Shervanator)
  78. set(ANDROID_RELEASE_STOREPASS $ENV{SHERVANATOR_KEYSTORE_PASSWD})
  79. set(ANDROID_RELEASE_KEYPASS $ENV{SHERVANATOR_ALIAS_PASSWD})
  80. if (RELEASE)
  81. if (NOT DEFINED ENV{SHERVANATOR_KEYSTORE_PASSWD})
  82. message(FATAL_ERROR "No keystore password set")
  83. endif()
  84. if (NOT DEFINED ENV{SHERVANATOR_KEYSTORE_PATH})
  85. message(FATAL_ERROR "No keystore path set")
  86. endif()
  87. set(ANDROID_KEYSTORE ${ANDROID_RELEASE_KEYSTORE})
  88. set(ANDROID_ALIAS ${ANDROID_RELEASE_ALIAS})
  89. set(ANDROID_STOREPASS ${ANDROID_RELEASE_STOREPASS})
  90. set(ANDROID_KEYPASS ${ANDROID_RELEASE_KEYPASS})
  91. else()
  92. set(ANDROID_KEYSTORE ${ANDROID_DEBUG_KEYSTORE})
  93. set(ANDROID_ALIAS ${ANDROID_DEBUG_ALIAS})
  94. set(ANDROID_STOREPASS ${ANDROID_DEBUG_STOREPASS})
  95. set(ANDROID_KEYPASS ${ANDROID_DEBUG_KEYPASS})
  96. endif()
  97. add_definitions(-DGL_GLEXT_PROTOTYPES)
  98. set(CMAKE_C_STANDARD_LIBRARIES "-landroid -llog -lGLESv1_CM -lGLESv2")
  99. set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}")