make_android.bat 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. @echo off
  2. set ANDROID_PLATFORM=21
  3. set /p ANDROID_PLATFORM="Enter Android platform - Enter to use %ANDROID_PLATFORM%: "
  4. set ANDROID_ABI=armeabi-v7a
  5. set /p ANDROID_ABI="Enter Android ABI ( armeabi-v7a, arm64-v8a , x86 , x86_64 ) - Enter to use %ANDROID_ABI% : "
  6. set COMMON_CXX_FLAGS=-DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fexceptions -frtti -stdlib=libc++
  7. set COMMON_C_FLAGS=-DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fexceptions
  8. if %ANDROID_ABI% == armeabi-v7a (
  9. set CXX_FLAGS="%COMMON_CXX_FLAGS% -march=armv7-a -mthumb --target=armv7-none-linux-androideabi%ANDROID_PLATFORM%"
  10. set C_FLAGS="%COMMON_C_FLAGS% -march=armv7-a -mthumb --target=armv7-none-linux-androideabi%ANDROID_PLATFORM%"
  11. )
  12. if %ANDROID_ABI% == arm64-v8a (
  13. set CXX_FLAGS="%COMMON_CXX_FLAGS% -march=armv8-a --target=aarch64-none-linux-android%ANDROID_PLATFORM%"
  14. set C_FLAGS="%COMMON_C_FLAGS% -march=armv8-a --target=aarch64-none-linux-android%ANDROID_PLATFORM%"
  15. )
  16. if %ANDROID_ABI% == x86 (
  17. set CXX_FLAGS="%COMMON_CXX_FLAGS% --target=i686-none-linux-android%ANDROID_PLATFORM%"
  18. set C_FLAGS="%COMMON_C_FLAGS% --target=i686-none-linux-android%ANDROID_PLATFORM%"
  19. )
  20. if %ANDROID_ABI% == x86_64 (
  21. set CXX_FLAGS="%COMMON_CXX_FLAGS%"
  22. set C_FLAGS="%COMMON_C_FLAGS%"
  23. )
  24. set CMAKE_PATH="%ProgramFiles%\CMake\bin\cmake.exe"
  25. if exist %CMAKE_PATH% (
  26. echo Found cmake at %CMAKE_PATH%
  27. ) else (
  28. set /p CMAKE_PATH="Enter cmake.exe path: "
  29. )
  30. set ANDROID_NDK_PATH=""
  31. FOR /F "tokens=* USEBACKQ" %%F IN (`dir "%LocalAppData%\Android\Sdk\ndk" /b /o:n /a:d`) DO (
  32. SET ANDROID_NDK_PATH="%LocalAppData%\Android\Sdk\ndk\%%F"
  33. )
  34. if exist %ANDROID_NDK_PATH% (
  35. echo Found NDK at %ANDROID_NDK_PATH%
  36. ) else (
  37. set /p ANDROID_NDK_PATH="Enter ndk path: "
  38. )
  39. set BUILD_FOLDER=build
  40. rmdir /s /q %BUILD_FOLDER%
  41. mkdir %BUILD_FOLDER%
  42. %CMAKE_PATH% ^
  43. -G"Unix Makefiles" ^
  44. -DCMAKE_BUILD_TYPE=Release ^
  45. -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK_PATH%\build\cmake\android.toolchain.cmake ^
  46. -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_PATH%\prebuilt\windows-x86_64\bin\make.exe ^
  47. -DANDROID_NDK=%ANDROID_NDK_PATH% ^
  48. -DOPERATING_SYSTEM="Android" ^
  49. -DANDROID_PLATFORM=%ANDROID_PLATFORM% ^
  50. -DANDROID_ABI=%ANDROID_ABI% ^
  51. -DASSIMP_ANDROID_JNIIOSYSTEM=ON ^
  52. -DASSIMP_BUILD_TESTS=OFF ^
  53. -DCMAKE_CXX_FLAGS=%CXX_FLAGS% ^
  54. -DMAKE_C_FLAGS=%C_FLAGS% ^
  55. -S "..\.." ^
  56. -B ".\%BUILD_FOLDER%\"
  57. %CMAKE_PATH% --build ".\%BUILD_FOLDER%\"" -- -j 4"
  58. set OUTPUT_FOLDER=.\output\
  59. mkdir %OUTPUT_FOLDER%
  60. mkdir "%OUTPUT_FOLDER%\lib\%ANDROID_ABI%"
  61. copy "%BUILD_FOLDER%\bin\libassimp.so" "%OUTPUT_FOLDER%\lib\%ANDROID_ABI%\"
  62. xcopy %BUILD_FOLDER%\include\assimp\ %OUTPUT_FOLDER%\include\assimp\ /y /s /e
  63. xcopy ..\..\include\assimp\ %OUTPUT_FOLDER%\include\assimp\ /y /s /e
  64. rmdir /s /q %BUILD_FOLDER%