Blame installplatform

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