#!/bin/sh

# See the README in this directory for more info on using this script
# (build.unix).  Search for SSVNC_BUILD.
#
# Notes: to customize locations, e.g. for libjpeg, set LDFLAGS_OS and/or
# CPPFLAGS_OS
#
# e.g. on Darwin we did:
#
# env LDFLAGS_OS="-L/Volumes/someplace/common/lib" CPPFLAGS_OS="-I /Volumes/someplace/common/include" ./build.unix
#


# Add useful directories to PATH:
#
PATH=$PATH:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin/X11:/usr/openwin/bin:/opt/SUNWspro/bin:/usr/sfw/bin:/usr/ccs/bin
export PATH

# Check location:
#
thisdir=`dirname "$0"`
if [ ! -d ./bin -o ! -d src/patches -o ! -f ./build.unix ]; then
	echo ""
	echo "You must run this script from: $thisdir"
	echo ""
	echo "Maybe:"
	echo ""
	echo "  cd $thisdir"
	echo "  ./build.unix"
	if [ "X$BUILD_UNIX" != "X" ]; then
		sleep 2
		exit 1
	fi
	echo ""
	sleep 1
	printf "Do you want me to run those for you?  y/[n] "
	read x
	if [ "X$x" = "Xy" ]; then
		BUILD_UNIX=1
		export BUILD_UNIX
		cd "$thisdir" || exit 1
		echo "pwd:"
		pwd
		sleep 1
		./build.unix
	fi
	
	exit $?
fi

pline() {
	echo "------------------------------------------------------------------"
}

# Try to find osname.arch
#
name=$UNAME
if [ "X$name" = "X" ]; then
	name=`uname -sm | sed -e 's/ /./g' -e 's/Linux\.i.86/Linux.i686/'`
fi
if [ "X$name" = "X" ]; then
	echo "cannot determine platform: os.arch, e.g. Linux.i686"
	echo "set \$UNAME manually and retry."
	exit 1
fi

LDD="ldd"
if [ `uname` = "Darwin" ]; then
	LDD="otool -L"
fi

# Create a tmp dir for this build:
#
tmp=./src/tmp/$name.$$
if [ "X$TMPDIR" != "X" ]; then
	tmp="$TMPDIR/$tmp"
fi
mkdir -p $tmp || exit 1

# Do ultraftp Java viewer (only):
#
if [ "X$SSVNC_BUILD_ULTRAFTP" != "X" ]; then
	ultraftp_tar=`ls -td ./src/zips/ultraftp.tar* | head -1`
	if [ ! -f $ultraftp_tar ]; then
		echo "could not locate ultraftp java vnc viewer source"
		exit 1
	fi
	echo ""
	pline
	echo "BUILDING THE ULTRAFTP HELPER JAR"
	echo ""
	sleep 1

	cat $ultraftp_tar | (cd $tmp; tar xvf -) || exit 1
	cd $tmp/ultraftp || exit 1
	pwd
	echo
	make install

	exit 0	# DONE
fi

# Work out main destination:
#
dest=./bin/$name
if [ -d $dest ]; then
	if [ "X$SSVNC_BUILD_FORCE_OVERWRITE" = "X" ]; then
		printf "$dest exists.  overwrite in it? [y]/n "
		read x
		if [ "X$x" = "Xn" ]; then
			exit
		fi
	else
		echo "$dest exists.  overwriting in it."
	fi
	if [ "X$SSVNC_BUILD_SKIP_VIEWER" = "X" ]; then
		if [ `uname` = "Darwin" ]; then
			rm -f $dest/vncviewer.x11*
		else
			rm -f $dest/vncviewer*
		fi
	fi
	if [ "X$SSVNC_BUILD_SKIP_STUNNEL" = "X" ]; then
		rm -f $dest/stunnel*
	fi
fi
mkdir -p $dest || exit 1


# Try to find some static archives of various libraries:
#
libs="$tmp/libs"
mkdir -p $libs || exit 1
for liba in libz.a libjpeg.a libssl.a libcrypto.a
do
	if [ "X$SSVNC_BUILD_STATIC" = "X" ]; then
		break
	fi
	for dir in $SSVNC_STATIC_DIRS /usr/lib /lib /usr/local/lib /usr/pkg/lib /usr/sfw/lib /usr/openwin/lib
	do
		if [ "X$dir" = "X" ]; then
			continue
		fi
		if [ "$name" = "Linux.x86_64" -o "$name" = "Linux.ppc64" ] ; then
			dir64=`echo "$dir" | sed -e 's,lib,lib64,'`
			if [ "X$SSVNC_BUILD_NO_LINUX64" != "X" ]; then
				:
			elif [ -d $dir64 ]; then
				dir=$dir64
			fi
		fi
		try="$dir/$liba"
		if [ -f $try ]; then
			echo cp -p "$try" $libs
			     cp -p "$try" $libs
			break
		fi
	done
