diff --git a/tools/archsetup.sh b/tools/archsetup.sh new file mode 100755 index 0000000000000000000000000000000000000000..bbf67da7d6b03005314b1cf0794630d63943265a --- /dev/null +++ b/tools/archsetup.sh @@ -0,0 +1,76 @@ +#! /bin/bash + +# Tool to create temporary simple "C" Makefile for misc tools, based on +# the architecture settings in macports.conf. +# +# Usage is: archsetup.sh [-m32|-m64|-unv] [<output dir>] +# Options modify the architecture specification. + +DIR=$(dirname "$0") + +OPT="" +case "$1" in + "-m32" | "-m64" | "-unv" ) + OPT="$1" + shift + ;; +esac + +if [ "$1" != "" ]; then + DEST="$1" +else + DEST="$DIR" +fi + +PREFIX="/opt/local/" +CONF="$PREFIX/etc/macports/macports.conf" +OUT="Makefile" + +BUILD_ARCH="$(grep '^build_arch' $CONF | awk '{print $2}')" +UNV_ARCHS="$(grep '^universal_archs' $CONF \ + | sed 's|universal_archs[[:blank:]]*||')" + +case "$OPT" in + "-m32" ) + case "$BUILD_ARCH" in + "ppc64" ) + ARCHS="ppc" + ;; + "x86_64" ) + ARCHS="i386" + ;; + * ) + ARCHS="$BUILD_ARCH" + esac + ;; + "-m64" ) + case "$BUILD_ARCH" in + "ppc" | "ppc7400" ) + ARCHS="ppc64" + ;; + "i386" ) + ARCHS="x86_64" + ;; + * ) + ARCHS="$BUILD_ARCH" + esac + ;; + "-unv" ) + ARCHS="$UNV_ARCHS" + ;; + * ) + ARCHS="$BUILD_ARCH" + ;; +esac + +if [ "$CC" == "" ]; then + CC="cc" +fi + +ARCHFLAGS="$(for a in $ARCHS; do echo -n ' -arch' $a; done)" +CCCMD=$'\t'"$CC$ARCHFLAGS \$^ -o \$@" + +cat >"$DEST/$OUT" <<EOF +%: %.c +$CCCMD +EOF