# Virtual Network Computing
from ORL

## Old Contributions

Most of this page relates to building VNC version 3.3.1 for Unix platforms. Some of this may be relevant for building later versions, but see the main contributions page for up-to-date information.

### Monochrome (single-bit BW) display

Chris Hooper has supplied a patch to use the X vncviewer on single bit-plane displays.

Since the workstation I regularly use has only 1 bitplane (yes,
B&W displays are not very common anymore), I felt it necessary
to add support for this type of display to vncviewer.

The changes are rather minimal and apply only to vncviewer/x.c
from the vnc-3_3_1_unixsrc.tgz file.

- Chris Hooper cdh@microware.com

Chris's changes are included if you #define CDH after applying his patch bw-patch.txt.

### FreeBSD

Mike Smith writes:

I've produced a port of VNC for FreeBSD (see http://www.freebsd.org/handbook/handbook.html, section 4 for an explanation of what this means), and as a result of this I have a couple of patches for VNC that you might want to consider.
I also added support for fonts compressed with GNU Zip, which should make us lazy X users happy.

In the patches included, a couple of things:

The first patch begs some questions about the sh(1) and make(1) that you use for building this with. 8) GNU make appears to have a predisposition for ignoring errors during compilation.

The BSD-related Imake input files are from the same RedHat 4.2 distribution that you said you sourced the Linux files from (although to be honest they don't *look* like they came from there. 8) They have been tweaked slightly to reflect current usage.

The additions for gzipped fonts were taken directly from XFree86 3.3.1, modulo the removal of conditionalisation. Note that this requires the presence of libz on the build system - BSD and Linux systems will have this out of the box; you will need to build it separately for Solaris and most other commercial platforms.

There's also one case where <sys/types.h> isn't included before pulling in one of the networking headers. FreeBSD is fairly puritanical about avoiding header contamination, so this is conditionalised in case lack of idempotency on another platform causes the build to fail.

Also attached is a fairly radical patch to the makefile for vncjava that adds some installation rules and posixifies it so that it can be used on FreeBSD. I'm not sure whether this would cause you trouble with possible other archaic make(1) tools.
This is included more for completeness than because I expect you to do anything much about it.

- Mike Smith msmith@freebsd.org

Mike's patches are here - freebsd-patch.tar.gz

### HP-UX 10.20

Karl Hakimian writes:

I got Xvnc (and the rest of the vnc stuff) working on HPUX 10.20. Here's what I did.

The file libvncauth/d3des.c needs to be compiled with gcc.

Copy /usr/lib/X11/config/hp* to Xvnc/config

Alternatively, you can copy these files from any later version you have
installed.

Edit hp.cf Change or add the following lines

# The next line might want HPINPUT removed as well.
#define ExtensionOSDefines -DHPINPUT # -DXTESTEXT1
#define XhpServer NO
#define BuildXInputExt NO

#define BuildPex NO
#define BuildPexExt NO
#define XvncServer YES

In the directory Xvnc, run the vncxmkmf command

>From the top of your vnc tree, type

xmkmf
make world

The above failed for me when it tried to link Xvnc. It could not find
the library Xau (and I think some others). To fix that, I simply added
the library path to the Makefile in Xvnc/program/Xserver.

You will also need to make the following change:

-- Cut here for patch --
*** hw/vnc/sockets.c.orig Wed Jan 21 10:12:46 1998
--- hw/vnc/sockets.c Tue Mar 3 10:43:50 1998
***************
*** 389,395 ****
exit(1);

} else {
! if (errno != EWOULDBLOCK) {
return n;
}

--- 389,395 ----
exit(1);

} else {
! if (errno != EWOULDBLOCK && errno != EAGAIN) {
return n;
}

-- Cut here for patch --

-- Karl Hakimian - hakimian@aha.com

And Juraj Bednar bednar@isternet.sk writes:

HP-UX server and client binaries are available at ftp://rak.isternet.sk/pub/vnc-hpux. You may wish to make a link for this on a contribs page, so people can use this safely. The sources and binaries were made by Miroslav Luptak <luptak@snt.sk>

-- Juraj Bednar.

### SunOS 4.1.3

Karl Heinz Kremer wrote that he had no problems compiling the viewer, but the server took some work on his machine:

The diffs are no problem, it's just one line: I had to add one `#include <sys/types.h>` somewhere. The real problem was to get imake/xmkmf working. To do so I had to use the ones from a X11R6.3 installation on my SunOS w/ OpenWindows (SunOS's OpenWin is based on X11R3 or R4 and so imake and xmkmf will not work with your Imakefiles).

