| #!/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 |