#!/bin/sh set -e BUILDDIR=`pwd` cd `dirname $0`/../.. TOPSRC=`pwd` cd $BUILDDIR if test -z "$DEST" ; then DEST=$BUILDDIR/dist fi if test -z "$PFX" ; then PFX=/Library/OpenNX fi ALLPKG="nxcomp nxproxy nxssh" CACHEDIR=$HOME/savebuild CACHEDBUILD=$CACHEDIR/nx-prebuild.tgz NEEDREBUILD=yes if [ -f $CACHEDBUILD ] ; then NEEDREBUILD=no tar xzf $CACHEDBUILD for TARBALL in `$TOPSRC/getnxsrcpkg -l $ALLPKG` ; do test -f $TARBALL || NEEDREBUILD=yes done if [ $NEEDREBUILD = yes ] ; then rm -rf * fi fi fetch() { if [ -n "`which wget`" ] ; then wget -q $1 else if [ -n "`which curl`" ] ; then curl -s -f -L -o `echo "$1"|sed -e 's!.*/\([^?]*\).*!\1!'` "$1" else echo "Need wget or curl" >&2 exit 1 fi fi } if [ $NEEDREBUILD = yes ] ; then $TOPSRC/getnxsrcpkg $ALLPKG for pkg in $ALLPKG ; do tar xzf ${pkg}-*.tar.gz done # Prerequisite: libjpeg (for x86: libjpeg-turbo) test -f libjpeg-turbo-1.1.1.tar.gz || fetch http://downloads.sourceforge.net/project/libjpeg-turbo/1.1.1/libjpeg-turbo-1.1.1.tar.gz tar xzf libjpeg-turbo-1.1.1.tar.gz cd libjpeg-turbo-1.1.1 CFLAGS="-O3 -m32" CXXFLAGS="-O3 -m32" LDFLAGS="-m32" ./configure \ --prefix=$PFX --libdir=$PFX/lib/private --disable-static --enable-shared mkdir -p $DEST$PFX/include $DEST$PFX/lib/private/{ppc,i386} make && make DESTDIR=$DEST install-libLTLIBRARIES mv $DEST$PFX/lib/private/libjpeg.62.0.0.dylib $DEST$PFX/lib/private/i386/libjpeg.62.dylib rm -f $DEST$PFX/lib/private/*.dylib $DEST$PFX/lib/private/libturbojpeg.la cd .. # Prerequisite: libjpeg (for PPC: the original) test -f jpegsrc.v6b.tar.gz || fetch http://downloads.sourceforge.net/project/libjpeg/libjpeg/6b/jpegsrc.v6b.tar.gz tar xzf jpegsrc.v6b.tar.gz cd jpeg-6b patch -p1 < $TOPSRC/patches/jpeg-autoconf.patch ./configure \ --prefix=$PFX --libdir=$PFX/lib/private --disable-static --enable-shared make CFLAGS="-arch ppc $OSX_SDKFLAGS" CXXFLAGS="-arch ppc $OSX_SDKFLAGS" LDFLAGS="-arch ppc" DESTDIR=$DEST install-lib mv $DEST$PFX/lib/private/libjpeg.62.dylib $DEST$PFX/lib/private/ppc/ cd .. # Create universal libjpeg lipo -create -arch i386 $DEST$PFX/lib/private/i386/* -arch ppc $DEST$PFX/lib/private/ppc/* \ -output $DEST$PFX/lib/private/libjpeg.62.dylib rm -rf $DEST$PFX/lib/private/ppc $DEST$PFX/lib/private/i386 # Prerequisite: libpng test -f libpng-1.2.44.tar.gz || fetch 'http://prdownloads.sourceforge.net/libpng/libpng-1.2.44.tar.gz?download' tar xzf libpng-1.2.44.tar.gz cd libpng-1.2.44 CFLAGS="-arch i386 -arch ppc $OSX_SDKFLAGS" LDFLAGS="-arch i386 -arch ppc" ./configure \ --prefix=$PFX --enable-static --disable-shared --disable-dependency-tracking make DESTDIR=$DEST install cd .. ncver=`ls nxcomp-*.tar.gz|perl -ne 'printf("%02d%02d%02d%02d\n",$1,$2,$3,$4)if(/nxcomp-(\d+)\.(\d+)\.(\d+)-(\d+)\.tar.*/);'` for pkg in nxcomp nxproxy ; do cd $pkg for p in $TOPSRC/patches/${pkg}-*.patch ; do bn=`basename $p` if [ $bn = nxcomp-gcc44.patch -a $ncver -ge 03040006 ] ; then echo === Skipping $bn in $pkg else echo === Applying $bn in $pkg patch -p1 < $p fi done test -f configure.in -a -f configure.ac && rm -f configure.in autoreconf -f -i cargs= cenv="CFLAGS=\"$OSX_SDKFLAGS\" CXXFLAGS=\"$OSX_SDKFLAGS\"" margs= case $pkg in nxcomp) cenv="CFLAGS=\"$OSX_SDKFLAGS\" CXXFLAGS=\"$OSX_SDKFLAGS\" LDFLAGS=-L$DEST$PFX/lib/private" cargs="--with-libjpeg=$DEST$PFX --with-libpng=$DEST$PFX" ;; esac echo === Configuring $pkg ... echo $cenv ./configure --prefix=$PFX $cargs eval $cenv ./configure --prefix=$PFX $cargs echo === Building $pkg ... echo make $margs make $margs echo === Installing $pkg ... echo make DESTDIR=$DEST $margs install make DESTDIR=$DEST $margs install cd .. echo === Build of $pkg complete done cd nxssh patch -p1 < $TOPSRC/patches/openssh-scard-pin.patch patch -p1 < $TOPSRC/patches/nxssh-dynopensc.patch autoreconf -f -i # When building nxssh on OSX10.6, we need to forcibly add -lresolv R= case "`uname -r`" in 10.*) R="-lresolv" ;; esac echo === Configuring nxssh ... echo LIBS="$R" \ LDFLAGS="-L$DEST$PFX/lib -L$DEST$PFX/lib/private" \ CPPFLAGS="-I$TOPSRC" \ ./configure --prefix=$PFX \ --with-opensc=$BUILDDIR/../scbuild/dist$PFX \ --enable-opensc-dynamic \ --with-cflags="-arch i386 -arch ppc $OSX_SDKFLAGS" \ --with-ldflags="-arch i386 -arch ppc $OSX_SDKFLAGS" LIBS="$R" \ LDFLAGS="-L$DEST$PFX/lib -L$DEST$PFX/lib/private" \ CPPFLAGS="-I$TOPSRC" \ ./configure --prefix=$PFX \ --with-opensc=$BUILDDIR/../scbuild/dist$PFX \ --enable-opensc-dynamic \ --with-cflags="-arch i386 -arch ppc $OSX_SDKFLAGS" \ --with-ldflags="-arch i386 -arch ppc $OSX_SDKFLAGS" echo === Building nxssh ... make cp nxssh $DEST$PFX/bin/nxssh cd .. mkdir -p $CACHEDIR tar czf $CACHEDBUILD . else mkdir -p $DEST$PFX/include $DEST$PFX/lib/private/{ppc,i386} make -C libjpeg-turbo-1.1.1 DESTDIR=$DEST install-libLTLIBRARIES mv $DEST$PFX/lib/private/libjpeg.62.0.0.dylib $DEST$PFX/lib/private/i386/libjpeg.62.dylib rm -f $DEST$PFX/lib/private/*.dylib $DEST$PFX/lib/private/libturbojpeg.la make -C jpeg-6b DESTDIR=$DEST install-lib mv $DEST$PFX/lib/private/libjpeg.62.dylib $DEST$PFX/lib/private/ppc/ lipo -create -arch i386 $DEST$PFX/lib/private/i386/* -arch ppc $DEST$PFX/lib/private/ppc/* \ -output $DEST$PFX/lib/private/libjpeg.62.dylib rm -rf $DEST$PFX/lib/private/ppc $DEST$PFX/lib/private/i386 make -C libpng-1.2.44 DESTDIR=$DEST install make -C nxcomp DESTDIR=$DEST install make -C nxproxy DESTDIR=$DEST install cp nxssh/nxssh $DEST$PFX/bin/nxssh fi rm -rf $DEST$PFX/{include,etc,share} \ $DEST$PFX/lib/*.la \ $DEST$PFX/lib/*.a \ $DEST$PFX/lib/pkgconfig \ $DEST$PFX/bin/esd* \ $DEST$PFX/bin/*-config \ $DEST$PFX/bin/sf*