Skip to content

Commit

Permalink
When building for linux, replace all vendors with 'unknown'
Browse files Browse the repository at this point in the history
Some build systems such as the Yocto project define custom
rust targets, of the form 'arch-somevendor-linux-gnu/musl'
(only the 'somevendor' part is custom, the rest matches rust's
definitions).

This causes mismatches with crossbeam's lists of targets
which are built from the standard rust target list, and
always have 'unknown' as the vendor.

This change simply replaces such custom vendors with 'unknown' when
the third component of the target is 'linux'.
  • Loading branch information
Alexander Kanavin committed Nov 2, 2022
1 parent 46d0aeb commit c922fac
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 4 deletions.
13 changes: 13 additions & 0 deletions build-common.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// The target triplets have the form of 'arch-vendor-system'.
//
// When building for Linux (e.g. the 'system' part is
// 'linux-something'), replace the vendor with 'unknown'
// so that mapping to rust standard targets happens correctly.
fn convert_custom_linux_target(target: String) -> String {
let mut parts: Vec<&str> = target.split('-').collect();
let system = parts[2];
if system == "linux" {
parts[1] = "unknown";
};
parts.join("-")
}
1 change: 1 addition & 0 deletions crossbeam-epoch/build-common.rs
3 changes: 2 additions & 1 deletion crossbeam-epoch/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
use std::env;

include!("no_atomic.rs");
include!("build-common.rs");

fn main() {
let target = match env::var("TARGET") {
Ok(target) => target,
Ok(target) => convert_custom_linux_target(target),
Err(e) => {
println!(
"cargo:warning={}: unable to get TARGET environment variable: {}",
Expand Down
1 change: 1 addition & 0 deletions crossbeam-queue/build-common.rs
3 changes: 2 additions & 1 deletion crossbeam-queue/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
use std::env;

include!("no_atomic.rs");
include!("build-common.rs");

fn main() {
let target = match env::var("TARGET") {
Ok(target) => target,
Ok(target) => convert_custom_linux_target(target),
Err(e) => {
println!(
"cargo:warning={}: unable to get TARGET environment variable: {}",
Expand Down
1 change: 1 addition & 0 deletions crossbeam-skiplist/build-common.rs
3 changes: 2 additions & 1 deletion crossbeam-skiplist/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
use std::env;

include!("no_atomic.rs");
include!("build-common.rs");

fn main() {
let target = match env::var("TARGET") {
Ok(target) => target,
Ok(target) => convert_custom_linux_target(target),
Err(e) => {
println!(
"cargo:warning={}: unable to get TARGET environment variable: {}",
Expand Down
1 change: 1 addition & 0 deletions crossbeam-utils/build-common.rs
3 changes: 2 additions & 1 deletion crossbeam-utils/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@
use std::env;

include!("no_atomic.rs");
include!("build-common.rs");

fn main() {
let target = match env::var("TARGET") {
Ok(target) => target,
Ok(target) => convert_custom_linux_target(target),
Err(e) => {
println!(
"cargo:warning={}: unable to get TARGET environment variable: {}",
Expand Down

0 comments on commit c922fac

Please sign in to comment.