So the problem is getting a working version of imake/xmkmf.

- Karl Heinz

Karl Heinz simply added the #include to Xvnc/programs/Xserver/hw/vnc/auth.c. He later submitted a set of Makefiles to avoid the need for imake:

By extracting the Makefiles, I've created a method of compiling it on a OpenWindows only machine. I only had to remove the XDMCP support to make it OpenWindows compatible. As far as I can see, there is no need for the xdm support in Xvnc.

I also had to modify the top level Makefile so that it does not run vncxmkmf and all related commands. Now only a "make all" is done in the Xvnc directory.

I've attached the Makefiles. To use them extract them in the VNC source directory and run make.

- Karl Heinz khk@Kodak.COM

The Makefiles are here: SunOS.Makefiles.tgz

Karl Hakimian's patch for HPs also needs to be applied for SunOS 4. Here's the patch again:

-- Cut here for patch --
*** hw/vnc/sockets.c.orig Wed Jan 21 10:12:46 1998
--- hw/vnc/sockets.c Tue Mar 3 10:43:50 1998
***************
*** 389,395 ****
exit(1);

} else {
! if (errno != EWOULDBLOCK) {
return n;
}

--- 389,395 ----
exit(1);

} else {
! if (errno != EWOULDBLOCK && errno != EAGAIN) {
return n;
}

-- Cut here for patch --

### SGI

Several people have offered suggestions here. Markus Wild writes:

I've kinda "evolutionary" succeeded in building Xvnc by symlinking a bunch of files from /usr/lib/X11/config into Xvnc/config, then replacing sgi.cf by a real file and adding "#define XvncServer YES" and "#define BuildPex NO".

Also had to fiddle with $IMAKEINCLUDE. As I said, the process was a bit evolutionary;-) I can tar up the whole tree (ok, I'll remove the .o files
before..) and put it on our ftp server if there's interest.

- Markus Wild mw@eunet.ch

And Parag Batavia adds:

I used Markus Wild's explanation to compile VNC on my SGI O2 (Irix 6.6.3). Here are fleshed out instructions, with thanks to Markus for the initial pointers:

Step 1:
You need to copy the proper sgi Imake configuration files into Xvnc/config:

`cd Xvnc/Xvnc/config`
`cp /usr/lib/X11/config/sgi* .`

Step 2:
Edit the sgi.cf file, and add the following after the line containing
"#define RenameXlibFofXKB":

`#define BuildPex NO`
`#define XvncServer YES`
`#define BuildPexExt NO`

Step 3:
run vncxmkmf, which is in Xvnc/Xvnc.

Step 4:
Go to the top level, and type 'xmkmf', then 'make world'. The compiler
will chug along for a while. Now, on my setup, there was a problem when it got to Xvnc/programs/Xserver/cfb[16/32]. The make file is supposed to create symlinks to source and header files in Xserver/cfg, but it doesn't link the header files properly. As the compiler complains about each header, I just typed 'make <headername>' (from either Xserver/cvfb16 or Xserver/cfb32). You'll have to do this (I think) 4 times in each directory. This seems to be a makefile bug. After that, it'll continue making, and it should work.

I didn't have to mess w/ font settings, or anything like that. Except for
the above, vnc compiled straightaway.

Good luck...

- Parag Batavia parag@ri.cmu.edu

