Difference between revisions of "Fpcmake"

From Lazarus wiki
Jump to navigationJump to search
(Typo/lang sweep)
Line 1: Line 1:
Fpcmake is a makefile generator. It generates a makefile "Makefile" from a definition file called "Makefile.fpc" and its own build-in template.
+
Fpcmake is a makefile generator. It generates a makefile named "Makefile" from a definition file called "Makefile.fpc" and its own built-in template.
  
 
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.
 
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, examples do the rest (fpcmake.ini, the various Makefile.fpc's in the FPC source tree).
+
The manual has a quite good chapter about Makefile.fpc syntax, examples teach the rest (fpcmake.ini, the various Makefile.fpc's in the FPC source tree).
  
It defines some default targets always present:
+
It defines some default targets that are always present:
* Clean -- clean all programs and units explicitly stated to be cleaned by clean, but not other units.
+
* Clean -- clean all programs and the units explicitly stated to be cleaned, but not other units.
* Cleanall -- clean also all units (*.ppu).
+
* Cleanall -- also clean all units (*.ppu).
  
 
===Trouble Shooting===
 
===Trouble Shooting===
* 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
+
* 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 was generated by a call to make where certain options was given. Remedy: Call make clean with the same options. Options which may affect this is:
+
* Clean does not delete the files I expect. -- This happens when the files was generated by a call to make where certain options was given. Remedy: Call make clean with the same options. Options which may affect this are:
 
** OS_TARGET
 
** OS_TARGET
 
** CPU_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)
 
** 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.
+
* 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)
 
* Target not supported: bad parameters were used when generating the makefile, you need to regenerate it with -Tall (see next paragraph)
  
Line 25: Line 25:
  
 
* -w    :  actually _write_ the Makefile.
 
* -w    :  actually _write_ the Makefile.
* -Tall :  generate the makefile to work on all platforms (default is only the host platform) '''DON'T FORGET THIS WHEN COMMITTING TO FPC CVS SERVER!'''
+
* -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 CVS SERVER!'''
 
* It is possible to add -v to increase verbosity.
 
* It is possible to add -v to increase verbosity.
  

Revision as of 19:23, 21 June 2004

Fpcmake is a makefile generator. It generates a makefile named "Makefile" from a definition file called "Makefile.fpc" and its own built-in template.

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, examples teach the rest (fpcmake.ini, the various Makefile.fpc's 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).

Trouble Shooting

  • 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 was generated by a call to make where certain options was 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 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 CVS SERVER!
  • It is possible to add -v to increase verbosity.

If you regenerate makefiles outside the fpc/ CVS tree, (e.g. for lazarus in projects), and fpcmake complains it can't find package.fpc for the RTL package, try setting the enviroment variable FPCDIR to the fpc source directory fpc/:

(bash/sh) export FPCDIR=/location/to/fpc

(dos/windows/OS/2) set FPCDIR=c:\location\to\fpc