How to start
From Lazarus-ccr
Contents |
[edit] How to start
[edit] Setting up the development environment
- Install the most recent FPC release for your operating system, get it here
- Get the latest FPC source via subversion, read here how to do so.
- Test your setup:
- Change to the directory fpc
- type make all and test see if it works without problems. If you've problems with the build, check the Build FAQ.
- If you wish to do so, you can install the newly generated compiler with make install (This may need sudo).
Now you're ready to modify the compiler.
[edit] Directory layout of the compiler
The compiler sources are located in fpc/compiler and its subdirectories.
- fpc/: the main directory
- compiler/: files common for all target processors.
- The processor specific files are in subdirectories alpha, arm, powerpc, i386 (i386 only), ia64, m68k, mips, powerpc, powerpc64, sparc, x86 (x86 general) and x86-64 (x86-64 only).
- systems/: It contains the information files for the supported operating systems. [ 1 ]
- msg/: It contains the compiler messages in various languages.
- utils/: it contains mainly help programs for compiler development. The are usually not important at the beginning.
- compiler/: files common for all target processors.
[edit] Notes
[1]
The i_*.pas files contain the information that is necessary for either hosting or building a compiler compiling for this target.
The t_*.pas files contain the code which is necessary if a compiler is built for compiling for this particular target.
[edit] Building the compiler
To build the compiler only, a make in fpc/compiler is enough. However, if you want to test the generated compiler and you aren't building a cross compiler, better do a make cycle. This tests if the modified compiler can compile itself and the rtl.
[edit] Building a cross compiler
Building a cross compiler for another processor target is simple as well, just do a make CPU_TARGET=<processor target>.
Available processor targets for the current vresion are: arm, ia64, i386, powerpc, ppc64, sparc and x86_64. However, some of them might not work at the moment.
[edit] Testing changes
When doing changes, it is always good to test these changes, for example by running the testsuite.
[edit] Running the testsuite
cd fpc make clean all cd tests make clean all digest
You'll get something like this at the end:
... /FPC/home/fpc/bin/digest output/i386-linux/log Total = 2975 (28:2947) Total number of compilations = 1692 (12:1680) Successfully compiled = 1361 Successfully failed = 319 Compilation failures = 12 Compilation that did not fail while they should = 0 Total number of runs = 1283 (16:1267) Successful runs = 1267 Failed runs = 16 ...
The important line is
Total = 2975 (28:2947)
It shows how much tests were run: 2975, how much failed: 28 and now much succeded: 2947. If you want to know what failed, see fpc/tests/output/<target>/longlog and fpc/tests/output/<target>/log.
[edit] Recommended readings
Unfortunately, there is no documentation about the internals of the 2.x.x compiler yet. However, there is a documentation of the internals of 1.0.x which should give first clues: http://www.stack.nl/~marcov/comparch.pdf
Further, some information about the 2.x.x will be collected here: FPC internals
