Difference between revisions of "Fpcmake"
(Explicit link to fpmake) |
m (category, capitalization, layout) |
||
Line 26: | Line 26: | ||
fpcmake -w -Tall | fpcmake -w -Tall | ||
− | * -w : actually | + | * -w : actually '''write''' the Makefile. |
− | * -Tall : generate the makefile so as to work on all platforms (default is only the host platform). '''DON'T FORGET THIS WHEN COMMITTING TO FPC / LAZARUS SVN SERVER!'''. For | + | * -Tall : generate the makefile so as to work on all platforms (default is only the host platform). '''DON'T FORGET THIS WHEN COMMITTING TO FPC / LAZARUS SVN SERVER!'''. For Lazarus developers: '''YOU MUST USE THE FPC DEVELOPER VERSION (trunk, e.g. 2.7.1) TO GET ALL PLATFORMS'''. |
* It is possible to add -v to increase verbosity. | * It is possible to add -v to increase verbosity. | ||
− | If you regenerate makefiles outside the fpc/ SVN tree, (e.g. for | + | If you regenerate makefiles outside the fpc/ SVN tree, (e.g. for Lazarus in projects), and fpcmake complains it can't find package.fpc for the RTL package, try setting the environment variable FPCDIR to the FPC source directory: |
− | + | * Unix/Linux/OSX bash/sh | |
E.g. if your FPC directory is located in /location/to/fpc: | E.g. if your FPC directory is located in /location/to/fpc: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Line 38: | Line 38: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | * DOS/Windows/OS/2 | |
E.g. if your FPC directory is located in c:\location\to\fpc: | E.g. if your FPC directory is located in c:\location\to\fpc: | ||
<syntaxhighlight lang="dos"> | <syntaxhighlight lang="dos"> | ||
Line 45: | Line 45: | ||
[[Category:FPC]] | [[Category:FPC]] | ||
+ | [[Category:Utilities]] |
Revision as of 09:02, 1 June 2013
FPCMake
Fpcmake is a makefile generator. It generates a makefile named "Makefile" from a definition file called "Makefile.fpc" and its own built-in template. It is used in the FPC source tree (e.g. in FPC 2.6.0), but is planned to be succeeded by FPMake.
This template is located in utils/fpcm/fpcmake.ini, but since fpcmake.ini is included in the binary (to avoid path-searching issues), fpcmake has to be regenerated for each fpcmake.ini change.
The manual has a quite good chapter about Makefile.fpc syntax, and examples teach the rest (fpcmake.ini, the various Makefile.fpcs in the FPC source tree).
It defines some default targets that are always present:
- Clean -- clean all programs and the units explicitly stated to be cleaned, but not other units.
- Cleanall -- also clean all units (*.ppu).
Troubleshooting
- I get an error message that the command __missing_command__ is missing. -- This happens when a tool required by the make process is not found. Remedy: Add the path to the tool as an option to make, like DATA2INC=/path/to/data2inc, for the tool data2inc
- Clean does not delete the files I expect. -- This happens when the files were generated by a call to make where certain options were given. Remedy: Call make clean with the same options. Options which may affect this are:
- OS_TARGET
- CPU_TARGET
- FPC or PP (Tells make which version of the compiler created the files, this affects *.*w files generated for Windows for fpc < 1.1. To erase these files, please give an fpc 1.0 compiler as a parameter)
- Make cannot find tools asw, ldw. Happens only when making for fpc 1.0.*. Remedy: Make a copy of the tools as and ld, rename them asw, ldw.
- Target not supported: bad parameters were used when generating the makefile, you need to regenerate it with -Tall (see next paragraph)
Regenerating makefiles
Regenerating a Makefile from Makefile.fpc is quite easy. The basic syntax is
fpcmake -w -Tall
- -w : actually write the Makefile.
- -Tall : generate the makefile so as to work on all platforms (default is only the host platform). DON'T FORGET THIS WHEN COMMITTING TO FPC / LAZARUS SVN SERVER!. For Lazarus developers: YOU MUST USE THE FPC DEVELOPER VERSION (trunk, e.g. 2.7.1) TO GET ALL PLATFORMS.
- It is possible to add -v to increase verbosity.
If you regenerate makefiles outside the fpc/ SVN tree, (e.g. for Lazarus in projects), and fpcmake complains it can't find package.fpc for the RTL package, try setting the environment variable FPCDIR to the FPC source directory:
- Unix/Linux/OSX bash/sh
E.g. if your FPC directory is located in /location/to/fpc:
export FPCDIR=/location/to/fpc
- DOS/Windows/OS/2
E.g. if your FPC directory is located in c:\location\to\fpc:
set FPCDIR=c:\location\to\fpc