summaryrefslogtreecommitdiffstats
path: root/meta/classes/rust-target-config.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/rust-target-config.bbclass')
-rw-r--r--meta/classes/rust-target-config.bbclass18
1 files changed, 9 insertions, 9 deletions
diff --git a/meta/classes/rust-target-config.bbclass b/meta/classes/rust-target-config.bbclass
index ab177cf59f..bc6bd77abb 100644
--- a/meta/classes/rust-target-config.bbclass
+++ b/meta/classes/rust-target-config.bbclass
@@ -292,6 +292,7 @@ def rust_gen_target(d, thing, wd, arch):
292 import json 292 import json
293 sys = d.getVar('{}_SYS'.format(thing)) 293 sys = d.getVar('{}_SYS'.format(thing))
294 prefix = d.getVar('{}_PREFIX'.format(thing)) 294 prefix = d.getVar('{}_PREFIX'.format(thing))
295 rustsys = d.getVar('RUST_{}_SYS'.format(thing))
295 296
296 abi = None 297 abi = None
297 cpu = "generic" 298 cpu = "generic"
@@ -318,13 +319,9 @@ def rust_gen_target(d, thing, wd, arch):
318 features = features or d.getVarFlag('FEATURES', arch_abi) or "" 319 features = features or d.getVarFlag('FEATURES', arch_abi) or ""
319 features = features.strip() 320 features = features.strip()
320 321
321 llvm_target = d.getVar('RUST_TARGET_SYS')
322 if thing == "BUILD":
323 llvm_target = d.getVar('RUST_HOST_SYS')
324
325 # build tspec 322 # build tspec
326 tspec = {} 323 tspec = {}
327 tspec['llvm-target'] = llvm_target 324 tspec['llvm-target'] = rustsys
328 tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi) 325 tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi)
329 if tspec['data-layout'] is None: 326 if tspec['data-layout'] is None:
330 bb.fatal("No rust target defined for %s" % arch_abi) 327 bb.fatal("No rust target defined for %s" % arch_abi)
@@ -358,7 +355,7 @@ def rust_gen_target(d, thing, wd, arch):
358 tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY") 355 tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
359 356
360 # write out the target spec json file 357 # write out the target spec json file
361 with open(wd + sys + '.json', 'w') as f: 358 with open(wd + rustsys + '.json', 'w') as f:
362 json.dump(tspec, f, indent=4) 359 json.dump(tspec, f, indent=4)
363 360
364# These are accounted for in tmpdir path names so don't need to be in the task sig 361# These are accounted for in tmpdir path names so don't need to be in the task sig
@@ -366,10 +363,13 @@ rust_gen_target[vardepsexclude] += "ABIEXTENSION llvm_cpu"
366 363
367do_rust_gen_targets[vardeps] += "DATA_LAYOUT TARGET_ENDIAN TARGET_POINTER_WIDTH TARGET_C_INT_WIDTH MAX_ATOMIC_WIDTH FEATURES" 364do_rust_gen_targets[vardeps] += "DATA_LAYOUT TARGET_ENDIAN TARGET_POINTER_WIDTH TARGET_C_INT_WIDTH MAX_ATOMIC_WIDTH FEATURES"
368 365
369RUST_TARGETGENS = "BUILD" 366RUST_TARGETS_DIR = "${WORKDIR}/rust-targets/"
367export RUST_TARGET_PATH = "${RUST_TARGETS_DIR}"
368
369RUST_TARGETGENS = "BUILD HOST TARGET"
370 370
371python do_rust_gen_targets () { 371python do_rust_gen_targets () {
372 wd = d.getVar('WORKDIR') + '/targets/' 372 wd = d.getVar('RUST_TARGETS_DIR')
373 # Order of BUILD, HOST, TARGET is important in case the files overwrite, most specific last 373 # Order of BUILD, HOST, TARGET is important in case the files overwrite, most specific last
374 rust_gen_target(d, 'BUILD', wd, d.getVar('BUILD_ARCH')) 374 rust_gen_target(d, 'BUILD', wd, d.getVar('BUILD_ARCH'))
375 if "HOST" in d.getVar("RUST_TARGETGENS"): 375 if "HOST" in d.getVar("RUST_TARGETGENS"):
@@ -379,5 +379,5 @@ python do_rust_gen_targets () {
379} 379}
380 380
381addtask rust_gen_targets after do_patch before do_compile 381addtask rust_gen_targets after do_patch before do_compile
382do_rust_gen_targets[dirs] += "${WORKDIR}/targets" 382do_rust_gen_targets[dirs] += "${RUST_TARGETS_DIR}"
383 383