done
if [ "X$SSVNC_BUILD_STATIC" != "X" ]; then
	echo "Found these static archive libraries, will try to use them..."
	ls -ld $libs
	ls -l $libs
	echo
fi

have_gcc=""
if type gcc > /dev/null; then
	have_gcc=1
fi
have_cc=""
if type cc > /dev/null; then
	have_cc=1
fi

if [ "X$have_cc" = "X" ]; then
	if [ "X$have_gcc" = "X1" ]; then
		cat > $tmp/cc <<END
#!/bin/sh
gcc "\$@"
END
		chmod 755 $tmp/cc
		PATH=$PATH:`pwd`/$tmp
		type cc
		type gcc
	fi
fi

if [ -d /var/tmp/LIBS -a "X$SSVNC_BUILD_STATIC" != "X" ]; then
	LDFLAGS_OS="$LDFLAGS_OS -L/var/tmp/LIBS"
fi

if [ `uname` = "SunOS" ]; then
	LDFLAGS_OS="$LDFLAGS_OS -L/usr/sfw/lib -R/usr/sfw/lib"
	CPPFLAGS_OS="$CPPFLAGS_OS -I /usr/sfw/include"
elif uname | grep -i bsd > /dev/null; then
	LDFLAGS_OS="$LDFLAGS_OS -L/usr/local/lib -L/usr/pkg/lib"
	CPPFLAGS_OS="$CPPFLAGS_OS -I /usr/local/include -I /usr/pkg/include"
fi

cnt=`ls ./src/patches/*.patch | wc -c`
if [ $cnt -lt 1 ]; then
	echo "Could not find any patches in ./src/patches.  Is your tarball missing them?"
	exit 1
fi

pline() {
	echo "------------------------------------------------------------------"
}

# Do tightvnc viewer:
#
if [ "X$SSVNC_BUILD_SKIP_VIEWER" = "X" ]; then
	tight_src=`ls -td ./src/vnc_unixsrc* | head -1`
	if [ ! -d $tight_src ]; then
		echo "could not locate tight vnc viewer source"
		exit 1
	fi
	echo ""
	pline
	echo "BUILDING THE VNCVIEWER"
	echo ""
	sleep 1

	cp -pR "$tight_src" "$tmp/vnc_unixsrc" || exit 1

	echo "applying tight vnc patches:"
	start=`pwd`
	cd $tmp;
	failed=0
	count=0
	patches="../../patches/tight-vncviewer-full.patch"
	if [ ! -f "$patches" ]; then
		patches=`ls ../../patches/tight* | grep -v 'tight-vncviewer-full.patch'`
	fi
	for patch in $patches
	do
		if [ ! -f "$patch" ]; then
			continue
		fi
		if [ "X$PATCH_FAIL" != "X" ]; then
			failed=1	
			break
		fi
		echo PATCHING WITH: "$patch" 
		ls -l "$patch"
		sleep 1
		patch -p0 < "$patch"
		if [ $? != 0 ]; then
			failed=`expr $failed + 1`
		else
			count=`expr $count + 1`
		fi
	done
	sleep 1
	cd "$start"
	if [ $failed != 0 -o $count = 0 ]; then
		ball=src/zips/vnc_unixsrc_vncviewer.patched.tar
		echo "patches failed, trying to use backup tarball:"
		ls -l $ball
		sleep 2
		cat $ball | (cd $tmp; tar -xvf -)
	fi
	echo


	cd $tmp/vnc_unixsrc
	xmkmf
	make Makefiles
	mv vncviewer/Makefile vncviewer/Makefile.orig
	sed -e "s,EXTRA_LDOPTIONS =,EXTRA_LDOPTIONS = -L$start/$libs $LDFLAGS_OS," \
	    -e "s,CCOPTIONS =,CCOPTIONS = $CPPFLAGS_OS," \
		vncviewer/Makefile.orig > vncviewer/Makefile

	if [ `uname` = "SunOS" ]; then
		for d in vncviewer libvncauth vncconnect vncpasswd
		do
			mv $d/Makefile $d/Makefile.orig
			sed -e "s,CCOPTIONS =.*\$,CCOPTIONS = $CPPFLAGS_OS," \
				$d/Makefile.orig > $d/Makefile
		done
	fi

	make depend
	echo $PATH
	if [ "X$TURBOVNC" = "X" ]; then
		make all
	else
		make CCOPTIONS="-DTURBOVNC $CPPFLAGS_OS" EXTRA_LIBRARIES="$TURBOVNC" all
	fi
	ls -l vncviewer/vncviewer
	cd "$start"
	src=$tmp/vnc_unixsrc/vncviewer/vncviewer
	sync
	sleep 2
	sync
	strip $src
	sync
	sleep 2
	sync
	wc  $src
	sum $src
	sleep 2

	suff=""
	if [ `uname` = "Darwin" ]; then
		suff=".x11"
	fi
	if [ "X$TURBOVNC" != "X" ]; then
		suff="$suff.turbovnc"
	fi
	echo cp -p $src $dest/vncviewer$suff
	sleep 1
	cp -p $src $dest/vncviewer$suff || exit 1

	echo
	pline
	echo "LISTING, HELP, and LDD THE VNCVIEWER:" 
	echo
	sleep 1

	ls -l $src $dest/vncviewer$suff
	echo
	echo $dest/vncviewer$suff -h
	echo
	$dest/vncviewer$suff -h
	echo
	echo $LDD $dest/vncviewer$suff
	echo
	$LDD $dest/vncviewer$suff
	echo ""
