private List<CToolchain.Builder> createArmeabiClangToolchain(String clangVersion, boolean thumb) { ImmutableList<CToolchain.Builder> toolchains = ImmutableList.<CToolchain.Builder>builder() .add( createBaseArmeabiClangToolchain(clangVersion, thumb) .setToolchainIdentifier( createArmeabiName("arm-linux-androideabi-clang%s", clangVersion, thumb)) .setTargetCpu(createArmeabiCpuName("armeabi", thumb)) .addCompilerFlag("-target") .addCompilerFlag("armv5te-none-linux-androideabi") // LLVM_TRIPLE .addCompilerFlag("-march=armv5te") .addCompilerFlag("-mtune=xscale") .addCompilerFlag("-msoft-float") .addLinkerFlag("-target") // LLVM_TRIPLE .addLinkerFlag("armv5te-none-linux-androideabi")) .add( createBaseArmeabiClangToolchain(clangVersion, thumb) .setToolchainIdentifier( createArmeabiName("arm-linux-androideabi-clang%s-v7a", clangVersion, thumb)) .setTargetCpu(createArmeabiCpuName("armeabi-v7a", thumb)) .addCompilerFlag("-target") .addCompilerFlag("armv7-none-linux-androideabi") // LLVM_TRIPLE .addCompilerFlag("-march=armv7-a") .addCompilerFlag("-mfloat-abi=softfp") .addCompilerFlag("-mfpu=vfpv3-d16") .addLinkerFlag("-target") .addLinkerFlag("armv7-none-linux-androideabi") // LLVM_TRIPLE .addLinkerFlag("-Wl,--fix-cortex-a8")) .add( createBaseArmeabiClangToolchain(clangVersion, thumb) .setToolchainIdentifier( createArmeabiName( "arm-linux-androideabi-clang%s-v7a-hard", clangVersion, thumb)) .setTargetCpu(createArmeabiCpuName("armeabi-v7a-hard", thumb)) .addCompilerFlag("-target") .addCompilerFlag("armv7-none-linux-androideabi") // LLVM_TRIPLE .addCompilerFlag("-march=armv7-a") .addCompilerFlag("-mfpu=vfpv3-d16") .addCompilerFlag("-mhard-float") .addCompilerFlag("-D_NDK_MATH_NO_SOFTFP=1") .addLinkerFlag("-target") .addLinkerFlag("armv7-none-linux-androideabi") // LLVM_TRIPLE .addLinkerFlag("-Wl,--fix-cortex-a8") .addLinkerFlag("-Wl,--no-warn-mismatch") .addLinkerFlag("-lm_hard")) .build(); stlImpl.addStlImpl(toolchains, "4.9"); return toolchains; }
private CToolchain.Builder createAarch64Toolchain() { String toolchainName = "aarch64-linux-android-4.9"; String targetPlatform = "aarch64-linux-android"; CToolchain.Builder toolchain = CToolchain.newBuilder() .setToolchainIdentifier("aarch64-linux-android-4.9") .setTargetSystemName("aarch64-linux-android") .setTargetCpu("arm64-v8a") .setCompiler("gcc-4.9") .addAllToolPath(ndkPaths.createToolpaths(toolchainName, targetPlatform)) .setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm64")) // Compiler flags .addCompilerFlag("-fpic") .addCompilerFlag("-ffunction-sections") .addCompilerFlag("-funwind-tables") .addCompilerFlag("-fstack-protector-strong") .addCompilerFlag("-no-canonical-prefixes") .addCompilerFlag("-fno-canonical-system-headers") // Linker flags .addLinkerFlag("-no-canonical-prefixes") // Additional release flags .addCompilationModeFlags( CompilationModeFlags.newBuilder() .setMode(CompilationMode.OPT) .addCompilerFlag("-O2") .addCompilerFlag("-g") .addCompilerFlag("-DNDEBUG") .addCompilerFlag("-fomit-frame-pointer") .addCompilerFlag("-fstrict-aliasing") .addCompilerFlag("-funswitch-loops") .addCompilerFlag("-finline-limit=300")) // Additional debug flags .addCompilationModeFlags( CompilationModeFlags.newBuilder() .setMode(CompilationMode.DBG) .addCompilerFlag("-O0") .addCompilerFlag("-UNDEBUG") .addCompilerFlag("-fno-omit-frame-pointer") .addCompilerFlag("-fno-strict-aliasing")); ndkPaths.addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, "4.9"); stlImpl.addStlImpl(toolchain, "4.9"); return toolchain; }
private List<CToolchain.Builder> createArmeabiToolchains( String gccVersion, String stackProtectorFlag, boolean thumb, CppConfiguration.Tool... excludedTools) { ImmutableList<CToolchain.Builder> toolchains = ImmutableList.<CToolchain.Builder>builder() .add( createBaseArmeabiToolchain(thumb, gccVersion, stackProtectorFlag, excludedTools) .setToolchainIdentifier( createArmeabiName("arm-linux-androideabi-%s", gccVersion, thumb)) .setTargetCpu(createArmeabiCpuName("armeabi", thumb)) .addCompilerFlag("-march=armv5te") .addCompilerFlag("-mtune=xscale") .addCompilerFlag("-msoft-float")) .add( createBaseArmeabiToolchain(thumb, gccVersion, stackProtectorFlag, excludedTools) .setToolchainIdentifier( createArmeabiName("arm-linux-androideabi-%s-v7a", gccVersion, thumb)) .setTargetCpu(createArmeabiCpuName("armeabi-v7a", thumb)) .addCompilerFlag("-march=armv7-a") .addCompilerFlag("-mfpu=vfpv3-d16") .addCompilerFlag("-mfloat-abi=softfp") .addLinkerFlag("-march=armv7-a") .addLinkerFlag("-Wl,--fix-cortex-a8")) .add( createBaseArmeabiToolchain(thumb, gccVersion, stackProtectorFlag, excludedTools) .setToolchainIdentifier( createArmeabiName("arm-linux-androideabi-%s-v7a-hard", gccVersion, thumb)) .setTargetCpu(createArmeabiCpuName("armeabi-v7a-hard", thumb)) .addCompilerFlag("-march=armv7-a") .addCompilerFlag("-mfpu=vfpv3-d16") .addCompilerFlag("-mhard-float") .addCompilerFlag("-D_NDK_MATH_NO_SOFTFP=1") .addLinkerFlag("-march=armv7-a") .addLinkerFlag("-Wl,--fix-cortex-a8") .addLinkerFlag("-Wl,--no-warn-mismatch") .addLinkerFlag("-lm_hard")) .build(); stlImpl.addStlImpl(toolchains, gccVersion); return toolchains; }
private CToolchain.Builder createAarch64ClangToolchain(String clangVersion) { String toolchainName = "aarch64-linux-android-4.9"; String targetPlatform = "aarch64-linux-android"; String gccToolchain = ndkPaths.createGccToolchainPath(toolchainName); String llvmTriple = "aarch64-none-linux-android"; CToolchain.Builder toolchain = CToolchain.newBuilder() .setToolchainIdentifier("aarch64-linux-android-clang" + clangVersion) .setTargetSystemName("aarch64-linux-android") .setTargetCpu("arm64-v8a") .setCompiler("clang" + clangVersion) .addAllToolPath( ndkPaths.createClangToolpaths(toolchainName, targetPlatform, clangVersion)) .setBuiltinSysroot(ndkPaths.createBuiltinSysroot("arm64")) // Compiler flags .addCompilerFlag("-gcc-toolchain") .addCompilerFlag(gccToolchain) .addCompilerFlag("-target") .addCompilerFlag(llvmTriple) .addCompilerFlag("-ffunction-sections") .addCompilerFlag("-funwind-tables") .addCompilerFlag("-fstack-protector-strong") .addCompilerFlag("-fpic") .addCompilerFlag("-Wno-invalid-command-line-argument") .addCompilerFlag("-Wno-unused-command-line-argument") .addCompilerFlag("-no-canonical-prefixes") .addCompilerFlag("-fno-canonical-system-headers") // Linker flags .addLinkerFlag("-gcc-toolchain") .addLinkerFlag(gccToolchain) .addLinkerFlag("-target") .addLinkerFlag(llvmTriple) .addLinkerFlag("-no-canonical-prefixes") // Additional release flags .addCompilationModeFlags( CompilationModeFlags.newBuilder() .setMode(CompilationMode.OPT) .addCompilerFlag("-O2") .addCompilerFlag("-g") .addCompilerFlag("-DNDEBUG") .addCompilerFlag("-fomit-frame-pointer") .addCompilerFlag("-fstrict-aliasing")) // Additional debug flags .addCompilationModeFlags( CompilationModeFlags.newBuilder() .setMode(CompilationMode.DBG) .addCompilerFlag("-O0") .addCompilerFlag("-UNDEBUG") .addCompilerFlag("-fno-omit-frame-pointer") .addCompilerFlag("-fno-strict-aliasing")); ndkPaths.addToolchainIncludePaths(toolchain, toolchainName, targetPlatform, "4.9"); stlImpl.addStlImpl(toolchain, "4.9"); return toolchain; }