MakeAndroid 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #armeabi-v7a, x86, armeabi
  2. ABI=armeabi
  3. #e.g. C:/Users/Egor/Documents/Android/ndk/android-ndk-r12b
  4. ANDK_DIR=$(subst \,/,$(ANDROID_NDK))
  5. TOOLCHAINS_VER=4.9
  6. ANDROID_API=android-15
  7. BUILD_TYPE=Release
  8. OUTPUT_DIR=Bin/Android/$(ABI)
  9. URHO3D_SRC_DIR=Urho3D/Source
  10. URHO3D_ANDROID_DIR=Urho3D/Urho3D_Android/$(ABI)
  11. TOOLCHAIN_NAME=arm-linux-androideabi-$(TOOLCHAINS_VER)
  12. ifndef OS
  13. OS=$(shell uname)
  14. endif
  15. ifeq ($(OS), Darwin)
  16. PREBUILT_DIR=darwin-x86_64
  17. MKDIR_CMD=mkdir -p
  18. else
  19. PREBUILT_DIR=windows-x86_64
  20. WINDOWS_EXT=.exe
  21. MKDIR_CMD=mkdir
  22. endif
  23. ifeq ($(ABI), x86)
  24. PLATFORM=x86
  25. TOOLCHAIN_NAME=x86-4.9
  26. ANDK_GCC=$(ANDK_DIR)/toolchains/x86-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/i686-linux-android-gcc$(WINDOWS_EXT)
  27. ANDK_GPP=$(ANDK_DIR)/toolchains/x86-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/i686-linux-android-g++$(WINDOWS_EXT)
  28. ANDK_STRIP=$(ANDK_DIR)/toolchains/x86-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/i686-linux-android-strip$(WINDOWS_EXT)
  29. else ifeq ($(ABI), x86_64)
  30. ANDROID_API=android-21
  31. PLATFORM=x86_64
  32. TOOLCHAIN_NAME=x86_64-$(TOOLCHAINS_VER)
  33. ANDK_GCC=$(ANDK_DIR)/toolchains/x86_64-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/x86_64-linux-android-gcc$(WINDOWS_EXT)
  34. ANDK_GPP=$(ANDK_DIR)/toolchains/x86_64-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/x86_64-linux-android-g++$(WINDOWS_EXT)
  35. ANDK_STRIP=$(ANDK_DIR)/toolchains/x86_64-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/x86_64-linux-android-strip$(WINDOWS_EXT)
  36. else ifeq ($(ABI), arm64-v8a)
  37. ANDROID_API=android-21
  38. PLATFORM=arm64
  39. TOOLCHAIN_NAME=aarch64-linux-android-$(TOOLCHAINS_VER)
  40. ANDK_GCC=$(ANDK_DIR)/toolchains/aarch64-linux-android-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/aarch64-linux-android-gcc$(WINDOWS_EXT)
  41. ANDK_GPP=$(ANDK_DIR)/toolchains/aarch64-linux-android-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/aarch64-linux-android-g++$(WINDOWS_EXT)
  42. ANDK_STRIP=$(ANDK_DIR)/toolchains/aarch64-linux-android-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/aarch64-linux-android-strip$(WINDOWS_EXT)
  43. else
  44. PLATFORM=arm
  45. TOOLCHAIN_NAME=arm-linux-androideabi-$(TOOLCHAINS_VER)
  46. ANDK_GCC=$(ANDK_DIR)/toolchains/arm-linux-androideabi-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/arm-linux-androideabi-gcc$(WINDOWS_EXT)
  47. ANDK_GPP=$(ANDK_DIR)/toolchains/arm-linux-androideabi-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/arm-linux-androideabi-g++$(WINDOWS_EXT)
  48. ANDK_STRIP=$(ANDK_DIR)/toolchains/arm-linux-androideabi-$(TOOLCHAINS_VER)/prebuilt/$(PREBUILT_DIR)/bin/arm-linux-androideabi-strip$(WINDOWS_EXT)
  49. endif
  50. # fixes 'error: relocation overflow in R_ARM_THM_CALL' on armeabi
  51. ifeq ($(ABI), armeabi)
  52. ABI_FLAGS= -march=armv6t2
  53. endif
  54. C_FLAGS=-fexceptions -fPIC --sysroot=$(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM) -funwind-tables -funswitch-loops -finline-limit=300 -fsigned-char -no-canonical-prefixes -fdata-sections -ffunction-sections -Wa,--noexecstack -fstack-protector -fomit-frame-pointer -fstrict-aliasing -O3 -DNDEBUG -isystem $(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM)/usr/include -isystem $(ANDK_DIR)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAINS_VER)/include -isystem $(ANDK_DIR)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAINS_VER)/libs/$(ABI)/include -isystem $(ANDK_DIR)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAINS_VER)/include/backward -I$(URHO3D_ANDROID_DIR)/include -I$(URHO3D_ANDROID_DIR)/include/Urho3D/ThirdParty -I$(URHO3D_ANDROID_DIR)/include/Urho3D/ThirdParty/Bullet -I$(URHO3D_SRC_DIR)/Source/Samples
  55. CXX_FLAGS = --sysroot=$(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM) $(ABI_FLAGS) -fpermissive -fsigned-char -funwind-tables -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -fdata-sections -ffunction-sections -frtti -funswitch-loops -finline-limit=300 -fstack-protector -fomit-frame-pointer -fstrict-aliasing -fexceptions -std=gnu++11 -Wno-invalid-offsetof -O3 -DNDEBUG -fPIC -isystem $(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM)/usr/include -isystem $(ANDK_DIR)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAINS_VER)/include -isystem $(ANDK_DIR)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAINS_VER)/libs/$(ABI)/include -isystem $(ANDK_DIR)/sources/cxx-stl/gnu-libstdc++/$(TOOLCHAINS_VER)/include/backward
  56. CXX_DEFINES = -DANDROID -DURHO3D_FILEWATCHER -DURHO3D_IK -DURHO3D_LOGGING -DURHO3D_NAVIGATION -DURHO3D_NETWORK -DURHO3D_PHYSICS -DURHO3D_PROFILING -DURHO3D_STATIC_DEFINE -DURHO3D_THREADING -DURHO3D_URHO2D
  57. CXX_INCLUDES = -isystem $(ANDK_DIR)/sources/cxx-stl/llvm-libc++/include -isystem $(ANDK_DIR)/sources/cxx-stl/llvm-libc++abi/include -isystem $(ANDK_DIR)/sources/android/support/include -IC:/prj/urho/Urho3D/Urho3D_Android/armeabi/include -I$(URHO3D_ANDROID_DIR)/include -I$(URHO3D_ANDROID_DIR)/include/Urho3D/ThirdParty -I$(URHO3D_ANDROID_DIR)/include/Urho3D/ThirdParty/Bullet -I$(URHO3D_SRC_DIR)/Source/Samples
  58. ApplicationProxy.o:
  59. $(ANDK_GPP) $(CXX_DEFINES) $(CXX_FLAGS) $(CXX_INCLUDES) -o $(OUTPUT_DIR)/ApplicationProxy.cpp.o -c Bindings/Native/ApplicationProxy.cpp
  60. Glue.o:
  61. $(ANDK_GPP) $(CXX_DEFINES) $(CXX_FLAGS) $(CXX_INCLUDES) -o $(OUTPUT_DIR)/glue.cpp.o -c Bindings/Native/glue.cpp
  62. Vector.o:
  63. $(ANDK_GPP) $(CXX_DEFINES) $(CXX_FLAGS) $(CXX_INCLUDES) -o $(OUTPUT_DIR)/Vector.cpp.o -c Bindings/Native/Vector.cpp
  64. Binding.o:
  65. $(ANDK_GPP) $(CXX_DEFINES) $(CXX_FLAGS) $(CXX_INCLUDES) -o $(OUTPUT_DIR)/binding.cpp.o -c Bindings/Portable/Generated/binding.cpp
  66. Events.o:
  67. $(ANDK_GPP) $(CXX_DEFINES) $(CXX_FLAGS) $(CXX_INCLUDES) -o $(OUTPUT_DIR)/events.cpp.o -c Bindings/Portable/Generated/events.cpp
  68. SDL.o:
  69. $(ANDK_GCC) $(CXX_DEFINES) $(C_FLAGS) -o $(OUTPUT_DIR)/SDL_android_main.c.o -c $(URHO3D_SRC_DIR)/Source/ThirdParty/SDL/src/main/android/SDL_android_main.c
  70. Urho3D_Android:
  71. rm -rf $(URHO3D_ANDROID_DIR) && $(MKDIR_CMD) "$(URHO3D_ANDROID_DIR)" && cd $(URHO3D_SRC_DIR) && cmake -E make_directory ../Urho3D_Android/$(ABI) && cmake -E chdir ../Urho3D_Android/$(ABI) cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../$(URHO3D_SRC_DIR)/CMake/Toolchains/Android.cmake .../Urho3D_Android/$(ABI) -DANDROID=1 -DANDROID_ABI=$(ABI) -DANDROID_NATIVE_API_LEVEL=$(ANDROID_API) -DANDROID_TOOLCHAIN_NAME=$(TOOLCHAIN_NAME) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DURHO3D_PCH=0 -DURHO3D_C++11=0 -DURHO3D_TOOLS=0 -DURHO3D_LUA=0 -DURHO3D_WEBP=0 -DURHO3D_ANGELSCRIPT=0 -DURHO3D_SSE=0 ../../../$(URHO3D_SRC_DIR)/
  72. libUrho3D.a: Urho3D_Android
  73. cd $(URHO3D_ANDROID_DIR) && make Urho3D
  74. MakeBinDirectory:
  75. $(MKDIR_CMD) "$(OUTPUT_DIR)"
  76. objects: MakeBinDirectory ApplicationProxy.o Glue.o Vector.o Binding.o Events.o SDL.o
  77. libmono-urho.so: libUrho3D.a objects
  78. $(ANDK_GPP) --sysroot=$(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM) $(C_DEFINES) -fPIC -fsigned-char -funwind-tables -no-canonical-prefixes -Wa,--noexecstack $(ABI_FLAGS) -Wformat -Werror=format-security -fdata-sections -ffunction-sections -frtti -fexceptions -std=gnu++11 -Wno-invalid-offsetof -O3 -DNDEBUG -Wl,--build-id -Wl,--warn-shared-textrel -Wl,-rpath-link,"$(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM)/usr/lib":"$(ANDK_DIR)/platforms/$(ANDROID_API)/arch-$(PLATFORM)/lib":"$(ANDK_DIR)/sources/cxx-stl/llvm-libc++/libs/$(ABI)" -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--fatal-warnings -Wl,--gc-sections -shared -Wl,-soname,libmono-urho.so -o $(OUTPUT_DIR)/libmono-urho.so $(OUTPUT_DIR)/ApplicationProxy.cpp.o $(OUTPUT_DIR)/Vector.cpp.o $(OUTPUT_DIR)/Glue.cpp.o $(OUTPUT_DIR)/events.cpp.o $(OUTPUT_DIR)/binding.cpp.o $(OUTPUT_DIR)/SDL_android_main.c.o $(URHO3D_ANDROID_DIR)/libs/$(ABI)/libUrho3D.a -ldl -llog -landroid -lGLESv1_CM -lGLESv2 -L$(ANDK_DIR)/sources/cxx-stl/llvm-libc++/libs/$(ABI) -Wl,-Bstatic -lc++ -Wl,-Bdynamic -Wl,-z,muldefs && cd $(OUTPUT_DIR) && rm *.o && $(ANDK_STRIP) libmono-urho.so