Richard Offer <offer@morgaine.engr.sgi.com> writes:

I've simplified the build process for SGI (Irix 6.2 and 6.5 (currently in beta)).

It builds out of the box now (the only remaining problem is that of fonts, I haven't fixed that one, since this is user specific).

The following patch is a hack, the best solution would be to pass an additional -I/usr/lib/X11/config to the imake program (after Xvnc/config), but there isn't an easy was to pass this information down the various levels.

There is also no way to tell imake to build the program not using the default ABI (o32 on Irix 6.2, n32 on Irix 6.4+), the user normally does this via additional args to xmkmf (-n32).

If I can think of a (reproducible, ie not via env. variables) workaround for this (building n32 on Irix 6.2), then I'll add vnc to the SGI freeware catalog.

richard.

Anyway here is the patch to the top level Imakefile (watch out for lost TABs).

    *** vnc-dist/Imakefile    Thu Jan 22 12:18:18 1998
    --- vnc/Imakefile    Tue Mar 24 11:18:28 1998
    ***************
    *** 11,16 ****
    --- 11,34 ----
    MakeSubdirs($(SUBDIRS))
    DependSubdirs($(SUBDIRS))

    + #ifdef SGIArchitecture
    + XCOMM This is a hack, but it works on Irix 6.2 and 6.5 (I dont have easy
    + XCOMM access to other releases --- richard <offer@sgi.com>
    + Makefiles::
    +     cd Xvnc/config; \
    +     $(RM) Motif.rules.sgi Motif.tmpl.sgi sgiIncludes.tmpl sgiLib.rules
    sgiLib.tmpl sgi.cf ; \
    +     for f in $(CONFIGDIR)/Motif.rules.sgi $(CONFIGDIR)/Motif.tmpl.sgi
    $(CONFIGDIR)/sgiIncludes.tmpl $(CONFIGDIR)/sgiLib.rules
    $(CONFIGDIR)/sgiLib.tmpl; do \
    +         $(LN) $$f . ; done ; \
    +     sed -e '/operating system/a\
    + /* \
    + * The Following three lines have been added as part of the VNC build, \
    + * they are not supplied by or supported by SGI ---richard <offer@sgi.com>\
    + */\
    + #define BuildPex NO\
    + #define BuildPexExt NO\
    + #define XvncServer YES' < /usr/lib/X11/config/sgi.cf > sgi.cf
    + #endif /* SGIArchitecture */
    +
    all::
        (set -e; cd Xvnc; unset MAKEFLAGS MAKELEVEL; \
        ./vncxmkmf; make Makefiles; make depend; make all )

### Redhat Linux 5.0

Mark Spencer writes:

This patch for VNC allows it to build under RedHat 5.0 on my pentium system. It sets up the compiler to build a pentium optimized version, so I assume that you have pgcc installed. If you don't, you need to edit the Xvnc/config/linux.cf and replace the -mpentium and -O6 options with -m486 or whatever is appropriate for you architecture. This patch applies the following functionality:

1) Builds under libc6

2) Builds pentium optimized

3) SUPPORT FOR GZIP'D FONTS!!

- Mark Spencer markster@marko.net

Mark's patch is available from his FTP server ftp://ftp.marko.net/pub/vnc/ and also from here. vnc-pgcc-libc6-3_3_1.patch.gz

### AIX

Harold van Oostrum writes:

I've been using both server and client on AIX 4.2.1
without problems for about a week now.
A (uuencoded gzipped) patch is included below.
Basically it's just the imake config files for ibm
from the XFree86-3.3.1 sources, most changes had to
do with the fact that AIX 4.2 has only X11R5.
Warnings I got during compilation I simply ignored.
It works for me, but ymmv.

-- Harold rosa@dds.nl

Harold's patches are here: vnc-aix.patch.gz

For comments, feedback, etc, please see the 'Keeping in touch' page.
Copyright 1998 - The Olivetti & Oracle Research Lab