xref: /OK3568_Linux_fs/yocto/poky/meta/classes/multilib_header.bbclass (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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