123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- #!/bin/bash
- # -*- mode: shell-script; coding: UTF-8 -*-
- #
- # Build Xvnc with Xorg 7.4 or 7.5
- #
-
- set -e
-
- PREFIX=
- MAKE="make"
- PARALLEL_MAKE=0
- XORG_VERSION=7.5
- XONLY=0
- CFGHOST=
- SRCDIR=`dirname $0`/..
-
- modules="dri2proto \
- libpthread-stubs \
- glproto \
- xf86vidmodeproto \
- xextproto \
- xproto \
- kbproto \
- inputproto \
- xcmiscproto \
- bigreqsproto \
- fixesproto \
- damageproto \
- xf86driproto \
- randrproto \
- renderproto \
- scrnsaverproto \
- resourceproto \
- fontsproto \
- videoproto \
- compositeproto \
- xineramaproto \
- libdrm \
- libXau \
- xtrans \
- libXdmcp \
- libX11 \
- libXext \
- libXxf86vm \
- libICE \
- libSM \
- libXt \
- libXmu \
- libXfixes \
- libXdamage \
- libXi \
- libxkbfile \
- libfontenc \
- libXfont \
- libpciaccess \
- pixman"
-
- init()
- {
- update_modules
-
- pushd xorg
- tar jxf ~/.tigervnc-xorg-$XORG_VERSION/util-macros.tar.bz2
- pushd util-macros-*
- echo "Building macros"
- ./configure --prefix=${PREFIX}
- ($MAKE install)
- popd
-
- pushd xserver
-
- patch -p1 < $SRCDIR/unix/xserver18.patch
- for all in `find $SRCDIR/unix/xorg-$XORG_VERSION-patches/ -type f |grep '.*\.patch$'`; do
- echo Applying $all
- patch -p1 < $all
- done
-
- popd
- popd
- }
-
-
- update_modules()
- {
- if [ -d xorg ]; then rm -rf xorg; fi
- if [ -d xorg.build ]; then rm -rf xorg.build; fi
- mkdir xorg
- pushd xorg
- $SRCDIR/unix/download-xorg-$XORG_VERSION
- for module in ${modules}; do
- tar jxf ~/.tigervnc-xorg-$XORG_VERSION/${module}.tar.bz2
- done
-
- [ -r ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.bz2 ] && \
- tar jxf ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.bz2
- [ -r ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.gz ] && \
- tar zxf ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.gz
-
- tar jxf ~/.tigervnc-xorg-$XORG_VERSION/freetype.tar.bz2
- tar jxf ~/.tigervnc-xorg-$XORG_VERSION/xorg-server.tar.bz2
- cp -r $SRCDIR/unix/xserver xserver
- cp -r xorg-server-1.*/* xserver
- popd
- }
-
-
- build ()
- {
- if [ $XONLY -eq 0 ]; then
-
- # Build VNC
- echo "*** Building VNC ***"
- cmake -G"Unix Makefiles" ${1+"$@"} -DUSE_INCLUDED_ZLIB=1 -DBUILD_STATIC=1 $SRCDIR
- $MAKE
-
- # Build Xorg
- echo "*** Building Xorg ***"
- pushd xorg
-
- # build freetype
- echo "*** Building freetype ***"
- pushd freetype-*
- ./configure ${CFGHOST} --prefix=${PREFIX} --enable-static --disable-shared
- if [ $? -ne 0 ]; then
- echo "Failed to configure freetype."
- exit
- fi
- $MAKE install
- popd
-
- for module in ${modules}; do
- extraoptions=""
- cd ${module}-*
- echo ======================
- echo configuring ${module}
- echo ======================
- if [ "${module}" = "libX11" ]; then
- extraoptions="${extraoptions} --without-xcb --disable-specs"
- fi
- if [ "${module}" = "libSM" ]; then
- extraoptions="${extraoptions} --without-libuuid"
- fi
- if [ "${module}" = "pixman" ]; then
- extraoptions="${extraoptions} --disable-gtk"
- fi
- if [ "${module}" = "libXfont" ]; then
- extraoptions="${extraoptions} --with-freetype-config=${PREFIX}/bin/freetype-config"
- fi
- OLD_CFLAGS=${CFLAGS}
- OLD_CXXFLAGS=${CXXFLAGS}
- CFLAGS=${CFLAGS}' -fPIC'
- CXXFLAGS=${CXXFLAGS}' -fPIC'
- export CFLAGS CXXFLAGS
- ./configure ${CFGHOST} --prefix="${PREFIX}" ${extraoptions} --enable-static --disable-shared
- CFLAGS=${OLD_CFLAGS}
- CXXFLAGS=${OLD_CXXFLAGS}
- export CFLAGS CXXFLAGS
- echo ======================
- echo building ${module}
- echo ======================
- if [ $? -ne 0 ]; then
- echo "Failed to configure ${module}."
- exit
- fi
- $MAKE install
- cd ..
- done
-
- # build mesa
- echo "*** Building Mesa ***"
- pushd Mesa-*
- ./configure ${CFGHOST} --prefix=${PREFIX} --disable-driglx-direct --with-dri-drivers=swrast --with-driver=dri --disable-glut --without-demos
- if [ $? -ne 0 ]; then
- echo "Failed to configure Mesa."
- exit
- fi
- $MAKE
- $MAKE install
- popd
-
- popd
-
- fi # XONLY
-
- # build xserver
- echo "*** Building xserver ***"
- pushd xorg/xserver
- autoreconf -fiv
- XORGCFGFLAGS="--disable-dri --enable-dri2 --disable-composite --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive --disable-config-dbus --disable-config-hal --disable-config-udev --with-sha1=libgcrypt SHA1_LIB=-lcrypto --disable-shared --enable-static ${XORGCFGFLAGS}"
- ./configure ${CFGHOST} --prefix=${PREFIX} ${XORGCFGFLAGS}
- if [ $? -ne 0 ]; then
- echo "Failed to configure X server."
- exit
- fi
- $MAKE TIGERVNC_SRCDIR=$SRCDIR install
- popd
- }
-
- rebuild ()
- {
- # Build VNC
- echo "*** Building VNC ***"
- $MAKE ${1+"$@"}
-
- # build xserver
- echo "*** Building xserver ***"
- pushd xorg/xserver
- $MAKE TIGERVNC_SRCDIR=$SRCDIR install ${1+"$@"}
- popd
- }
-
-
- usage ()
- {
- echo "Usage: $0 init [-version <7.4 | 7.5>]"
- echo
- echo " $0 build [-version <7.4 | 7.5>]"
- echo " [additional CMake flags]"
- echo
- echo " $0 rebuild [additional make options]"
- echo
- echo " $0 update [-version <7.4 | 7.5>]"
- echo
- exit 1
- }
-
- if [ -x '/usr/bin/getconf' -a "$PARALLEL_MAKE" = "1" ]; then
- MAKE_PARALLEL=`/usr/bin/getconf _NPROCESSORS_ONLN 2>&1`
- [ "$MAKE_PARALLEL" -gt 1 ] && MAKE="$MAKE -j$MAKE_PARALLEL"
- fi
-
- while [ $# -gt 0 ]
- do
- case "$1" in
- init) MODE=init ;;
- build) MODE=build ;;
- xbuild) MODE=build; XONLY=1 ;;
- rebuild) MODE=rebuild ;;
- update) MODE=update ;;
- -parallel) PARALLEL_MAKE=1; ;;
- -srcdir) SRCDIR=$2; shift ;;
- *) break ;;
- esac
- shift
- done
-
- pushd $SRCDIR
- SRCDIR=`pwd`
- echo "*** Using TigerVNC source tree at $SRCDIR ***"
- popd
-
- if [ "`pwd`" = "$SRCDIR/unix" ]; then
- cd $SRCDIR
- fi
-
- if [ "$PREFIX" = "" ]; then
- PREFIX=`pwd`/xorg.build
- fi
-
- if [ "$MODE" = "build" ]; then
- if [ ! -d ./xorg.build/syslib ]; then
- mkdir -p ./xorg.build/syslib
- fi
-
- for i in "$@"; do
- case "$i" in
- CC=*) CC=`echo $i | sed s/^CC=//g` ;;
- CXX=*) CXX=`echo $i | sed s/^CXX=//g` ;;
- CFLAGS=*) CFLAGS=`echo $i | sed s/^CFLAGS=//g` ;;
- CXXFLAGS=*) CXXFLAGS=`echo $i | sed s/^CXXFLAGS=//g` ;;
- LDFLAGS=*) LDFLAGS=`echo $i | sed s/^LDFLAGS=//g` ;;
- esac
- done
- if [ "$CC" = "" ]; then
- CC=gcc
- fi
- if [ "$CXX" = "" ]; then
- CXX=g++
- fi
- if [ "$CFLAGS" = "" ]; then
- CFLAGS=-O3
- fi
- if [ "$CXXFLAGS" = "" ]; then
- CXXFLAGS=-O3
- fi
- CFLAGS="$CFLAGS -fPIC"
- CXXFLAGS="$CXXFLAGS -fPIC"
- LDFLAGS="$LDFLAGS -static-libgcc -L`pwd`/xorg.build/syslib"
- echo CC = $CC
- echo CXX = $CXX
- echo CFLAGS = $CFLAGS
- echo CXXFLAGS = $CXXFLAGS
- echo LDFLAGS = $LDFLAGS
- if [[ $CFLAGS = *-m32* ]]; then
- CFGHOST="--host i686-pc-linux-gnu"
- fi
- STATICLIBS='libcrypto.a libz.a'
- for lib in $STATICLIBS; do
- if [ -f ./xorg.build/syslib/$lib ]; then
- rm -f ./xorg.build/syslib/$lib
- fi
- done
- IS64BIT=`echo -e "#ifdef __x86_64__\nis64bit_yes\n#else\nis64bit_no\n#endif" | $CC $CFLAGS -E - | grep is64bit`
- STATICLIBDIR=
- case $IS64BIT in
- is64bit_yes)
- if [ -d /usr/lib64 ]; then STATICLIBDIR=lib64;
- else STATICLIBDIR=lib; fi
- ;;
- is64bit_no)
- if [ -d /usr/lib32 ]; then STATICLIBDIR=lib32;
- else STATICLIBDIR=lib; fi
- ;;
- *)
- echo "Cannot determine whether compiler output is 64-bit or 32-bit. Are you using GCC?"
- exit 1
- ;;
- esac
- for lib in $STATICLIBS; do
- if [ -f /usr/$STATICLIBDIR/$lib ]; then
- ln -fs /usr/$STATICLIBDIR/$lib ./xorg.build/syslib
- else
- if [ -f /$STATICLIBDIR/$lib ]; then
- ln -fs /$STATICLIBDIR/$lib ./xorg.build/syslib
- else
- DYLIB=`echo $lib | sed s/\\\.a/\\.so/g`
- if [ -f /usr/$STATICLIBDIR/$DYLIB -o -f /$STATICLIBDIR/$DYLIB ]; then
- echo WARNING: Cannot find suitable $lib. Xvnc will depend on $DYLIB.
- fi
- fi
- fi
- done
- fi
-
- export ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
- export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig:${PREFIX}/share/pkgconfig"
-
- case "$MODE" in
- init) init ;;
- build)
- export CFLAGS CXXFLAGS LDFLAGS
- build ${1+"$@"};
- ;;
- rebuild) rebuild ${1+"$@"} ;;
- update) update ;;
- *) usage ;;
- esac
|