blob: 2020f461daa2c81cfd9619279cd1b80a5928de52 [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 Stoep530dccb2020-06-26 15:26:49 +020027 RustDefaultVersion = "1.44.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
Joel Galenson724286c2019-09-30 13:01:37 -070035 GlobalRustFlags = []string{
36 "--remap-path-prefix $$(pwd)=",
Ivan Lozano31b095d2019-11-20 10:14:33 -080037 "-C codegen-units=1",
38 "-C opt-level=3",
39 "-C relocation-model=pic",
Joel Galenson724286c2019-09-30 13:01:37 -070040 }
41
Ivan Lozanof1c84332019-09-20 11:00:37 -070042 deviceGlobalRustFlags = []string{}
43
44 deviceGlobalLinkFlags = []string{
45 "-Bdynamic",
46 "-nostdlib",
47 "-Wl,-z,noexecstack",
48 "-Wl,-z,relro",
49 "-Wl,-z,now",
50 "-Wl,--build-id=md5",
51 "-Wl,--warn-shared-textrel",
52 "-Wl,--fatal-warnings",
53
54 "-Wl,--pack-dyn-relocs=android+relr",
Ivan Lozanof1c84332019-09-20 11:00:37 -070055 "-Wl,--no-undefined",
56 "-Wl,--hash-style=gnu",
Jeff Vander Stoep6e97a7b2020-07-15 21:34:45 +020057
58 "-B${ccConfig.ClangBin}",
59 "-fuse-ld=lld",
Ivan Lozanof1c84332019-09-20 11:00:37 -070060 }
Ivan Lozanoffee3342019-08-27 12:03:00 -070061)
62
63func init() {
64 pctx.SourcePathVariable("RustDefaultBase", RustDefaultBase)
65 pctx.VariableConfigMethod("HostPrebuiltTag", android.Config.PrebuiltOS)
66
67 pctx.VariableFunc("RustBase", func(ctx android.PackageVarContext) string {
68 if override := ctx.Config().Getenv("RUST_PREBUILTS_BASE"); override != "" {
69 return override
70 }
71 return "${RustDefaultBase}"
72 })
73
74 pctx.VariableFunc("RustVersion", func(ctx android.PackageVarContext) string {
75 if override := ctx.Config().Getenv("RUST_PREBUILTS_VERSION"); override != "" {
76 return override
77 }
78 return RustDefaultVersion
79 })
80
81 pctx.StaticVariable("RustPath", "${RustBase}/${HostPrebuiltTag}/${RustVersion}")
82 pctx.StaticVariable("RustBin", "${RustPath}/bin")
83
84 pctx.ImportAs("ccConfig", "android/soong/cc/config")
85 pctx.StaticVariable("RustLinker", "${ccConfig.ClangBin}/clang++")
Jeff Vander Stoep6e97a7b2020-07-15 21:34:45 +020086 pctx.StaticVariable("RustLinkerArgs", "")
Ivan Lozanof1c84332019-09-20 11:00:37 -070087
88 pctx.StaticVariable("DeviceGlobalLinkFlags", strings.Join(deviceGlobalLinkFlags, " "))
89
Ivan Lozanoffee3342019-08-27 12:03:00 -070090}