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