1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-11 01:05:25 +00:00
cc65/doc/compile.txt
cuz beb8b1b5cb Update, add note about master makefile
git-svn-id: svn://svn.cc65.org/cc65/trunk@3195 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-09-23 17:40:16 +00:00

317 lines
7.3 KiB
Plaintext

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.