Unify LINK flags

This commit is contained in:
Cody P Schafer
2014-11-17 17:57:46 -05:00
parent 118ee0f59e
commit 2d90348be0
2 changed files with 20 additions and 13 deletions
+2 -2
View File
@@ -10,10 +10,10 @@ PN = "rust-cross-${TARGET_ARCH}"
# The same value as ${TOOLCHAIN_OPTIONS}. We can't use that variable directly # The same value as ${TOOLCHAIN_OPTIONS}. We can't use that variable directly
# here because cross.bblcass is "helpful" and blanks it out. # here because cross.bblcass is "helpful" and blanks it out.
TARGET_PRE_LINK_ARGS_PREPEND_append = " --sysroot=${STAGING_DIR_TARGET}" TARGET_PRE_LINK_ARGS_append = " --sysroot=${STAGING_DIR_TARGET}"
# We need the same thing for the calls to the compiler when building the runtime crap # We need the same thing for the calls to the compiler when building the runtime crap
TARGET_CC_ARCH_append += " --sysroot=${STAGING_DIR_TARGET}" TARGET_CC_ARCH_append = " --sysroot=${STAGING_DIR_TARGET}"
## gcc-cross settings ## gcc-cross settings
# INHIBIT_DEFAULT_DEPS = "1" # INHIBIT_DEFAULT_DEPS = "1"
+18 -11
View File
@@ -48,14 +48,20 @@ PRE_LINK_ARGS[i586] = "-Wl,--as-needed -m32"
def ldflags_for(d, thing): def ldflags_for(d, thing):
cc_arch = d.getVar('{}_CC_ARCH'.format(thing), True) or "" f = d.getVar('{}_CC_ARCH'.format(thing), True) or ""
tc = d.getVar('TOOLCHAIN_OPTIONS', True) or "" f += " "
ldflags = d.getVar('{}_LDFLAGS'.format(thing), True) or "" f += d.getVar('TOOLCHAIN_OPTIONS', True) or ""
return tc.split() + ldflags.split() + cc_arch.split() f += " "
f += d.getVar('{}_LDFLAGS'.format(thing), True) or ""
f += " "
f += d.getVarFlag('PRE_LINK_ARGS', d.getVar('{}_ARCH'.format(thing)), True) or ""
return f
TARGET_PRE_LINK_ARGS_PREPEND = "${@ldflags_for(d, 'TARGET')}" # These are appended to by internal-rust-cross.bbclass and should be used
HOST_PRE_LINK_ARGS_PREPEND = "${@ldflags_for(d, 'HOST')}" # instead of ldflags_for() where ever ldflags are needed
BUILD_PRE_LINK_ARGS_PREPEND = "${@ldflags_for(d, 'BUILD')}" TARGET_PRE_LINK_ARGS = "${@ldflags_for(d, 'TARGET')}"
HOST_PRE_LINK_ARGS = "${@ldflags_for(d, 'HOST')}"
BUILD_PRE_LINK_ARGS = "${@ldflags_for(d, 'BUILD')}"
def arch_for(d, thing): def arch_for(d, thing):
return d.getVar('{}_ARCH'.format(thing), True) return d.getVar('{}_ARCH'.format(thing), True)
@@ -103,7 +109,7 @@ def as_json(list_):
def rust_gen_target(d, thing, wd): def rust_gen_target(d, thing, wd):
arch = arch_for(d, thing) arch = arch_for(d, thing)
ldflags = ldflags_for(d, thing) ldflags = d.getVar('{}_PRE_LINK_ARGS'.format(thing), True).split()
sys = sys_for(d, thing) sys = sys_for(d, thing)
prefix = prefix_for(d, thing) prefix = prefix_for(d, thing)
o = open(wd + sys + '.json', 'w') o = open(wd + sys + '.json', 'w')
@@ -118,8 +124,8 @@ def rust_gen_target(d, thing, wd):
linker = "{}{}gcc".format(ccache, prefix) linker = "{}{}gcc".format(ccache, prefix)
features = d.getVarFlag('FEATURES', arch, True) or "" features = d.getVarFlag('FEATURES', arch, True) or ""
pre_link_args = (d.getVarFlag('PRE_LINK_ARGS', arch, True) or "").split() pre_link_args = (d.getVar('{}_PRE_LINK_ARGS_PREPEND'.format(thing), True) or "").split()
pre_link_args.extend((d.getVar('{}_PRE_LINK_ARGS_PREPEND'.format(thing), True) or "").split()) pre_link_args.extend((d.getVarFlag('PRE_LINK_ARGS', arch, True) or "").split())
o.write('''{{ o.write('''{{
"data-layout": "{}", "data-layout": "{}",
@@ -182,6 +188,7 @@ def rust_gen_mk_cfg(d, thing):
arch = arch_for(d, thing) arch = arch_for(d, thing)
sys = sys_for(d, thing) sys = sys_for(d, thing)
prefix = prefix_for(d, thing) prefix = prefix_for(d, thing)
ldflags = d.getVar('{}_PRE_LINK_ARGS'.format(thing), True)
p = d.getVar('S', True) + '/mk/cfg/' p = d.getVar('S', True) + '/mk/cfg/'
@@ -206,7 +213,7 @@ def rust_gen_mk_cfg(d, thing):
'-e', '/^CFG_JEMALLOC_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)), '-e', '/^CFG_JEMALLOC_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)),
'-e', '/^CFG_GCCISH_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)), '-e', '/^CFG_GCCISH_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)),
'-e', '/^CFG_GCCISH_CXXFLAGS/ s;$; {};'.format(cxxflags_for(d, thing)), '-e', '/^CFG_GCCISH_CXXFLAGS/ s;$; {};'.format(cxxflags_for(d, thing)),
'-e', '/^CFG_GCCISH_LINK_FLAGS/ s;$; {};'.format(" ".join(ldflags_for(d, thing))), '-e', '/^CFG_GCCISH_LINK_FLAGS/ s;$; {};'.format(ldflags),
], stdout=o, stdin=i) ], stdout=o, stdin=i)
if r: if r:
raise Exception raise Exception