You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libtdevnc/x11vnc/misc/enhanced_tightvnc_viewer/build.unix

483 lines
9.4 KiB

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