139 lines
2.4 KiB
Bash
Executable File
139 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
DESTDIR="${DESTDIR:-/}"
|
|
pkglibdir="${pkglibdir:-/usr/lib/rpm}"
|
|
platformdir="${pkglibdir}/platform"
|
|
|
|
RPMRC="${1:-rpmrc}"
|
|
PLATFORM="${2:-platform}"
|
|
VENDOR="${3}"
|
|
OS="${4}"
|
|
RPMRC_GNU="${5}"
|
|
|
|
for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do
|
|
RPMRC_OPTFLAGS="`sed -n 's/^optflags: '$ARCH' //p' $RPMRC`"
|
|
RPMRC_OPTFLAGS="`echo $RPMRC_OPTFLAGS | sed -e 's, ,\ ,g'`"
|
|
case $RPMRC_OPTFLAGS in
|
|
*-g*) ;;
|
|
*) RPMRC_OPTFLAGS="$RPMRC_OPTFLAGS -g" ;;
|
|
esac
|
|
|
|
ARCH_INSTALL_POST='%{nil}'
|
|
LIB=lib
|
|
|
|
# XXX FIXME: incomplete and quite likely wrong too in places,
|
|
# consult various arch folks for correct names etc.
|
|
ISANAME=
|
|
ISABITS=
|
|
CANONARCH=
|
|
CANONCOLOR=
|
|
FILTER=cat
|
|
case "${ARCH}" in
|
|
sparc64*)
|
|
ISANAME=sparc
|
|
ISABITS=64
|
|
CANONARCH=sparc64
|
|
CANONCOLOR=3
|
|
;;
|
|
sparc*)
|
|
ISANAME=sparc
|
|
ISABITS=32
|
|
CANONARCH=sparc
|
|
CANONCOLOR=0
|
|
;;
|
|
s390)
|
|
ISANAME=s390
|
|
ISABITS=32
|
|
CANONARCH=s390
|
|
CANONCOLOR=0
|
|
;;
|
|
s390x)
|
|
ISANAME=s390
|
|
ISABITS=64
|
|
CANONARCH=s390x
|
|
CANONCOLOR=3
|
|
;;
|
|
ppc64*)
|
|
ISANAME=ppc
|
|
ISABITS=64
|
|
CANONARCH=ppc64
|
|
CANONCOLOR=3
|
|
;;
|
|
ppc*)
|
|
ISANAME=ppc
|
|
ISABITS=32
|
|
CANONARCH=ppc
|
|
CANONCOLOR=0
|
|
;;
|
|
i?86|pentium?|athlon|geode)
|
|
ISANAME=x86
|
|
ISABITS=32
|
|
CANONARCH=i386
|
|
CANONCOLOR=0
|
|
;;
|
|
x86_64|amd64|ia32e)
|
|
ISANAME=x86
|
|
ISABITS=64
|
|
CANONARCH=x86_64
|
|
CANONCOLOR=3
|
|
;;
|
|
ia64)
|
|
ISANAME=ia
|
|
ISABITS=64
|
|
CANONARCH=ia64
|
|
CANONCOLOR=2
|
|
;;
|
|
sh*)
|
|
ISANAME=sh
|
|
ISABITS=32
|
|
CANONARCH=${ARCH}
|
|
CANONCOLOR=0
|
|
;;
|
|
arm*)
|
|
ISANAME=`echo ${ARCH} | sed "s/^\([^-]*\)-.*/\1/"`
|
|
ISABITS=32
|
|
CANONARCH=arm
|
|
CANONCOLOR=0
|
|
;;
|
|
alpha*)
|
|
ISANAME=alpha
|
|
ISABITS=64
|
|
CANONARCH=alpha
|
|
CANONCOLOR=0
|
|
;;
|
|
noarch)
|
|
CANONARCH=noarch
|
|
CANONCOLOR=0
|
|
FILTER="grep -v -E '^(%optflag|%__isa)'"
|
|
;;
|
|
esac
|
|
|
|
# skip architectures for which we dont have full config parameters
|
|
[ -z "$CANONARCH" ] && continue
|
|
|
|
CANONARCH="`echo $ARCH|sed -e "$canonarch_sed"`"
|
|
|
|
if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
|
|
LIB=${LIB}64
|
|
fi
|
|
|
|
PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
|
|
[ -d $PPD ] || mkdir -p $PPD
|
|
|
|
cat $PLATFORM \
|
|
| sed -e "s,@RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
|
|
-e "s,@RPMCANONARCH@,$CANONARCH,g" \
|
|
-e "s,@RPMCANONCOLOR@,$CANONCOLOR," \
|
|
-e "s,@RPMRC_GNU@,$RPMRC_GNU," \
|
|
-e "s,@LIB@,$LIB," \
|
|
-e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
|
|
-e '/\${\w*:-/!s,\${,%{_,' \
|
|
-e "s,@ISANAME@,$ISANAME," \
|
|
-e "s,@ISABITS@,$ISABITS," \
|
|
-e "s,^@${VENDOR}@,," \
|
|
| grep -v '^@' \
|
|
| ${FILTER} \
|
|
> ${PPD}/macros
|
|
|
|
done
|