[617118d] | 1 | #!/bin/bash
|
---|
| 2 | #
|
---|
| 3 | # Stub Header Functions for cross-lfs build
|
---|
| 4 | # -----------------------------------------
|
---|
| 5 | # $LastChangedBy$
|
---|
| 6 | # $LastChangedDate$
|
---|
| 7 | # $LastChangedRevision$
|
---|
| 8 | # $HeadURL$
|
---|
| 9 | #
|
---|
| 10 |
|
---|
| 11 | set_stub_arch_switch() {
|
---|
| 12 | # TODO: this needs to be revisited... only handles 2 arches
|
---|
| 13 | case ${TGT_ARCH} in
|
---|
| 14 | x86_64 )
|
---|
| 15 | LIBDIRENV=${LIBDIRENV-32}
|
---|
| 16 | DEFAULTENV=${DEFAULTENV-64}
|
---|
| 17 | ARCH_SWITCH=__x86_64__
|
---|
| 18 | ENV1=64
|
---|
| 19 | ENV2=32
|
---|
| 20 | ;;
|
---|
| 21 | sparc* | ultrasparc* )
|
---|
| 22 | LIBDIRENV=${LIBDIRENV-32}
|
---|
| 23 | DEFAULTENV=${DEFAULTENV-64}
|
---|
| 24 | ARCH_SWITCH=__arch64__
|
---|
| 25 | ENV1=64
|
---|
| 26 | ENV2=32
|
---|
| 27 | ;;
|
---|
| 28 | ppc* | powerpc* )
|
---|
| 29 | LIBDIRENV=${LIBDIRENV-32}
|
---|
| 30 | DEFAULTENV=${DEFAULTENV-64}
|
---|
| 31 | ARCH_SWITCH=__powerpc64__
|
---|
| 32 | ENV1=64
|
---|
| 33 | ENV2=32
|
---|
| 34 | ;;
|
---|
| 35 | s390* )
|
---|
| 36 | LIBDIRENV=${LIBDIRENV-31}
|
---|
| 37 | DEFAULTENV=${DEFAULTENV-64}
|
---|
| 38 | ARCH_SWITCH=__s390x__
|
---|
| 39 | ENV1=64
|
---|
| 40 | ENV2=31
|
---|
| 41 | ;;
|
---|
| 42 | * )
|
---|
| 43 | echo "set_stub_arch_switch: error, TGT_ARCH=${TGT_ARCH} unknown" 1>&2
|
---|
| 44 | return 1
|
---|
| 45 | ;;
|
---|
| 46 | esac
|
---|
| 47 | }
|
---|
| 48 |
|
---|
| 49 | create_stub_hdrs() {
|
---|
| 50 | if [ "${#}" = "0" ]; then
|
---|
| 51 | echo "create_stub_hdrs: error, no headers specified" 1>&2
|
---|
| 52 | return 1
|
---|
| 53 | fi
|
---|
| 54 |
|
---|
| 55 | if [ -z "${BUILDENV}" ]; then
|
---|
| 56 | echo "create_stub_hdrs: error, BUILDENV not set" 1>&2
|
---|
| 57 | return 1
|
---|
| 58 | fi
|
---|
| 59 |
|
---|
| 60 | set_stub_arch_switch || return 1
|
---|
| 61 |
|
---|
| 62 | echo " o creating stub headers"
|
---|
| 63 |
|
---|
| 64 | for file in ${@} ; do
|
---|
| 65 | hdr=`basename ${file}`
|
---|
| 66 | hdrdir=`dirname ${file}`
|
---|
| 67 | barrier="__STUB__$( echo ${hdr} | tr [a-z]. [A-Z]_ )__"
|
---|
| 68 |
|
---|
| 69 | if [ ! -f ${file} ]; then
|
---|
| 70 | echo "create_stub_hdrs: error, header ${file} does not exist" 1>&2
|
---|
| 71 | return 1
|
---|
| 72 | fi
|
---|
| 73 |
|
---|
| 74 | # If the header we are making a stub for is a stub header we created earlier,
|
---|
| 75 | # do not continue as something has gone wrong...
|
---|
| 76 | head -n 1 ${file} | grep "#ifndef ${barrier}" > /dev/null 2>&1 && {
|
---|
| 77 | echo "create_stub_hdrs: error, ${file} is a stub header" 1>&2
|
---|
| 78 | return 1
|
---|
| 79 | }
|
---|
| 80 |
|
---|
| 81 | # create the dirctory to house the real header (if it does not already exist)
|
---|
| 82 | if [ ! -d ${hdrdir}/${BUILDENV} ]; then
|
---|
| 83 | mkdir ${hdrdir}/${BUILDENV}
|
---|
| 84 | fi
|
---|
| 85 |
|
---|
| 86 | # move the real header
|
---|
| 87 | mv ${file} ${hdrdir}/${BUILDENV} || {
|
---|
| 88 | echo "create_stub_hdrs: error, unable to move ${file} to ${hdrdir}/${BUILDENV}" 1>&2
|
---|
| 89 | return 1
|
---|
| 90 | }
|
---|
| 91 |
|
---|
| 92 | # Generate the header stub
|
---|
| 93 |
|
---|
| 94 | # include barrier
|
---|
| 95 | echo "#ifndef ${barrier}" > ${hdrdir}/${hdr}
|
---|
| 96 | echo "#define ${barrier}" >> ${hdrdir}/${hdr}
|
---|
| 97 | echo "" >> ${hdrdir}/${hdr}
|
---|
| 98 |
|
---|
| 99 | if [ -f ${hdrdir}/${ENV1}/${hdr} ]; then
|
---|
| 100 | echo "#ifdef ${ARCH_SWITCH}" >> ${hdrdir}/${hdr}
|
---|
| 101 | echo "#include \"${ENV1}/${hdr}\"" >> ${hdrdir}/${hdr}
|
---|
| 102 | if [ -f ${hdrdir}/${ENV2}/${hdr} ]; then
|
---|
| 103 | echo "#else" >> ${hdrdir}/${hdr}
|
---|
| 104 | echo "#include \"${ENV2}/${hdr}\"" >> ${hdrdir}/${hdr}
|
---|
| 105 | fi
|
---|
| 106 | elif [ -f ${hdrdir}/${ENV2}/${hdr} ]; then
|
---|
| 107 | echo "#ifndef ${ARCH_SWITCH}" >> ${hdrdir}/${hdr}
|
---|
| 108 | echo "#include \"${ENV2}/${hdr}\"" >> ${hdrdir}/${hdr}
|
---|
| 109 | else
|
---|
| 110 | echo "create_stub_hdr: error, something really b0rked here" 1>&2
|
---|
| 111 | return 1
|
---|
| 112 | fi
|
---|
| 113 | echo "#endif /* ${ARCH_SWITCH} */" >> ${hdrdir}/${hdr}
|
---|
| 114 |
|
---|
| 115 | echo "" >> ${hdrdir}/${hdr}
|
---|
| 116 | echo "#endif /* ${barrier} */" >> ${hdrdir}/${hdr}
|
---|
| 117 |
|
---|
| 118 | echo " - ${hdrdir}/${hdr}"
|
---|
| 119 |
|
---|
| 120 | done
|
---|
| 121 | }
|
---|
| 122 |
|
---|
| 123 | create_stub_hdr() {
|
---|
| 124 | hdr=`basename ${1}`
|
---|
| 125 | hdrdir=`dirname ${1}`
|
---|
| 126 | barrier="__STUB__$( echo ${hdr} | tr [a-z]. [A-Z]_ )__"
|
---|
| 127 |
|
---|
| 128 | set_stub_arch_switch
|
---|
| 129 |
|
---|
| 130 | # setup include barrier
|
---|
| 131 | echo "#ifndef ${barrier}" > ${hdrdir}/${hdr}
|
---|
| 132 | echo "#define ${barrier}" >> ${hdrdir}/${hdr}
|
---|
| 133 | echo "" >> ${hdrdir}/${hdr}
|
---|
| 134 |
|
---|
| 135 | if [ -f ${hdrdir}/${ENV1}/${hdr} ]; then
|
---|
| 136 | echo "#ifdef ${ARCH_SWITCH}" >> ${hdrdir}/${hdr}
|
---|
| 137 | echo "#include \"${ENV1}/${hdr}\"" >> ${hdrdir}/${hdr}
|
---|
| 138 | if [ -f ${hdrdir}/${ENV2}/${hdr} ]; then
|
---|
| 139 | echo "#else" >> ${hdrdir}/${hdr}
|
---|
| 140 | echo "#include \"${ENV2}/${hdr}\"" >> ${hdrdir}/${hdr}
|
---|
| 141 | fi
|
---|
| 142 | elif [ -f ${hdrdir}/${ENV2}/${hdr} ]; then
|
---|
| 143 | echo "#ifndef ${ARCH_SWITCH}" >> ${hdrdir}/${hdr}
|
---|
| 144 | echo "#include \"${ENV2}/${hdr}\"" >> ${hdrdir}/${hdr}
|
---|
| 145 | else
|
---|
| 146 | echo "create_stub_hdr: error, something really b0rked here" 1>&2
|
---|
| 147 | return 1
|
---|
| 148 | fi
|
---|
| 149 | echo "#endif /* ${ARCH_SWITCH} */" >> ${hdrdir}/${hdr}
|
---|
| 150 |
|
---|
| 151 | echo "" >> ${hdrdir}/${hdr}
|
---|
| 152 | echo "#endif /* ${barrier} */" >> ${hdrdir}/${hdr}
|
---|
| 153 |
|
---|
| 154 | echo " - ${hdrdir}/${hdr}"
|
---|
| 155 |
|
---|
| 156 | }
|
---|
| 157 |
|
---|
| 158 |
|
---|
| 159 | # Export functions
|
---|
| 160 | export -f set_stub_arch_switch
|
---|
| 161 | export -f create_stub_hdrs
|
---|