blob: 326b85fe0fb5e8a339be60cd0116094c001826ba [file] [log] [blame]
Ivan Lozanoffee3342019-08-27 12:03:00 -07001// Copyright 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package config
16
17import (
Ivan Lozanof1c84332019-09-20 11:00:37 -070018 "strings"
19
Ivan Lozanoffee3342019-08-27 12:03:00 -070020 "android/soong/android"
21 _ "android/soong/cc/config"
22)
23
24var pctx = android.NewPackageContext("android/soong/rust/config")
25
26var (
Jeff Vander Stoep8cc38b82020-09-18 14:24:02 +020027 RustDefaultVersion = "1.46.0"
Ivan Lozanoffee3342019-08-27 12:03:00 -070028 RustDefaultBase = "prebuilts/rust/"
29 DefaultEdition = "2018"
30 Stdlibs = []string{
Ivan Lozanoffee3342019-08-27 12:03:00 -070031 "libstd",
Ivan Lozano6d9e7122019-09-20 10:59:56 -070032 "libtest",
Ivan Lozanoffee3342019-08-27 12:03:00 -070033 }
Ivan Lozanof1c84332019-09-20 11:00:37 -070034
Thiébaud Weksteen71512f32020-11-03 15:17:51 +010035 // Mapping between Soong internal arch types and std::env constants.
36 // Required as Rust uses aarch64 when Soong uses arm64.
37 StdEnvArch = map[android.ArchType]string{
38 android.Arm: "arm",
39 android.Arm64: "aarch64",
40 android.X86: "x86",
41 android.X86_64: "x86_64",
42 }
43
Joel Galenson724286c2019-09-30 13:01:37 -070044 GlobalRustFlags = []string{
45 "--remap-path-prefix $$(pwd)=",
Ivan Lozano31b095d2019-11-20 10:14:33 -080046 "-C codegen-units=1",
47 "-C opt-level=3",
48 "-C relocation-model=pic",
Joel Galenson724286c2019-09-30 13:01:37 -070049 }
50
Ivan Lozanof1c84332019-09-20 11:00:37 -070051 deviceGlobalRustFlags = []string{}
52
53 deviceGlobalLinkFlags = []string{
Ivan Lozano6d45a982020-09-09 09:08:44 -040054 // Prepend the lld flags from cc_config so we stay in sync with cc
55 "${cc_config.DeviceGlobalLldflags}",
56
57 // Override cc's --no-undefined-version to allow rustc's generated alloc functions
58 "-Wl,--undefined-version",
59
Ivan Lozanof1c84332019-09-20 11:00:37 -070060 "-Bdynamic",
61 "-nostdlib",
Ivan Lozanof1c84332019-09-20 11:00:37 -070062 "-Wl,--pack-dyn-relocs=android+relr",
Thiébaud Weksteen19e1c6c2020-08-19 15:01:44 +020063 "-Wl,--use-android-relr-tags",
Ivan Lozanof1c84332019-09-20 11:00:37 -070064 "-Wl,--no-undefined",
Thiébaud Weksteen682c9d72020-08-31 10:06:16 +020065 "-B${cc_config.ClangBin}",
Ivan Lozanof1c84332019-09-20 11:00:37 -070066 }
Ivan Lozanoffee3342019-08-27 12:03:00 -070067)
68
69func init() {
70 pctx.SourcePathVariable("RustDefaultBase", RustDefaultBase)
71 pctx.VariableConfigMethod("HostPrebuiltTag", android.Config.PrebuiltOS)
72
73 pctx.VariableFunc("RustBase", func(ctx android.PackageVarContext) string {
74 if override := ctx.Config().Getenv("RUST_PREBUILTS_BASE"); override != "" {
75 return override
76 }
77 return "${RustDefaultBase}"
78 })
79
80 pctx.VariableFunc("RustVersion", func(ctx android.PackageVarContext) string {
81 if override := ctx.Config().Getenv("RUST_PREBUILTS_VERSION"); override != "" {
82 return override
83 }
84 return RustDefaultVersion
85 })
86
87 pctx.StaticVariable("RustPath", "${RustBase}/${HostPrebuiltTag}/${RustVersion}")
88 pctx.StaticVariable("RustBin", "${RustPath}/bin")
89
Thiébaud Weksteen682c9d72020-08-31 10:06:16 +020090 pctx.ImportAs("cc_config", "android/soong/cc/config")
91 pctx.StaticVariable("RustLinker", "${cc_config.ClangBin}/clang++")
Jeff Vander Stoep6e97a7b2020-07-15 21:34:45 +020092 pctx.StaticVariable("RustLinkerArgs", "")
Ivan Lozanof1c84332019-09-20 11:00:37 -070093
94 pctx.StaticVariable("DeviceGlobalLinkFlags", strings.Join(deviceGlobalLinkFlags, " "))
95
Ivan Lozanoffee3342019-08-27 12:03:00 -070096}