1*4882a593Smuzhiyunrequire binutils.inc 2*4882a593Smuzhiyunrequire binutils-${PV}.inc 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunBPN = "binutils" 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunDEPENDS += "dejagnu-native expect-native" 7*4882a593SmuzhiyunDEPENDS += "binutils-native" 8*4882a593Smuzhiyun 9*4882a593Smuzhiyundeltask do_compile 10*4882a593Smuzhiyundeltask do_install 11*4882a593Smuzhiyun 12*4882a593Smuzhiyuninherit nopackages 13*4882a593Smuzhiyun 14*4882a593Smuzhiyundo_configure[dirs] += "${B}/ld ${B}/bfd" 15*4882a593Smuzhiyundo_configure() { 16*4882a593Smuzhiyun # create config.h, oe enables initfini-array by default 17*4882a593Smuzhiyun echo "#define HAVE_INITFINI_ARRAY" > ${B}/ld/config.h 18*4882a593Smuzhiyun} 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun# target depends 21*4882a593SmuzhiyunDEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}binutils" 22*4882a593SmuzhiyunDEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}gcc" 23*4882a593SmuzhiyunDEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs" 24*4882a593SmuzhiyunDEPENDS += "virtual/${MLPREFIX}libc" 25*4882a593Smuzhiyun 26*4882a593Smuzhiyunpython check_prepare() { 27*4882a593Smuzhiyun def suffix_sys(sys): 28*4882a593Smuzhiyun if sys.endswith("-linux"): 29*4882a593Smuzhiyun return sys + "-gnu" 30*4882a593Smuzhiyun return sys 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun def generate_site_exp(d, suite): 33*4882a593Smuzhiyun content = [] 34*4882a593Smuzhiyun content.append('set srcdir "{0}/{1}"'.format(d.getVar("S"), suite)) 35*4882a593Smuzhiyun content.append('set objdir "{0}/{1}"'.format(d.getVar("B"), suite)) 36*4882a593Smuzhiyun content.append('set build_alias "{0}"'.format(d.getVar("BUILD_SYS"))) 37*4882a593Smuzhiyun content.append('set build_triplet {0}'.format(d.getVar("BUILD_SYS"))) 38*4882a593Smuzhiyun # use BUILD here since HOST=TARGET 39*4882a593Smuzhiyun content.append('set host_alias "{0}"'.format(d.getVar("BUILD_SYS"))) 40*4882a593Smuzhiyun content.append('set host_triplet {0}'.format(d.getVar("BUILD_SYS"))) 41*4882a593Smuzhiyun content.append('set target_alias "{0}"'.format(d.getVar("TARGET_SYS"))) 42*4882a593Smuzhiyun content.append('set target_triplet {0}'.format(suffix_sys(d.getVar("TARGET_SYS")))) 43*4882a593Smuzhiyun content.append("set development true") 44*4882a593Smuzhiyun content.append("set experimental false") 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun content.append(d.expand('set CXXFILT "${TARGET_PREFIX}c++filt"')) 47*4882a593Smuzhiyun content.append(d.expand('set CC "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"')) 48*4882a593Smuzhiyun content.append(d.expand('set CXX "${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"')) 49*4882a593Smuzhiyun content.append(d.expand('set CFLAGS_FOR_TARGET "--sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"')) 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun if suite == "ld" and d.getVar("TUNE_ARCH") == "mips64": 52*4882a593Smuzhiyun # oe patches binutils to have the default mips64 abi as 64bit, but 53*4882a593Smuzhiyun # skips gas causing issues with the ld test suite (which uses gas) 54*4882a593Smuzhiyun content.append('set ASFLAGS "-64"') 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun return "\n".join(content) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun for i in ["binutils", "gas", "ld"]: 59*4882a593Smuzhiyun builddir = os.path.join(d.getVar("B"), i) 60*4882a593Smuzhiyun if not os.path.isdir(builddir): 61*4882a593Smuzhiyun os.makedirs(builddir) 62*4882a593Smuzhiyun with open(os.path.join(builddir, "site.exp"), "w") as f: 63*4882a593Smuzhiyun f.write(generate_site_exp(d, i)) 64*4882a593Smuzhiyun} 65*4882a593Smuzhiyun 66*4882a593SmuzhiyunCHECK_TARGETS ??= "binutils gas ld" 67*4882a593Smuzhiyun 68*4882a593Smuzhiyundo_check[dirs] = "${B} ${B}/binutils ${B}/gas ${B}/ld" 69*4882a593Smuzhiyundo_check[prefuncs] += "check_prepare" 70*4882a593Smuzhiyundo_check[nostamp] = "1" 71*4882a593Smuzhiyundo_check() { 72*4882a593Smuzhiyun export LC_ALL=C 73*4882a593Smuzhiyun for i in ${CHECK_TARGETS}; do 74*4882a593Smuzhiyun (cd ${B}/$i; runtest \ 75*4882a593Smuzhiyun --tool $i \ 76*4882a593Smuzhiyun --srcdir ${S}/$i/testsuite \ 77*4882a593Smuzhiyun --ignore 'plugin.exp' \ 78*4882a593Smuzhiyun || true) 79*4882a593Smuzhiyun done 80*4882a593Smuzhiyun} 81*4882a593Smuzhiyunaddtask check after do_configure 82