<!doctype linuxdoc system>
<article>
 
<!-- made up title -->
<title> Information for ISC Users
<author> Michael Rohleder
<date> 24 January 1995
<toc>

<sect> X11R6/XFree86&tm; on Interactive Unix <p>

This document provides some additional information about
compiling and using X11R6 and XFree86 on your
Interactive Unix, also referred to as ISC.

If you have any suggestions, comments, fixes or ideas regarding
X11R6/XFree86 on Interactive Unix, send e-mail to

<em>michael.rohleder%iktffm.uucp@Germany.EU.net</em><p>
Bug Reports should be sent to<p>
<em>XFree86@XFree86.Org</em><p>
Questions or anything else should be posted to the NewsGroup<p>
<em>comp.windows.x.i386unix</em><p>

There is currently no support for shared Libraries so it will be filespace
consuming if you want to build X11-clients with X11R6. Best you mix X11R6
Server with X11R5 and X11R4 clients. And only compile clients who need the 
new facilities provided in the X11R6 Libraries against them.

<sect> Things needed for compiling the sources<p>

<descrip>
    <tag> gcc-2.6.x </tag>
          Use the highest number for x you found.
          Fresco will only build 2.6.3 and later.

	  I'd tried gcc Version 2.5.8, 2.6.0, 2.6.2 and 2.6.3.  

          2.6.2 and 2.6.3 had some problems compiling 3.1.  
          2.6.3 builds since 3.1.0A (beta) without problem.
    <tag> libg++-2.6.x </tag>
          The needed g++ Libraries for use with g++ 2.6.x
    <tag> binutils-2.5.2 </tag>
          You could use the assembler and linker
          the assembler is most preferred,and the linker is needed
          at least if you want to link libFresco.a within a Program.
          Don't use strip and ar/ranlib, the first generates buggy binaries
          when stripping (at least on my machines) and the last requires 
          the use of ranlib after creating an archive, this is not configured.
</descrip>          

<sect> Changes to the System Header Files<p>

You have to change some of the standard header files supplied with
your version of Interactive. You also need to change some of the include
files in the gcc-lib/include directory.

Let us say the gcc-files are in directory 

<tt>/usr/local/lib/gcc-lib/i[345]86-isc[34].[0-9]/2.6.x</tt>

referred to as <tt>"gcc-lib"</tt>

     <sect1><tt>/usr/include/sys/limits.h</tt><p>
	and <tt>gcc-lib/include/sys/limits.h</tt> 

          <verb>
          #ifndef OPEN_MAX
          #ifdef ISC
          #define OPEN_MAX        256
          #else
          #define OPEN_MAX        20
          #endif
          #endif
          </verb>
          <tt>OPEN_MAX</tt> had to be increased to prevent
          Xlib Errors (max no. of clients reached).
<p>
     <sect1><tt>/usr/include/sys/ioctl.h</tt><p>
        surrounded by 
        <verb>
        #ifndef _IOCTL_H 
        #define _IOCTL_H
        ...
        #endif
        </verb>
        to prevent multiple includes.
<p>
     <sect1><tt>/usr/include/errno.h</tt><p>
        (and the corresponding gcc-include-file)
        add <verb>
        #include <net/errno.h>
        </verb>
        because of <bf>EWOULDBLOCK</bf> undefined in several places 
        regarding lbx.
        Surround <tt>/usr/include/net/errno.h</tt> with

        <verb>
        #ifndef _NET_ERRNO_H
        #define _NET_ERRNO_H
        ...
        #endif
        </verb>

        to prevent multiple includes were <tt>&lt;net/errno.h&gt;</tt>
        is explicit included from the sources.
<p>
      <sect1><tt>/usr/include/rpc/types.h</tt><p>
         copy this file to <tt>gcc-lib/include/rpc/types.h</tt>
         and change the declaration of <bf>malloc()</bf> to

         <verb>
         #if !defined(__cplusplus)
         extern char *malloc();
         #endif
         </verb>

         Note that this is only necessary if you want to build Fresco
          

<sect> make World <p>
<code>
BOOTSTRAPCFLAGS="-DISC [-DISC30 | -DISC40] -DSYSV [-Di386]"
</code>

<descrip>
<tag>-DISC -DISC30</tag>
	these two defines are necessary to build the release
                   I don't know if the build will succeed for ISC versions 
                   prior than 3.x

<tag>-DISC40</tag>
	are only for getting the ISC version and therefore
                   set the HasSymLinks to Yes ('cause symbolic linking
                   were only supported from Version 4.x using the S5L 
                   Filesystem)<p>
		   A build on ISC 4.x only needs -DISC40 defined in
		   the BOOTSRAPCFLAGS -- the -DISC30 will be included
		   automatically.

<tag>-DSYSV &lsqb;-Di386&rsqb;</tag>
	standard defines for SystemV Release3 on x86 platform.
		  You don't need to explicitly define -Di386 because
		  this is pre-defined in /lib/cpp.

</descrip>
<code>
  You maybe got some warnings from makedepend regarding that it can
  not find the file <sys/mman.h>.
  Don't worry about it, the actual compile will be alright.
  If you don't want to see this, generate an empty file sys/mman.h
  under /usr/include
</code>

<sect> linear Addressing <p>

<itemize>
<item> Compiling &hellip; <p>
If you want to include support for linear addressing into the server binaries,
you have to define 
<verb>
#define HasSVR3mmapDrv		YES
</verb>
in xf86site.def.
This is necessary to get the correct setup to be defined for the build.