fi

# Do stunnel:
#
if [ "X$SSVNC_BUILD_SKIP_STUNNEL" = "X" ]; then
	stunnel_src=`ls -td ./src/stunnel* | head -1`
	if [ ! -d $stunnel_src ]; then
		echo "could not locate stunnel source"
		exit 1
	fi
	echo ""
	pline
	echo "BUILDING THE STUNNEL"
	echo ""
	sleep 1

	cp -pR "$stunnel_src" "$tmp/stunnel" || exit 1

	echo "applying stunnel patches:"
	start=`pwd`
	cd $tmp;
	failed=0
	count=0
	for patch in ../../patches/stunnel*
	do
		if [ ! -f "$patch" ]; then
			continue
		fi
		if [ "X$PATCH_FAIL" != "X" ]; then
			failed=1	
			break
		fi
		echo PATCHING WITH: "$patch" 
		ls -l "$patch"
		sleep 1
		patch -p0 < $patch
		if [ $? != 0 ]; then
			failed=`expr $failed + 1`
		else
			count=`expr $count + 1`
		fi
	done
	sleep 1
	cd "$start"
	if [ $failed != 0 -o $count = 0 ]; then
		ball=src/zips/stunnel.patched.tar
		echo "patches failed, trying to use backup tarball:"
		ls -l $ball
		sleep 2
		cat $ball | (cd $tmp; tar -xvf -)
	fi
	echo


	cd $tmp/stunnel
	if [ `uname` = "SunOS" ]; then
		cp configure configure.orig
		sed -e "s,maindir in,maindir in /usr/sfw," configure.orig > configure
	fi
	env LDFLAGS="-L$start/$libs $LDFLAGS_OS" CPPFLAGS="$CPPFLAGS_OS" ./configure --disable-libwrap --enable-ipv6
	make
	ls -l src/stunnel
	cd "$start"
	src=$tmp/stunnel/src/stunnel
	sync
	sleep 2
	sync
	strip $src
	sync
	sleep 2
	sync
	wc  $src
	sum $src
	sleep 2
	echo cp -p $src $dest/stunnel
	cp -p $src $dest/stunnel || exit 1
	sleep 1
	cp -p $src $dest/stunnel || exit 1

	echo
	pline
	echo "LISTING, HELP, and LDD THE STUNNEL:" 
	echo
	sleep 1

	ls -l $src $dest/stunnel
	echo
	echo $dest/stunnel -help
	echo
	$dest/stunnel -help
	echo
	echo $LDD $dest/stunnel
	echo
	$LDD $dest/stunnel
	echo ""
fi

# Do vncstorepw and ld preload friends:
#
if [ "X$SSVNC_BUILD_SKIP_VNCSTOREPW" = "X" ]; then
	vncpw_tar=`ls -td ./src/zips/vncstorepw* | head -1`
	if [ ! -f $vncpw_tar ]; then
		echo "could not locate vncstorepw source"
		exit 1
	fi
	echo ""
	pline
	echo "BUILDING THE VNCSTOREPW AND FRIENDS"
	echo ""
	sleep 1

	cat "$vncpw_tar" | (cd $tmp; tar xvf -)

	cd $tmp/vncstorepw
	make

	cd "$start"
	cp -p $tmp/vncstorepw/vncstorepw $tmp/vncstorepw/lim_accept.so $dest
	echo ""

	cd $tmp/vncstorepw
	make clean

	env LD_SSL="-L$start/$libs $LDFLAGS_OS $LD_SSL" CPP_SSL="$CPPFLAGS_OS" make ultravnc_dsm_helper

	cd "$start"
	cp -p $tmp/vncstorepw/ultravnc_dsm_helper $dest
	echo ""
fi


if [ "X$SSVNC_BUILD_SKIP_VIEWER" = "X" -a "X$SSVNC_BUILD_SKIP_STUNNEL" = "X" ]; then
	# list the viewer again.

	echo
	pline
	echo "LISTING, HELP, and LDD THE VNCVIEWER (again):" 
	echo
	sleep 1

	ls -l $dest/vncviewer$suff
	echo
	echo $dest/vncviewer$suff -h
	echo
	$dest/vncviewer$suff -h
	echo
	echo $LDD $dest/vncviewer$suff
	echo
	$LDD $dest/vncviewer$suff
fi
