|
1 | 1 | use std::thread;
|
2 | 2 |
|
| 3 | +use llvm::prebuilt_llvm_config; |
| 4 | + |
3 | 5 | use super::*;
|
4 | 6 | use crate::Flags;
|
5 | 7 | use crate::core::build_steps::doc::DocumentationFormat;
|
@@ -861,3 +863,95 @@ fn test_test_coverage() {
|
861 | 863 | assert_eq!(modes, expected);
|
862 | 864 | }
|
863 | 865 | }
|
| 866 | + |
| 867 | +#[test] |
| 868 | +fn test_prebuilt_llvm_config_path_resolution() { |
| 869 | + fn configure(config: &str) -> Config { |
| 870 | + Config::parse_inner( |
| 871 | + Flags::parse(&[ |
| 872 | + "build".to_string(), |
| 873 | + "--dry-run".to_string(), |
| 874 | + "--config=/does/not/exist".to_string(), |
| 875 | + ]), |
| 876 | + |&_| toml::from_str(&config), |
| 877 | + ) |
| 878 | + } |
| 879 | + |
| 880 | + let config = configure( |
| 881 | + r#" |
| 882 | + [llvm] |
| 883 | + download-ci-llvm = false |
| 884 | +
|
| 885 | + [build] |
| 886 | + build = "x86_64-unknown-linux-gnu" |
| 887 | + host = ["arm-unknown-linux-gnueabihf"] |
| 888 | + target = ["arm-unknown-linux-gnueabihf"] |
| 889 | +
|
| 890 | + [target.x86_64-unknown-linux-gnu] |
| 891 | + llvm-config = "/some/path/to/llvm-config" |
| 892 | +
|
| 893 | + [target.arm-unknown-linux-gnueabihf] |
| 894 | + cc = "arm-linux-gnueabihf-gcc" |
| 895 | + cxx = "arm-linux-gnueabihf-g++" |
| 896 | + "#, |
| 897 | + ); |
| 898 | + |
| 899 | + let build = Build::new(config); |
| 900 | + let builder = Builder::new(&build); |
| 901 | + |
| 902 | + let expected = PathBuf::from("/some/path/to/llvm-config"); |
| 903 | + |
| 904 | + let actual = prebuilt_llvm_config( |
| 905 | + &builder, |
| 906 | + TargetSelection::from_user("arm-unknown-linux-gnueabihf"), |
| 907 | + false, |
| 908 | + ) |
| 909 | + .llvm_result() |
| 910 | + .llvm_config |
| 911 | + .clone(); |
| 912 | + // removes Windows drive prefix if present |
| 913 | + let actual = actual.strip_prefix(":").unwrap_or(&actual); |
| 914 | + assert_eq!(expected, actual); |
| 915 | + |
| 916 | + let actual = prebuilt_llvm_config(&builder, builder.config.build, false) |
| 917 | + .llvm_result() |
| 918 | + .llvm_config |
| 919 | + .clone(); |
| 920 | + // removes Windows drive prefix if present |
| 921 | + let actual = actual.strip_prefix(":").unwrap_or(&actual); |
| 922 | + assert_eq!(expected, actual); |
| 923 | + |
| 924 | + let config = configure( |
| 925 | + r#" |
| 926 | + [llvm] |
| 927 | + download-ci-llvm = false |
| 928 | + "#, |
| 929 | + ); |
| 930 | + |
| 931 | + let build = Build::new(config.clone()); |
| 932 | + let builder = Builder::new(&build); |
| 933 | + |
| 934 | + let actual = prebuilt_llvm_config(&builder, builder.config.build, false) |
| 935 | + .llvm_result() |
| 936 | + .llvm_config |
| 937 | + .clone(); |
| 938 | + let expected = builder.out.join(builder.config.build).join("llvm/bin/llvm-config"); |
| 939 | + assert_eq!(expected, actual); |
| 940 | + |
| 941 | + let config = configure( |
| 942 | + r#" |
| 943 | + [llvm] |
| 944 | + download-ci-llvm = true |
| 945 | + "#, |
| 946 | + ); |
| 947 | + |
| 948 | + let build = Build::new(config.clone()); |
| 949 | + let builder = Builder::new(&build); |
| 950 | + |
| 951 | + let actual = prebuilt_llvm_config(&builder, builder.config.build, false) |
| 952 | + .llvm_result() |
| 953 | + .llvm_config |
| 954 | + .clone(); |
| 955 | + let expected = builder.out.join(builder.config.build).join("ci-llvm/bin/llvm-config"); |
| 956 | + assert_eq!(expected, actual); |
| 957 | +} |
0 commit comments