You need the mmap-2.2.3 driver installed on your system.
If you don't have the mmap-2.2.3 driver installed, you could use the driver
source in the file 
<verb>
xc/programs/Xserver/hw/xfree86/etc/mmapSVR3.shar
</verb>
Build and install the driver as instructed. You'll need the file
/usr/include/sys/mmap.h for compiling the X11R6/XFree86 source tree,
with linear addressing enabled.

<item> Using &hellip; <p>

To use the linear address-mapping of the framebuffer you need the mmap Driver
by Thomas Wolfram (Version 2.2.3) installed in your Kernel.
If you have installed it, most servers will use linear addressing by default.
Others may require
setting the 
<verb>
Option "linear"
</verb>
in your XF86Config.   Check the appropriate manual pages for details.
Maybe you need also the MemBase specified in XF86Config. Please refer to the 
appropriate README of your Card/Server, for 
<bf>How to use..</bf>.
Note that the P9000 server will not work at all unless linear addressing
is available.

I could only test two cards against the linear addressing.
<itemize>
	<item>Spea/V7 Vega - clgd5428 - VLB<p>
	   with 32MB MainMemory installed I couldn't use it.
           My tests with different mappings into the address space
           results in no Graphics displayed or a spontaneous reboot.<p>
	<item>ATI GUP      - mach32   - VLB<p>
           with 32MB MainMemory installed I could map the CardMemory
           at MemBase 0x06400000 ~ 100MB. I could work with all clients
           until I try to activate a Motif 1.1.1 InputField inside a 
           Motif Client like Mosaic-2.4 or xplan. This results in a 
           crash of the XServer. 
</itemize>

</itemize>

<sect>Fresco<p>

<itemize>
<item> Compiling &hellip; <p>
If you want to include the build of the Fresco library, you have to setup
<verb>
#define BuildFresco		YES
</verb>
in either xf86site.def (just uncomment the appropriate definition.

<item> Using &hellip; <p>

To use the library you need the gnu-ld installed.  The standard ISC ld
couldn't link libFresco.a inside a program.

I could test the Lib. with the sample Fresco Application fdraw, which compiled
without problem. 
It seems that Fresco applications has some problems running with display :0.0
on Interactive. (I test it only against standard XLOCAL transport mechanism, 
this could maybe improved by using another XLOCAL configuration). 
The fdraw window is closed with the following message:
<verb>
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
</verb>
As a workaround you could specify local-machinename:0 to the -display Argument
when starting the Fresco application. On TCP/IP transport you got a workable Fresco App.

</itemize>

<sect> Installation <p>

After your <bf>make World BOOTSTRAPCFLAGS="&hellip;</bf> succeed, 
<verb>
make install
</verb>
to install in /usr/X11R6. Make sure you have enough space, and /usr/X11R6 
exists either as a directory or a symlink to another directory maybe in another
filesystem.
<verb>
make install.man
</verb>
to install the compressed nroff versions of the manual pages into 
/usr/X11R6/man. This directory will by generated if it doesn't exist.
<verb>
make install.linkkit
</verb>
to install the server binary LinkKit into /usr/X11R6/lib/Server.

<code>
       You could tune the Kernel using the command-file
       
       /usr/X11R6/lib/X11/etc/xf86install
       
       This will increase the available pseudo devices, 
       some Tunable Parameters and install some files 
       to use inside sysadm. You could also install 
       some additional Fonts and Terminal files.
</code>

<sect>Using &hellip; <p>

<itemize>
<item>Keyboard:<p>
       You don't need any modmap-File to get your keyboard
       working with any iso-8859-1 Font. Simply enable 

   <itemize>
	<item>LeftAlt  Meta

	<item>RightAlt ModeShift

	<item>RightCtl Compose
   </itemize>

        in your XF86Config - Section "Keyboard"

<item>xpcterm: <p>
        if you want to get the German 'Umlaut' inside your ISC X11R4 client
        xpcterm when you are using the ega/vga font. Set up the
        user's .Xdefaults to contain:
        <verb>
         XEga*AT386.Translations: #override \
                   Shift<Key>odiaeresis: string(0x99) \n\
                        <Key>odiaeresis: string(0x94) \n\
                   Shift<Key>adiaeresis: string(0x8e) \n\
                        <Key>adiaeresis: string(0x84) \n\
                   Shift<Key>udiaeresis: string(0x9a) \n\
                        <Key>udiaeresis: string(0x81) \n\
                   Shift<Key>ssharp: string(0x3f) \n\
                    Meta<Key>ssharp: string(0x5c)  \n\
                        <Key>ssharp: string(0xe1)
         </verb>

         The only disadvantage is that you have to use <tt>Alt</tt> instead of
         <tt>AltGr</tt> to get the <tt>&bsol;</tt> Backslash (on a German
         Keyboard)

        You have to call your xpcterm with the option 
        <tt>-name XEga -fn ega</tt>
         
	<item>Switching between X11R5 and X11R6 configuration<p>
          to compile X11-Clients as either R6 or R5 clients,
          should be as easy as you only switch the PATH components
          so that either <tt>/usr/X11R6/bin/xmkmf</tt> or 
          <tt>/usr/X386/bin/xmkmf</tt> would make the new Makefile.
          
</itemize>
                 
<sect> Acknowledgements <p>

All thanks should go to the members of the 
<bf>XFree86 Team</bf> for their great work 
and the <bf>X Consortium</bf> for their Public Release of X11R6, 
as to all who contribute to this excellent piece of free software.


<verb>
$XConsortium: isc.sgml,v 1.2 95/01/27 16:14:38 kaleb Exp $
$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/isc.sgml,v 3.3 1995/01/27 04:51:55 dawes Exp $
</verb>

</article>
