mirror of
https://github.com/cc65/cc65.git
synced 2024-08-21 16:29:27 +00:00
292 lines
6.8 KiB
Plaintext
292 lines
6.8 KiB
Plaintext
|
|
|
|
Instructions for compiling cc65 and the ca65 binutils:
|
|
|
|
|
|
Linux (and probably most other Unices)
|
|
--------------------------------------
|
|
|
|
You need the GNU C compiler. 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
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
|
|
|