I've attached a small patch for the configure script allowing user to pass the --enable-vnc configuration option to it. The patch will check for the existence of libvncserver by compiling a small program which also checks that the libvncserver is of version of at least 0.9.7.
The version-checking code is a bit crude since the libvncserver doesn't provide version information as a numeric constant in its headers. I've put down several lines of code for converting the constant char array into an unsigned integer. I'm well aware that the code I've provided might be suboptimal. If you have any suggestions on improving this in any way, or if you need it to be cleaner and safer, please let me know. The patch is licensed under the MIT license. It has already been tested on Gentoo, and is part of the official Gentoo ebuild (I'm the one who submitted it there, you can take a look at the relevant bug report on Gentoo Bugtracker - http://bugs.gentoo.org/show_bug.cgi?id=355481). The original patch for the 3.2.x series was also available at some time, but it generated no response from the list at time. -- Branko Majic Jabber: [email protected] Please use only Free formats when sending attachments to me. Бранко Мајић Џабер: [email protected] Молим вас да додатке шаљете искључиво у слободним форматима.
--- configure.old 2011-02-18 20:22:18.879463002 +0100
+++ configure 2011-02-18 20:30:22.355463011 +0100
@@ -88,6 +88,7 @@
WITH_OPENGL=1
WITH_HARDENING=1
WITH_VDE=0
+WITH_VNC=0
WITH_DOCS=1
BUILD_LIBXML2=
BUILD_LIBXSLT=
@@ -123,6 +124,8 @@
MESA="-lGL"
INCZ=""
LIBZ="-lz"
+INCVNCSERVER=""
+LIBVNCSERVER="-lvncserver"
CXX_FLAGS=""
if [ "$OS" = "freebsd" ]; then
INCCURL="-I/usr/local/include"
@@ -956,6 +959,47 @@
}
#
+# Check for libvncserver, needed for VNC in OSE
+#
+check_vncserver()
+{
+ test_header libvncserver
+ cat > $ODIR.tmp_src.cc <<EOF
+#include <cstdio>
+#include <rfb/rfbconfig.h>
+
+extern "C" int main()
+{
+ const char* v=LIBVNCSERVER_VERSION;
+ unsigned int major = 0, minor = 0, micro = 0;
+
+ for (; *v !='.' && *v != '\0'; v++) major = major*10 + *v-'0';
+ if (*v == '.') v++;
+ for (; *v !='.' && *v != '\0'; v++) minor = minor*10 + *v-'0';
+ if (*v == '.') v++;
+ for (; *v !='.' && *v != '\0'; v++) micro = micro*10 + *v-'0';
+
+ printf("found version %s", LIBVNCSERVER_PACKAGE_VERSION);
+ if (major*10000 + minor*100 + micro >= 907)
+ {
+ printf(", OK.\n");
+ return 0;
+ }
+ else
+ {
+ printf(", expected version 0.9.7 or higher\n");
+ return 1;
+ }
+}
+EOF
+ if test_compile "$LIBVNCSERVER $INCVNCSERVER" libvncserver libvncserver; then
+ if test_execute; then
+ cnf_append "VBOX_WITH_VNC" "1"
+ fi
+ fi
+}
+
+#
# Check for libcurl, needed by S3
#
check_curl()
@@ -2115,6 +2159,7 @@
[ $WITH_KMODS -eq 1 ] && echo " --disable-kmods don't build Linux kernel modules (host and guest)"
[ $WITH_OPENGL -eq 1 ] && echo " --disable-opengl disable OpenGL support (2D & 3D)"
[ $WITH_GSOAP -eq 0 ] && echo " --enable-webservice enable the webservice stuff"
+[ $OSE -eq 1 ] && echo " --enable-vnc enable the VNC server"
[ $WITH_DOCS -eq 1 ] && echo " --disable-docs don't build the documentation"
[ "$OS" = "linux" -o "$OS" = "freebsd" ] && echo " --enable-vde enable VDE networking"
cat << EOF
@@ -2280,6 +2325,9 @@
--enable-webservice)
[ $WITH_GSOAP -eq 0 ] && WITH_GSOAP=1
;;
+ --enable-vnc)
+ WITH_VNC=1
+ ;;
--disable-hardening)
WITH_HARDENING=0
;;
@@ -2553,6 +2601,15 @@
cnf_append "VBOX_WITH_DOCS_PACKING" ""
fi
+# VNC server support
+if [ $OSE -ge 1 ]; then
+ if [ $WITH_VNC = 1 ]; then
+ check_vncserver
+ else
+ cnf_append "VBOX_WITH_VNC" ""
+ fi
+fi
+
# success!
echo
echo "Successfully generated '$CNF' and '$ENV'."
signature.asc
Description: PGP signature
_______________________________________________ vbox-dev mailing list [email protected] http://vbox.innotek.de/mailman/listinfo/vbox-dev
