1*4882a593Smuzhiyuninherit siteinfo 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun# If applicable on the architecture, this routine will rename the header and 4*4882a593Smuzhiyun# add a unique identifier to the name for the ABI/bitsize that is being used. 5*4882a593Smuzhiyun# A wrapper will be generated for the architecture that knows how to call 6*4882a593Smuzhiyun# all of the ABI variants for that given architecture. 7*4882a593Smuzhiyun# 8*4882a593Smuzhiyunoe_multilib_header() { 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun case ${HOST_OS} in 11*4882a593Smuzhiyun *-musl*) 12*4882a593Smuzhiyun return 13*4882a593Smuzhiyun ;; 14*4882a593Smuzhiyun *) 15*4882a593Smuzhiyun esac 16*4882a593Smuzhiyun # For MIPS: "n32" is a special case, which needs to be 17*4882a593Smuzhiyun # distinct from both 64-bit and 32-bit. 18*4882a593Smuzhiyun case ${TARGET_ARCH} in 19*4882a593Smuzhiyun mips*) case "${MIPSPKGSFX_ABI}" in 20*4882a593Smuzhiyun "-n32") 21*4882a593Smuzhiyun ident=n32 22*4882a593Smuzhiyun ;; 23*4882a593Smuzhiyun *) 24*4882a593Smuzhiyun ident=${SITEINFO_BITS} 25*4882a593Smuzhiyun ;; 26*4882a593Smuzhiyun esac 27*4882a593Smuzhiyun ;; 28*4882a593Smuzhiyun *) ident=${SITEINFO_BITS} 29*4882a593Smuzhiyun esac 30*4882a593Smuzhiyun for each_header in "$@" ; do 31*4882a593Smuzhiyun if [ ! -f "${D}/${includedir}/$each_header" ]; then 32*4882a593Smuzhiyun bberror "oe_multilib_header: Unable to find header $each_header." 33*4882a593Smuzhiyun continue 34*4882a593Smuzhiyun fi 35*4882a593Smuzhiyun stem=$(echo $each_header | sed 's#\.h$##') 36*4882a593Smuzhiyun # if mips64/n32 set ident to n32 37*4882a593Smuzhiyun mv ${D}/${includedir}/$each_header ${D}/${includedir}/${stem}-${ident}.h 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun sed -e "s#ENTER_HEADER_FILENAME_HERE#${stem}#g" ${COREBASE}/scripts/multilib_header_wrapper.h > ${D}/${includedir}/$each_header 40*4882a593Smuzhiyun done 41*4882a593Smuzhiyun} 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun# Dependencies on arch variables like MIPSPKGSFX_ABI can be problematic. 44*4882a593Smuzhiyun# We don't need multilib headers for native builds so brute force things. 45*4882a593Smuzhiyunoe_multilib_header:class-native () { 46*4882a593Smuzhiyun return 47*4882a593Smuzhiyun} 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun# Nor do we need multilib headers for nativesdk builds. 50*4882a593Smuzhiyunoe_multilib_header:class-nativesdk () { 51*4882a593Smuzhiyun return 52*4882a593Smuzhiyun} 53