cross compile changes for arm (#7)

cross compile changes for arm
pull/8/head
Prajwala 2020-10-21 23:41:50 -04:00 committed by GitHub
parent f83b47801d
commit ee68f8a632
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 96 additions and 54 deletions

View File

@ -357,7 +357,7 @@ config("compiler") {
asmflags += cflags_c asmflags += cflags_c
} }
if (is_linux && is_clang && target_cpu == "x64"){ if (is_linux && is_clang) {
defines += [ defines += [
# "USE_GLIB=1", # "USE_GLIB=1",
# "USE_NSS_CERTS=1", # "USE_NSS_CERTS=1",
@ -382,20 +382,18 @@ config("compiler") {
] ]
cflags += [ cflags += [
"--param=ssp-buffer-size=4", "--param=ssp-buffer-size=4",
"-funwind-tables", #"-funwind-tables",
"-fmerge-all-constants", "-fmerge-all-constants",
"-fcrash-diagnostics-dir=../../tools/clang/crashreports", #"-fcrash-diagnostics-dir=../../tools/clang/crashreports",
"-Xclang", "-Xclang",
"-mllvm", "-mllvm",
"-Xclang", "-Xclang",
"-instcombine-lower-dbg-declare=0", "-instcombine-lower-dbg-declare=0",
"-fcomplete-member-pointers", "-fcomplete-member-pointers",
"-Wno-builtin-macro-redefined", #"-Wno-builtin-macro-redefined",
"-Xclang", "-Xclang",
"-fdebug-compilation-dir", "-fdebug-compilation-dir",
"-Xclang", "-Xclang",
"-no-canonical-prefixes", "-no-canonical-prefixes",
"-Wall", "-Wall",
"-Wextra", "-Wextra",
@ -431,10 +429,16 @@ config("compiler") {
] ]
ldflags += ["-rdynamic"] ldflags += ["-rdynamic"]
ldflags += ["-nostdlib++"] ldflags += ["-nostdlib++"]
if (target_cpu == "x64"){
ldflags += ["-L../../../../external/debian_sid_amd64-sysroot/lib/x86_64-linux-gnu"] ldflags += ["-L../../../../external/debian_sid_amd64-sysroot/lib/x86_64-linux-gnu"]
ldflags += ["-L../../../../external/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu"] ldflags += ["-L../../../../external/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu"]
} }
if (target_cpu == "arm"){
ldflags += ["-L../../../../external/debian_sid_arm-sysroot/lib/arm-linux-gnueabihf"]
ldflags += ["-L../../../../external/debian_sid_arm-sysroot/usr/lib/arm-linux-gnueabihf"]
}
}
} }
config("extra_flags") { config("extra_flags") {

View File

@ -5,6 +5,7 @@
import("//build/config/sanitizers/sanitizers.gni") import("//build/config/sanitizers/sanitizers.gni")
import("//build/toolchain/cc_wrapper.gni") import("//build/toolchain/cc_wrapper.gni")
import("//build/toolchain/toolchain.gni") import("//build/toolchain/toolchain.gni")
import("//build/toolchain/clang.gni")
# This template defines a toolchain for something that works like gcc # This template defines a toolchain for something that works like gcc
# (including clang). # (including clang).
@ -459,3 +460,37 @@ template("gcc_toolchain") {
forward_variables_from(invoker, [ "deps" ]) forward_variables_from(invoker, [ "deps" ])
} }
} }
template("clang_toolchain") {
if (defined(invoker.toolprefix)) {
toolprefix = invoker.toolprefix
} else {
toolprefix = ""
}
gcc_toolchain(target_name) {
prefix = rebase_path("$clang_base_path", root_build_dir)
cc = "$prefix/clang"
cxx = "$prefix/clang++"
ld = cxx
readelf = "${toolprefix}readelf"
ar = "${prefix}/llvm-ar"
nm = "${toolprefix}nm"
forward_variables_from(invoker,
[
"strip",
"default_shlib_subdir",
"enable_linker_map",
"use_unstripped_as_runtime_outputs",
])
toolchain_args = {
if (defined(invoker.toolchain_args)) {
forward_variables_from(invoker.toolchain_args, "*")
}
is_clang = true
}
}
}

