Пример #1
0
  public void addStlImpl(
      List<CToolchain.Builder> baseToolchains, String gccVersion, boolean armThumb) {

    for (CToolchain.Builder baseToolchain : baseToolchains) {
      addStlImpl(baseToolchain, gccVersion, armThumb);
    }
  }
Пример #2
0
  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;
  }
Пример #3
0
  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;
  }
Пример #4
0
  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;
  }
Пример #5
0
 public void addStlImpl(CToolchain.Builder baseToolchain, String gccVersion) {
   addStlImpl(baseToolchain, gccVersion, false);
 }
Пример #6
0
  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;
  }