Eon/Eiffel              INSTALLATION GUIDE                       19th Nov 1994

CONTENTS

 1. GENERAL INFORMATION
 2. VERSION NUMBERS
 3. INSTALLING ON MSDOS
 4. INSTALLING ON UNIX/LINUX
 5. LIMITATIONS
 6. EIFFEL IMPLEMENTATION DIFFERENCES
 7. C++ COMPILER PROBLEMS
 8. TROUBLE SHOOTING - MSDOS
 9. TROUBLE SHOOTING - UNIX
10. TROUBLE SHOOTING - GENERAL
11. TECHNICAL SUPPORT
12. ONLINE DOCUMENTATION


1. Archives for Eon/Eiffel are stored in the following formats:

MSDOS		pkzip (.zip)
UNIX/Linux	tar archive compressed with gzip (.taz)

You will need the relevant tools to unpack the archive. If you haven't got
them already, the site you obtained Eon/Eiffel from will probably have
them. If you received the product on disk, they will be included.



2. VERSION NUMBERING

The version number for a particular release of "Eon/Eiffel" can be 
found by running "eon" without any command line arguments. a typical
version number is:

3.1.2.2 (patch level 2)

It has five components, from left to right:

Eiffel's major release number
Eiffel's minor release number
Eon's major release number
Eon's minor release number
Eon's patch level

The patch level may need expanding on. The source code to Eon/Eiffel is
available on certain systems. To ensure this source code reflects the
most current version on the product, updates are distributed in the form 
of source code patches. The patch level tracks the number of patches applied
to the source code from which a particular release was generated.




3. MSDOS

 3.1 Change to the root directory of your C: drive and run:

	pkunzip -d eon3122p2.zip

	This will create an "eon" directory on C:

	If you want to place the "eon" directory elsewhere, do so, and
	then add:

	EON=drive:\directory\eon

	to your autoexec.bat file and reboot.

	For example, to put "eon" in D:\compilers:

	cd to d:\compilers
	unzip -d -p eon.zip
	set EON=d:\compilers\eon

 3.2	Select a C++ compiler. 

	You may set up a compiler by either:

	a) Changing to the "eon\default" directory and copying a ".cfg" file
  		of your choice to "eon.cfg".
	

	b) Set an environment variable to the compiler of your choice. For 
		example, if you want to use the configuration file "djgpp.cfg", 
		set EON_COMPILER to "djgpp".

 3.3	Add "\eon\bin" to your PATH environment variable.

 3.4	Make sure that you have at least 50 files set in you CONFIG.SYS file.

 3.5 You may want to set the USER environment variable. This allows the
	compiler to add an identifier to database records.

	For example:

	set USER=ANAME

 3.6	Change to the "eon\demos\hello" and build the database with the command

	eon -v1 hello

	If all goes well you will build a compiler called "hello.exe"

	When you run "hello.exe" you should get a greeting message. This
	indicates that the system is ready to use.



4. UNIX/LINUX

 4.1 Change to /usr directory and run the following command:

	gzip -r -c | tar xvf -

	This will create a directory called "eon31XX" in your "/usr" directory.

	If you want to place the "eon" directory elsewhere, do so, and
	then add the EON variable to your environment.


	For example, to put "eon31XX" in /u/compilers:

	cd to /u/compilers
	gzip -r -c | tar xvf -
	EON=/u/compilers/eon31XX ; export EON			(Bourne shell)

 4.2	Select a C++ compiler. 

	You may set up a compiler by either:

	a) Changing to the "eon/default" directory and copying a ".cfg" file
  		of your choice to "eon.cfg".
	

	b) Set an environment variable to the compiler of your choice. For 
		example, if you want to use the configuration file "gnu.cfg", 
		set EON_COMPILER to "gnu".

 4.3	Add "$EON/bin" to your PATH environment variable.

 4.4	Change to the "$EON/demos/hello" and build the database with 
     he command

	eon -v1 hello

	If all goes well you will build a compiler called "hello"

	When you run "hello" you should get a greeting message. This
	indicates that the system is ready to use.



5. LIMITATIONS

 5.1 MSDOS systems are limited to 506 classes. This odd limit imposed
	 by problems implementing Unique constants on a machines with a
	 16 bit integer size. It is a compromise figure that may change in
	 the future.



6. EIFFEL IMPLEMENTATION DIFFERENCES

Eon/Eiffel differs from the standard described in only a few small ways.
However a number of features have not yet been implemented. These are
described in the README file.

 6.1 It is only possible to have one class per file.

 6.2 The %U, NUL special character doesn't work. This is because the
	 C printf() used by Eon/Eiffel cannot output a \0.

 6.3 Strip only includes ancestors up to ANY. This keeps the size of the
   	 generated C++ code down.

 6.4 There is a limitation on the number of Unique constants on MSDOS systems.
	 This is due to the 16 bit integer size. You are limited to 65 Unique
	 constants per class.