View File

@ -1,6 +1,22 @@
import("//build/toolchain/gcc_toolchain.gni") import("//build/toolchain/gcc_toolchain.gni")
import("//build/toolchain/posix/settings.gni") import("//build/toolchain/posix/settings.gni")
clang_toolchain("clang_arm") {
toolprefix = "arm-linux-gnueabihf-"
toolchain_args = {
current_cpu = "arm"
current_os = target_os
}
}
clang_toolchain("clang_arm64") {
toolprefix = "aarch64-linux-gnu-"
toolchain_args = {
current_cpu = "arm64"
current_os = "linux"
}
}
gcc_toolchain("clang_x86") { gcc_toolchain("clang_x86") {
cc = clang_cc cc = clang_cc
cxx = clang_cxx cxx = clang_cxx
@ -29,7 +45,7 @@ gcc_toolchain("x86") {
toolchain_args = { toolchain_args = {
current_cpu = "x86" current_cpu = "x86"
current_os = target_os current_os = target_os
is_clang = false is_clang = true
} }
} }
@ -61,66 +77,38 @@ gcc_toolchain("x64") {
toolchain_args = { toolchain_args = {
current_cpu = "x64" current_cpu = "x64"
current_os = target_os current_os = target_os
is_clang = false is_clang = true
} }
} }
gcc_toolchain("arm") { gcc_toolchain("arm") {
cc = gcc_cc cc = arm_cc
cxx = gcc_cxx cxx = arm_cxx
ld = cxx ar = arm_ar
readelf = readelf ld = cxx
ar = ar readelf = arm_readelf
nm = nm nm = arm_nm
toolchain_args = { toolchain_args = {
current_cpu = "arm" current_cpu = "arm"
current_os = target_os current_os = target_os
is_clang = false is_clang = true
} }
} }
gcc_toolchain("arm64") { gcc_toolchain("arm64") {
cc = gcc_cc cc = arm64_cc
cxx = gcc_cxx cxx = arm64_cxx
ld = cxx ar = arm64_ar
readelf = readelf ld = cxx
ar = ar readelf = arm64_readelf
nm = nm nm = arm64_nm
toolchain_args = { toolchain_args = {
current_cpu = "arm64" current_cpu = "arm64"
current_os = target_os current_os = target_os
is_clang = false is_clang = true
}
}
gcc_toolchain("clang_arm") {
cc = clang_cc
cxx = clang_cxx
ld = cxx
readelf = readelf
ar = ar
nm = nm
toolchain_args = {
current_cpu = "arm"
current_os = target_os
}
}
gcc_toolchain("clang_arm64") {
cc = clang_cc
cxx = clang_cxx
ld = cxx
readelf = readelf
ar = ar
nm = nm
toolchain_args = {
current_cpu = "arm64"
current_os = "linux"
} }
} }

View File

@ -25,6 +25,21 @@ declare_args() {
# Path of the 'nm' utility. # Path of the 'nm' utility.
nm = "nm" nm = "nm"
arm64_toolprefix = "aarch64-linux-gnu-"
arm64_cc = "aarch64-linux-gnu-gcc"
arm64_cxx = "aarch64-linux-gnu-g++"
arm64_ar = "aarch64-linux-gnu-ar"
arm64_readelf = "aarch64-linux-gnu-readelf"
arm64_nm = "aarch64-linux-gnu-nm"
arm_toolprefix = "arm-linux-gnueabihf-"
arm_cc = "arm-linux-gnueabihf-gcc"
arm_cxx = "arm-linux-gnueabihf-g++"
arm_ar = "arm-linux-gnueabihf-ar"
arm_readelf = "arm-linux-gnueabihf-readelf"
arm_nm = "arm-linux-gnueabihf-nm"
} }
if (is_clang && clang_cc == 0) { if (is_clang && clang_cc == 0) {