| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 1 | // 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 |  | 
|  | 15 | package config | 
|  | 16 |  | 
|  | 17 | import ( | 
| Ivan Lozano | f1c8433 | 2019-09-20 11:00:37 -0700 | [diff] [blame] | 18 | "strings" | 
|  | 19 |  | 
| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 20 | "android/soong/android" | 
|  | 21 | _ "android/soong/cc/config" | 
|  | 22 | ) | 
|  | 23 |  | 
|  | 24 | var pctx = android.NewPackageContext("android/soong/rust/config") | 
|  | 25 |  | 
|  | 26 | var ( | 
| Jeff Vander Stoep | 3a9d80a | 2020-08-14 13:53:14 +0200 | [diff] [blame] | 27 | RustDefaultVersion = "1.45.2" | 
| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 28 | RustDefaultBase    = "prebuilts/rust/" | 
|  | 29 | DefaultEdition     = "2018" | 
|  | 30 | Stdlibs            = []string{ | 
| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 31 | "libstd", | 
| Ivan Lozano | 6d9e712 | 2019-09-20 10:59:56 -0700 | [diff] [blame] | 32 | "libtest", | 
| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 33 | } | 
| Ivan Lozano | f1c8433 | 2019-09-20 11:00:37 -0700 | [diff] [blame] | 34 |  | 
| Joel Galenson | 724286c | 2019-09-30 13:01:37 -0700 | [diff] [blame] | 35 | GlobalRustFlags = []string{ | 
|  | 36 | "--remap-path-prefix $$(pwd)=", | 
| Ivan Lozano | 31b095d | 2019-11-20 10:14:33 -0800 | [diff] [blame] | 37 | "-C codegen-units=1", | 
|  | 38 | "-C opt-level=3", | 
|  | 39 | "-C relocation-model=pic", | 
| Joel Galenson | 724286c | 2019-09-30 13:01:37 -0700 | [diff] [blame] | 40 | } | 
|  | 41 |  | 
| Ivan Lozano | f1c8433 | 2019-09-20 11:00:37 -0700 | [diff] [blame] | 42 | 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 Lozano | f1c8433 | 2019-09-20 11:00:37 -0700 | [diff] [blame] | 55 | "-Wl,--no-undefined", | 
|  | 56 | "-Wl,--hash-style=gnu", | 
| Jeff Vander Stoep | 6e97a7b | 2020-07-15 21:34:45 +0200 | [diff] [blame] | 57 |  | 
|  | 58 | "-B${ccConfig.ClangBin}", | 
|  | 59 | "-fuse-ld=lld", | 
| Ivan Lozano | f1c8433 | 2019-09-20 11:00:37 -0700 | [diff] [blame] | 60 | } | 
| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 61 | ) | 
|  | 62 |  | 
|  | 63 | func 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 Stoep | 6e97a7b | 2020-07-15 21:34:45 +0200 | [diff] [blame] | 86 | pctx.StaticVariable("RustLinkerArgs", "") | 
| Ivan Lozano | f1c8433 | 2019-09-20 11:00:37 -0700 | [diff] [blame] | 87 |  | 
|  | 88 | pctx.StaticVariable("DeviceGlobalLinkFlags", strings.Join(deviceGlobalLinkFlags, " ")) | 
|  | 89 |  | 
| Ivan Lozano | ffee334 | 2019-08-27 12:03:00 -0700 | [diff] [blame] | 90 | } |