7. C++ COMPILER PROBLEMS

 7.1 DJGPP
	
	The currently supported version of DJGPP does not support C signal(). 
	Until a ^C handler is included temporary files will not be tidied up 
	after a keyboard interrupt.



8. TROUBLE SHOOTING - MSDOS

 8.1 System resource exhausted
     Abort, Retry, Fail?

     This has been seen to occur on a machine with limited memory and has
     "SHARE" installed.  Share allocates buffers which consume a large
     amount of memory. Either use the /F:xxxx switch to allocate a different
     amount of memory or, if possible, don't use it at all.

	NOTE. Microsoft recommend running "SHARE" with /F:5100 and /L:512

 8.2 DJGPP Compilation hangs for no apparent reason.

     This has been observed a number of times. Removing "SHARE" from the
	system can cure the problem.

	NOTE. Microsoft recommend running "SHARE" with /F:5100 and /L:512

 8.3 If you are used to using CFTIME on Unix, note that it is not supported
	on MSDOS. This is used to set the format of the time and date display
	in the browser.
   


9. TROUBLE SHOOTING - UNIX

 9.1 Problems with Symbolic links on Unix. If the EON environment variable
	is set to a different name to that produced by C's getcwd() function
     problems will occur. 

	You will see a message complaining about duplicate classes. One of
	the path names printed will *not* be that of the EON variable, note
	this down.

	Take the following action:

	a) Change to $EON
	b) delete the database with "rm -r class.edb"
	c) set EON to point to the path name you noted
	d) Change to the "hello" directory
	e) Rebuild the database with "eon -v1 hello"

	This problem will be corrected in a later release

 9.2 If you use Conner P. Cahill's malloc debugger you will need to
      remove _STRING.H_ from the malloc.h file because it confuses the
	 Eiffel string class.
	


10. TROUBLE SHOOTING - GENERAL

 10.1 If a class complains about not understanding a basic operator
	 (such as '+') it is probably because the database wasn't correctly
	 built. Re-run "eon" specifying the -R flag.

 10.2 C++ headers

      When classes are being compiled, the C++ compiler may complain about 
	 prototype inconsistencies. Eon generates C++ prototypes based on 
	 Eiffel's "external" declaration. There is no way that these can 
	 be guaranteed to match those in a compilers header files. 
     
      The most common problem seems to be the addition of the "const" 
	 declaration.
     
      eg.  for atoi() Eon generates atoi (char *).  
		 gcc expects atoi(const char *).
     
      Currently the only way to resolve this is to change the compilers 
	 header file or to make a call to a matching C function call which 
	 can act as a wrapper.

 10.3 The C++ compiler is complaining about "true" and "false" being 
	 undeclared. This is due to a new C++ type called "bool". By default
	 Eon/Eiffel assumes that this is implemented in you compiler. This
	 message will result if this is not the case. 

	 You should add:

	 #define NEEDS_BOOL 

	 to "eon/bibt/ert.H

	 If you are using a gcc compiler with a version number of less than
	 2.6.0, you will need to add this.
	
 10.4 The C++ compiler generates an error in ert.H, when scanning the
	"bool" type. 

	 This is the reverse of the above "bool" type problem. Your compiler
	 supports the "bool" type but you still have NEEDS_BOOL defined.
	 You should track down the offending "#define NEEDS_BOOL" line in
	 "eon/bibt/ert.H" and remove it.
	

11. TECHNICAL SUPPORT

	The shareware version of Eon/Eiffel comes with no warranty and no
	obligatory support. 

	* If you have a question about the compiler please feel free to ask
	  but only via eMail please. eMail to "support@eonsw.demon.co.uk".
	  An immediate answer is not guaranteed.

 	* If you have a question about Eiffel generally or a programming 
	  problem, post it too the Eiffel news group, "comp.lang.eiffel". 
	  There are many experienced Eiffel programmers who will be happy 
	  to help.

	* If you find a bug, please report it via eMail to 
	  "support@eonsw.demon.co.uk". Describe the problem, with a failing
	  program. Give the Eon/Eiffel version number, the operating system
	  and hardware.

12. ONLINE DOCUMENTATION

	Run the program "vdoc". Use CURSOR UP/DOWN and PAGE UP/DOWN to
	browse or CURSOR LEFT/RIGHT followed by ENTER to select a topic.

	There is a help facility and a hardcopy print option.
