2016-07-29 22:44:28 +02:00
|
|
|
// Copyright 2016 Google Inc. All rights reserved.
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
//
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
package config
|
2015-01-31 02:27:36 +01:00
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
|
2016-05-19 00:37:25 +02:00
|
|
|
"android/soong/android"
|
2015-01-31 02:27:36 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
linuxCflags = []string{
|
|
|
|
"-Wa,--noexecstack",
|
|
|
|
|
|
|
|
"-fPIC",
|
|
|
|
|
|
|
|
"-U_FORTIFY_SOURCE",
|
2015-09-12 02:41:10 +02:00
|
|
|
"-D_FORTIFY_SOURCE=2",
|
2015-04-28 22:30:13 +02:00
|
|
|
"-fstack-protector",
|
2015-01-31 02:27:36 +01:00
|
|
|
|
|
|
|
// Workaround differences in inttypes.h between host and target.
|
|
|
|
//See bug 12708004.
|
|
|
|
"-D__STDC_FORMAT_MACROS",
|
|
|
|
"-D__STDC_CONSTANT_MACROS",
|
2021-07-15 02:03:16 +02:00
|
|
|
|
|
|
|
"--gcc-toolchain=${LinuxGccRoot}",
|
2021-07-24 00:20:29 +02:00
|
|
|
"-fstack-protector-strong",
|
2021-07-19 23:11:03 +02:00
|
|
|
}
|
|
|
|
|
2021-07-24 00:23:07 +02:00
|
|
|
linuxGlibcCflags = []string{
|
|
|
|
"--sysroot ${LinuxGccRoot}/sysroot",
|
|
|
|
}
|
|
|
|
|
|
|
|
linuxMuslCflags = []string{
|
|
|
|
"-D_LIBCPP_HAS_MUSL_LIBC",
|
2021-08-16 23:42:53 +02:00
|
|
|
"-DANDROID_HOST_MUSL",
|
2021-07-24 00:23:07 +02:00
|
|
|
"-nostdlibinc",
|
|
|
|
}
|
|
|
|
|
2015-01-31 02:27:36 +01:00
|
|
|
linuxLdflags = []string{
|
|
|
|
"-Wl,-z,noexecstack",
|
|
|
|
"-Wl,-z,relro",
|
|
|
|
"-Wl,-z,now",
|
2015-12-09 22:05:28 +01:00
|
|
|
"-Wl,--no-undefined-version",
|
2021-07-15 02:03:16 +02:00
|
|
|
|
|
|
|
"--gcc-toolchain=${LinuxGccRoot}",
|
2021-07-24 00:23:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
linuxGlibcLdflags = []string{
|
2021-07-15 02:03:16 +02:00
|
|
|
"--sysroot ${LinuxGccRoot}/sysroot",
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-24 00:23:07 +02:00
|
|
|
linuxMuslLdflags = []string{
|
|
|
|
"-nostdlib",
|
|
|
|
"-lgcc", "-lgcc_eh",
|
|
|
|
}
|
|
|
|
|
2015-01-31 02:27:36 +01:00
|
|
|
// Extended cflags
|
|
|
|
linuxX86Cflags = []string{
|
|
|
|
"-msse3",
|
|
|
|
"-m32",
|
|
|
|
"-march=prescott",
|
2015-09-12 02:41:10 +02:00
|
|
|
"-D_FILE_OFFSET_BITS=64",
|
|
|
|
"-D_LARGEFILE_SOURCE=1",
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
linuxX8664Cflags = []string{
|
|
|
|
"-m64",
|
|
|
|
}
|
|
|
|
|
|
|
|
linuxX86Ldflags = []string{
|
|
|
|
"-m32",
|
2016-07-29 22:44:28 +02:00
|
|
|
"-B${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}/32",
|
|
|
|
"-L${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}/32",
|
|
|
|
"-L${LinuxGccRoot}/${LinuxGccTriple}/lib32",
|
2021-07-15 02:03:16 +02:00
|
|
|
}
|
2018-04-17 23:16:05 +02:00
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
linuxX8664Ldflags = []string{
|
|
|
|
"-m64",
|
2016-07-29 22:44:28 +02:00
|
|
|
"-B${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}",
|
|
|
|
"-L${LinuxGccRoot}/lib/gcc/${LinuxGccTriple}/${LinuxGccVersion}",
|
|
|
|
"-L${LinuxGccRoot}/${LinuxGccTriple}/lib64",
|
2021-07-15 02:03:16 +02:00
|
|
|
}
|
2018-04-17 23:16:05 +02:00
|
|
|
|
2016-05-25 23:47:21 +02:00
|
|
|
linuxAvailableLibraries = addPrefix([]string{
|
|
|
|
"c",
|
|
|
|
"dl",
|
|
|
|
"gcc",
|
|
|
|
"gcc_s",
|
|
|
|
"m",
|
|
|
|
"ncurses",
|
|
|
|
"pthread",
|
|
|
|
"resolv",
|
|
|
|
"rt",
|
|
|
|
"util",
|
|
|
|
}, "-l")
|
2021-07-24 00:23:07 +02:00
|
|
|
|
2021-08-18 22:55:01 +02:00
|
|
|
muslCrtBeginStaticBinary, muslCrtEndStaticBinary = []string{"libc_musl_crtbegin_static"}, []string{"libc_musl_crtend"}
|
2021-07-24 00:23:07 +02:00
|
|
|
muslCrtBeginSharedBinary, muslCrtEndSharedBinary = []string{"libc_musl_crtbegin_dynamic", "musl_linker_script"}, []string{"libc_musl_crtend"}
|
|
|
|
muslCrtBeginSharedLibrary, muslCrtEndSharedLibrary = []string{"libc_musl_crtbegin_so"}, []string{"libc_musl_crtend_so"}
|
|
|
|
|
2021-08-02 22:17:13 +02:00
|
|
|
muslDefaultSharedLibraries = []string{"libc_musl"}
|
2015-01-31 02:27:36 +01:00
|
|
|
)
|
|
|
|
|
2015-12-07 21:30:44 +01:00
|
|
|
const (
|
2019-01-23 22:59:10 +01:00
|
|
|
linuxGccVersion = "4.8.3"
|
|
|
|
linuxGlibcVersion = "2.17"
|
2015-12-07 21:30:44 +01:00
|
|
|
)
|
|
|
|
|
2015-01-31 02:27:36 +01:00
|
|
|
func init() {
|
2021-10-14 20:08:38 +02:00
|
|
|
exportStringStaticVariable("LinuxGccVersion", linuxGccVersion)
|
|
|
|
exportStringStaticVariable("LinuxGlibcVersion", linuxGlibcVersion)
|
|
|
|
|
2019-01-23 22:59:10 +01:00
|
|
|
// Most places use the full GCC version. A few only use up to the first two numbers.
|
|
|
|
if p := strings.Split(linuxGccVersion, "."); len(p) > 2 {
|
2021-10-14 20:08:38 +02:00
|
|
|
exportStringStaticVariable("ShortLinuxGccVersion", strings.Join(p[:2], "."))
|
2019-01-23 22:59:10 +01:00
|
|
|
} else {
|
2021-10-14 20:08:38 +02:00
|
|
|
exportStringStaticVariable("ShortLinuxGccVersion", linuxGccVersion)
|
2019-01-23 22:59:10 +01:00
|
|
|
}
|
2015-01-31 02:27:36 +01:00
|
|
|
|
2021-10-14 20:08:38 +02:00
|
|
|
exportSourcePathVariable("LinuxGccRoot",
|
|
|
|
"prebuilts/gcc/linux-x86/host/x86_64-linux-glibc${LinuxGlibcVersion}-${ShortLinuxGccVersion}")
|
|
|
|
|
|
|
|
exportStringListStaticVariable("LinuxGccTriple", []string{"x86_64-linux"})
|
|
|
|
|
|
|
|
exportStringListStaticVariable("LinuxCflags", linuxCflags)
|
|
|
|
exportStringListStaticVariable("LinuxLdflags", linuxLdflags)
|
|
|
|
exportStringListStaticVariable("LinuxLldflags", linuxLdflags)
|
|
|
|
exportStringListStaticVariable("LinuxGlibcCflags", linuxGlibcCflags)
|
|
|
|
exportStringListStaticVariable("LinuxGlibcLdflags", linuxGlibcLdflags)
|
|
|
|
exportStringListStaticVariable("LinuxGlibcLldflags", linuxGlibcLdflags)
|
|
|
|
exportStringListStaticVariable("LinuxMuslCflags", linuxMuslCflags)
|
|
|
|
exportStringListStaticVariable("LinuxMuslLdflags", linuxMuslLdflags)
|
|
|
|
exportStringListStaticVariable("LinuxMuslLldflags", linuxMuslLdflags)
|
|
|
|
|
|
|
|
exportStringListStaticVariable("LinuxX86Cflags", linuxX86Cflags)
|
|
|
|
exportStringListStaticVariable("LinuxX8664Cflags", linuxX8664Cflags)
|
|
|
|
exportStringListStaticVariable("LinuxX86Ldflags", linuxX86Ldflags)
|
|
|
|
exportStringListStaticVariable("LinuxX86Lldflags", linuxX86Ldflags)
|
|
|
|
exportStringListStaticVariable("LinuxX8664Ldflags", linuxX8664Ldflags)
|
|
|
|
exportStringListStaticVariable("LinuxX8664Lldflags", linuxX8664Ldflags)
|
2017-10-05 02:31:43 +02:00
|
|
|
// Yasm flags
|
2021-10-14 20:08:38 +02:00
|
|
|
exportStringListStaticVariable("LinuxX86YasmFlags", []string{"-f elf32 -m x86"})
|
|
|
|
exportStringListStaticVariable("LinuxX8664YasmFlags", []string{"-f elf64 -m amd64"})
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinux struct {
|
|
|
|
cFlags, ldFlags string
|
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinuxX86 struct {
|
|
|
|
toolchain32Bit
|
|
|
|
toolchainLinux
|
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinuxX8664 struct {
|
|
|
|
toolchain64Bit
|
|
|
|
toolchainLinux
|
|
|
|
}
|
|
|
|
|
2015-03-19 07:38:50 +01:00
|
|
|
func (t *toolchainLinuxX86) Name() string {
|
|
|
|
return "x86"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxX8664) Name() string {
|
|
|
|
return "x86_64"
|
|
|
|
}
|
|
|
|
|
2015-01-31 02:27:36 +01:00
|
|
|
func (t *toolchainLinux) GccRoot() string {
|
2016-07-29 22:44:28 +02:00
|
|
|
return "${config.LinuxGccRoot}"
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinux) GccTriple() string {
|
2016-07-29 22:44:28 +02:00
|
|
|
return "${config.LinuxGccTriple}"
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2015-03-19 07:38:50 +01:00
|
|
|
func (t *toolchainLinux) GccVersion() string {
|
2015-12-07 21:30:44 +01:00
|
|
|
return linuxGccVersion
|
2015-03-19 07:38:50 +01:00
|
|
|
}
|
|
|
|
|
2015-01-31 02:27:36 +01:00
|
|
|
func (t *toolchainLinux) IncludeFlags() string {
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxX86) ClangTriple() string {
|
|
|
|
return "i686-linux-gnu"
|
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX86) Cflags() string {
|
2021-07-15 03:45:05 +02:00
|
|
|
return "${config.LinuxCflags} ${config.LinuxX86Cflags}"
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX86) Cppflags() string {
|
2018-07-27 00:27:53 +02:00
|
|
|
return ""
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxX8664) ClangTriple() string {
|
|
|
|
return "x86_64-linux-gnu"
|
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX8664) Cflags() string {
|
2021-07-15 03:45:05 +02:00
|
|
|
return "${config.LinuxCflags} ${config.LinuxX8664Cflags}"
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX8664) Cppflags() string {
|
2018-07-27 00:27:53 +02:00
|
|
|
return ""
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX86) Ldflags() string {
|
2021-07-15 03:45:05 +02:00
|
|
|
return "${config.LinuxLdflags} ${config.LinuxX86Ldflags}"
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX86) Lldflags() string {
|
2021-07-15 03:45:05 +02:00
|
|
|
return "${config.LinuxLldflags} ${config.LinuxX86Lldflags}"
|
2018-04-03 20:33:34 +02:00
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX8664) Ldflags() string {
|
2021-07-15 03:45:05 +02:00
|
|
|
return "${config.LinuxLdflags} ${config.LinuxX8664Ldflags}"
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-15 02:03:16 +02:00
|
|
|
func (t *toolchainLinuxX8664) Lldflags() string {
|
2021-07-15 03:45:05 +02:00
|
|
|
return "${config.LinuxLldflags} ${config.LinuxX8664Lldflags}"
|
2018-04-03 20:33:34 +02:00
|
|
|
}
|
|
|
|
|
2017-10-05 02:31:43 +02:00
|
|
|
func (t *toolchainLinuxX86) YasmFlags() string {
|
|
|
|
return "${config.LinuxX86YasmFlags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxX8664) YasmFlags() string {
|
|
|
|
return "${config.LinuxX8664YasmFlags}"
|
|
|
|
}
|
|
|
|
|
2019-07-15 18:34:09 +02:00
|
|
|
func (toolchainLinuxX86) LibclangRuntimeLibraryArch() string {
|
2020-02-19 21:24:02 +01:00
|
|
|
return "i386"
|
2019-07-15 18:34:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainLinuxX8664) LibclangRuntimeLibraryArch() string {
|
|
|
|
return "x86_64"
|
|
|
|
}
|
|
|
|
|
2016-05-25 23:47:21 +02:00
|
|
|
func (t *toolchainLinux) AvailableLibraries() []string {
|
|
|
|
return linuxAvailableLibraries
|
|
|
|
}
|
|
|
|
|
2021-07-24 00:23:07 +02:00
|
|
|
// glibc specialization of the linux toolchain
|
|
|
|
|
|
|
|
type toolchainGlibc struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainGlibc) Glibc() bool { return true }
|
|
|
|
|
|
|
|
func (toolchainGlibc) Cflags() string {
|
|
|
|
return "${config.LinuxGlibcCflags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainGlibc) Ldflags() string {
|
|
|
|
return "${config.LinuxGlibcLdflags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainGlibc) Lldflags() string {
|
|
|
|
return "${config.LinuxGlibcLldflags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinuxGlibcX86 struct {
|
|
|
|
toolchainLinuxX86
|
|
|
|
toolchainGlibc
|
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinuxGlibcX8664 struct {
|
|
|
|
toolchainLinuxX8664
|
|
|
|
toolchainGlibc
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxGlibcX86) Cflags() string {
|
|
|
|
return t.toolchainLinuxX86.Cflags() + " " + t.toolchainGlibc.Cflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxGlibcX86) Ldflags() string {
|
|
|
|
return t.toolchainLinuxX86.Ldflags() + " " + t.toolchainGlibc.Ldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxGlibcX86) Lldflags() string {
|
|
|
|
return t.toolchainLinuxX86.Lldflags() + " " + t.toolchainGlibc.Lldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxGlibcX8664) Cflags() string {
|
|
|
|
return t.toolchainLinuxX8664.Cflags() + " " + t.toolchainGlibc.Cflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxGlibcX8664) Ldflags() string {
|
|
|
|
return t.toolchainLinuxX8664.Ldflags() + " " + t.toolchainGlibc.Ldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxGlibcX8664) Lldflags() string {
|
|
|
|
return t.toolchainLinuxX8664.Lldflags() + " " + t.toolchainGlibc.Lldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
var toolchainLinuxGlibcX86Singleton Toolchain = &toolchainLinuxGlibcX86{}
|
|
|
|
var toolchainLinuxGlibcX8664Singleton Toolchain = &toolchainLinuxGlibcX8664{}
|
|
|
|
|
|
|
|
func linuxGlibcX86ToolchainFactory(arch android.Arch) Toolchain {
|
|
|
|
return toolchainLinuxGlibcX86Singleton
|
|
|
|
}
|
|
|
|
|
|
|
|
func linuxGlibcX8664ToolchainFactory(arch android.Arch) Toolchain {
|
|
|
|
return toolchainLinuxGlibcX8664Singleton
|
|
|
|
}
|
|
|
|
|
|
|
|
// musl specialization of the linux toolchain
|
|
|
|
|
|
|
|
type toolchainMusl struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainMusl) Musl() bool { return true }
|
|
|
|
|
|
|
|
func (toolchainMusl) CrtBeginStaticBinary() []string { return muslCrtBeginStaticBinary }
|
|
|
|
func (toolchainMusl) CrtBeginSharedBinary() []string { return muslCrtBeginSharedBinary }
|
|
|
|
func (toolchainMusl) CrtBeginSharedLibrary() []string { return muslCrtBeginSharedLibrary }
|
|
|
|
func (toolchainMusl) CrtEndStaticBinary() []string { return muslCrtEndStaticBinary }
|
|
|
|
func (toolchainMusl) CrtEndSharedBinary() []string { return muslCrtEndSharedBinary }
|
|
|
|
func (toolchainMusl) CrtEndSharedLibrary() []string { return muslCrtEndSharedLibrary }
|
|
|
|
|
|
|
|
func (toolchainMusl) DefaultSharedLibraries() []string { return muslDefaultSharedLibraries }
|
|
|
|
|
|
|
|
func (toolchainMusl) Cflags() string {
|
|
|
|
return "${config.LinuxMuslCflags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainMusl) Ldflags() string {
|
|
|
|
return "${config.LinuxMuslLdflags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
func (toolchainMusl) Lldflags() string {
|
|
|
|
return "${config.LinuxMuslLldflags}"
|
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinuxMuslX86 struct {
|
|
|
|
toolchainLinuxX86
|
|
|
|
toolchainMusl
|
|
|
|
}
|
|
|
|
|
|
|
|
type toolchainLinuxMuslX8664 struct {
|
|
|
|
toolchainLinuxX8664
|
|
|
|
toolchainMusl
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxMuslX86) Cflags() string {
|
|
|
|
return t.toolchainLinuxX86.Cflags() + " " + t.toolchainMusl.Cflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxMuslX86) Ldflags() string {
|
|
|
|
return t.toolchainLinuxX86.Ldflags() + " " + t.toolchainMusl.Ldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxMuslX86) Lldflags() string {
|
|
|
|
return t.toolchainLinuxX86.Lldflags() + " " + t.toolchainMusl.Lldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxMuslX8664) Cflags() string {
|
|
|
|
return t.toolchainLinuxX8664.Cflags() + " " + t.toolchainMusl.Cflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxMuslX8664) Ldflags() string {
|
|
|
|
return t.toolchainLinuxX8664.Ldflags() + " " + t.toolchainMusl.Ldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (t *toolchainLinuxMuslX8664) Lldflags() string {
|
|
|
|
return t.toolchainLinuxX8664.Lldflags() + " " + t.toolchainMusl.Lldflags()
|
|
|
|
}
|
|
|
|
|
|
|
|
var toolchainLinuxMuslX86Singleton Toolchain = &toolchainLinuxMuslX86{}
|
|
|
|
var toolchainLinuxMuslX8664Singleton Toolchain = &toolchainLinuxMuslX8664{}
|
2015-01-31 02:27:36 +01:00
|
|
|
|
2021-07-24 00:23:07 +02:00
|
|
|
func linuxMuslX86ToolchainFactory(arch android.Arch) Toolchain {
|
|
|
|
return toolchainLinuxMuslX86Singleton
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
2021-07-24 00:23:07 +02:00
|
|
|
func linuxMuslX8664ToolchainFactory(arch android.Arch) Toolchain {
|
|
|
|
return toolchainLinuxMuslX8664Singleton
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
2021-07-24 00:23:07 +02:00
|
|
|
registerToolchainFactory(android.Linux, android.X86, linuxGlibcX86ToolchainFactory)
|
|
|
|
registerToolchainFactory(android.Linux, android.X86_64, linuxGlibcX8664ToolchainFactory)
|
|
|
|
registerToolchainFactory(android.LinuxMusl, android.X86, linuxMuslX86ToolchainFactory)
|
|
|
|
registerToolchainFactory(android.LinuxMusl, android.X86_64, linuxMuslX8664ToolchainFactory)
|
2015-01-31 02:27:36 +01:00
|
|
|
}
|