Instructions for compiling cc65 and the ca65 binutils:


Linux (and probably most other Unices)
--------------------------------------
                           
Preconditions:

You need the GNU C Compiler, Perl and sgml-tools installed.

The simple way:

From the main directory, use

        make -f make/gcc.mak

to build all binaries, libraries and the docs. Use

        make -f make/gcc.mak install

to install the files. Check the makefile before doing so and adjust the PREFIX
variable as you like it.


Step by step:

Enter the src/ directory and do a

       	make -f make/gcc.mak

This will build all executables. You may use

	make -f make/gcc.mak strip

to remove debugging information from the binaries.

After that, you need to compile the libraries. Do

	cd libsrc; make

HTML docs can be generated with

        cd doc; make html

That's it! Installation directories for the RPM packages are

	/usr/bin		        for the binaries
	/usr/lib/cc65/include	        for include files
	/usr/lib/cc65/lib	        for libraries and startup files
        /usr/share/doc/cc65-<version>   for documentation

When using these directories, you don't need to set the CC65_INC and
CC65_LIB environment variables. You may also use the /usr/local tree
for installation, but the compiler and linker have no predefined search
path for this directory, so you need the environment variables or
change the search paths in the source.



DOS using the DJGPP compiler
----------------------------

Most information in this section was provided by Keith W. Gerdes
(kwg@netzero.net). Thanks a lot!

The tmpfile() function in DJGPP has a bug and will not open the scratch
file in binary mode. If you have problems with the archiver (which uses
the tmpfile() function), you have two choices:

  1. Get a fix from http://www.cartsys.com/eldredge/djgpp-patches.html
     and apply it. This will solve the problem once and forever.

  2. For a temporary solution, in the file binutils/ar65/main.c, add the
     following lines:

     At top:

   	#include <fcntl.h>

     At start of main:

   	_fmode = O_BINARY;

     This will switch the default mode to binary and will work around the
     bug.

Keith sent me the following notes how to build the tools on a DOS system
using DJGPP (add your system type to CFLAGS if needed):

-------------------------------------------------------------------------

Here's my current batch file:

cd djgpp_v2\cc65

if exist bin\nul goto ahead
mkdir bin
mkdir lib
:ahead

cd src\common
make -f make\gcc.mak

cd ..\ar65
make -f make\gcc.mak
del ar65
strip ar65.exe
move ar65.exe ..\..\bin

cd ..\ca65
make -f make\gcc.mak
del ca65
strip ca65.exe
move ca65.exe ..\..\bin

cd ..\cc65
make -f make\gcc.mak
del cc65
strip cc65.exe
move cc65.exe ..\..\bin

cd ..\cl65
make -f make\gcc.mak
del cl65
strip cl65.exe
move cl65.exe ..\..\bin

cd ..\da65
make -f make\gcc.mak
del da65
strip da65.exe
move da65.exe ..\..\bin

cd ..\grc
make -f make\gcc.mak
del grc
strip grc.exe
move grc.exe ..\..\bin

cd ..\ld65
make -f make\gcc.mak
del ld65
strip ld65.exe
move ld65.exe ..\..\bin

cd ..\od65
make -f make\gcc.mak
del od65
strip od65.exe
move od65.exe ..\..\bin

cd ..\..

cd libsrc\common
make "CC=cc65" "CFLAGS=-Osir -g -t none -I../../include" "AS=ca65"
"AFLAGS=-t none"
ar65 a common.lib *.o
move common.lib ..\..\lib

cd ..\runtime
make "CC=cc65" "CFLAGS=-Osir -g -t none -I../../include" "AS=ca65"
"AFLAGS=-t none"
ar65 a runtime.lib *.o
move runtime.lib ..\..\lib

 --

In djgpp.env I use:

+LFN=Y

for the .depend file.

 --

And in autoexec.bat I have:

set CC65_INC=E:\djgpp_v2\cc65\include
set CC65_LIB=E:\djgpp_v2\cc65\lib
PATH=E:\djgpp_v2\cc65\binutils;%PATH%

-------------------------------------------------------------------------


OS/2 using the EMX compiler
---------------------------

If you're using OS/2 and have the EMX compiler and some GNU tools
installed, you may also be able to compile the tools and libraries
under OS/2. Mirco Miranda (mircomir@libero.it) sent me the following
notes:


-------------------------------------------------------------------------

CC65 make facilities V0.3 for OS/2 by Mirco Miranda
Date: 02/01/2000

OS2HOWTO.TXT... I wrote this very fast... I hope that you can
understand...

Emx is a porting of gcc under OS/2. I wrote some C code that with
simply (and few) preprocessor line can be compiled under OS/2 and Linux.
Now for emx there are projects like P2 that let's add to OS/2 a complete
Posix.1/SUS-like environment... I think that in the future the porting
from bsd unix (and I hope linux) environment can be made very easy...

These are the things because I tried to compile CC65 with emx/gcc...

WARNING: at time that as wrote compiling with emx/gcc give some warnings.


1. What do you need
-------------------

- emx/gcc 0.9D for OS/2

http://hobbes.nmsu.edu/cgi-bin/h-browse?sh=1&dir=/pub/os2/dev/emx/v0.9d

- gnu make

http://hobbes.nmsu.edu/pub/os2/dev/util/gnumake.zip

- bash

Use (ba)sh coming with this package.
There are many porting of unix shell for OS/2 and some don't
work propely.

- and finally the source package of the CC65
  http://www.cc65.org/#Download
  http://www.acc.umu.se/~arvid/cc65_mirror/cc65-sources-2.6.0.tar.gz

I hope that's all! I have the complete emx/gnu tools installed on
my OS/2 and I haven't test if you need other package. Sorry.


2. Setup environment in OS/2
----------------------------

Unpack source package in a Directory and
copy the files in src directory of source code.

Install emx 0.9D following the istruction comes with it.
Emx is well documented and I don't rewrite here emx documentation.

Unpack the gnu make tool and copy make-os2.exe in ...\emx\gnu directory
then rename it in make.exe

Copy xxsh.exe in ...\emx\gnu directory


If you want use my .cmd script (makeos2emx.cmd):

- copy it in src directory
- edit it and change the emx path(s) according with your(s).
  (set MYEMXPATH=c:\appos2\emx)

else

- add ...\emx\gnu directory on your libpath
- add ...\emx\gnu directiry on your path
- set comspec=...\emx\gnu\xxsh.exe
- run make -f make/gcc.mak in src directory
- run make in libsrc directory

3. My make files
----------------

If you use zap command, *.exe are not deleted.


4. Author & Disclaimer
----------------------

Mirco Miranda
mircomir@libero.it
ICQ#: 51640305

I haven't tested the generated code of cc65 executables with emx/gcc...
If you use the cc65 executables compiled with emx/gcc to compile the library,
please test it before hardly or productivity using.

Safety solution is compile the cc65 executables with Watcom and then
compile the library using gnu make and gnu (ba)sh coming with this package.
If you use this last solution you must have only installed emx runtime because
make.exe and xxsh.exe use it!

-------------------------------------------------------------------------



DOS, Windows, OS/2 using the Watcom Compiler
--------------------------------------------

This is what I'm using. You need the Borland make in addition to the
Watcom tools, or you have to change the makefile.

1. Copy %WATCOM%\src\startup\wildargv.c from your Watcom directory into
   binutils\common.

2. Enter

     	make -f make\watcom.mak

   in the src/ directory.

3. Use Linux to build the libraries:-) If you don't have Linux, get it
   now! More serious: There is no makefile to build the libraries under
   any of the DOS based operating systems. Use a batch file similar to
   the one above, or rewrite the makefile.