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'."

Attachment: signature.asc
Description: PGP signature

_______________________________________________
vbox-dev mailing list
[email protected]
http://vbox.innotek.de/mailman/listinfo/vbox-dev

Reply via email to