Table of Contents
As soon as you start using Bakefile for your project and you need to generate many makefile formats from your bakefiles (after all, this is the purpose of Bakefile!), you'll find very useful to automate the regeneration process.
Here is where bakefile_gen(1) comes into play.
You can script all the bakefile calls you would have to do manually in a
single Bakefiles.bkgen
file and then just call:
bakefile_gen
to run Bakefile for all the formats you need to regenerate on all the
bakefiles which are required by your project.
Bakefiles.bkgen
files use a simple XML format to
describe what outputs and how to generate.
The root tag is called bakefile-gen
and inside it
you can use any of the tags described below.
In addition to the following tags, bakefile_gen also supports the include tag.
Tag | Description | |
---|---|---|
input |
Adds the given list of whitespace-separed bakefiles to the list of bakefiles which must be regenerated. You can use wildcards and relative paths to match all the bakefiles scattered in the directory tree of your project. Example: <!-- tell bakefile_gen to regenerate all the bakefiles of this project --> <input> mybakefile1.bkl ../mybakefile2.bkl ../../../build/bakefiles/*.bkl </input> | |
add-formats |
Adds the comma-separed list of formats contained in this tag, to the list of formats to regenerate. You can use the files attribute of this tag to selectively add the listed formats to a (set of) bakefile(s) only. <!-- add the GNU format to all bakefiles under 'build/bakefiles' --> <add-formats files="build/bakefiles/*.bkl">gnu</add-formats> | |
del-formats |
Removes the comma-separed list of formats contained in this tag, from the list of formats to regenerate.
You can use the <!-- remove some rarely used formats from the bakefiles under the 'a' and 'b' subfolders --> <del-formats files="a/*.bkl,b/*.bkl">cbuilderx,dmars,dmars_smake,msevc4prj,symbian,xcode2</disable-formats> | |
enable-formats |
Enables the regeneration of the comma-separed list of formats contained in this tag. Note that by default all formats supported by Bakefile are enabled, thus this tag will actually have some effect only if you used the disable-formats tag before. <disable-formats>msvc,gnu</disable-formats> ... <!-- we've changed idea; turn GNU format on --> <enable-formats>gnu</enable-formats> | |
disable-formats |
Disables the regeneration of the comma-separed list of formats contained in this tag. Typically you'll want to use this tag to disable all those formats you are not interested to. <!-- disable rarely used formats: --> <disable-formats>cbuilderx,dmars,dmars_smake,msevc4prj,symbian,xcode2</disable-formats> | |
add-flags |
Adds some flags to the command executed to regenerate the bakefiles.
You can use the
You can use the
Additionally, inside this tag, bakefile_gen recognizes
various variables:
<!-- tell bakefile to output the generated Makefile.in for bake.bkl two levels up --> <add-flags files="bake.bkl" formats="autoconf"> -o../../Makefile.in </add-flags> <!-- always generate the windows makefiles in ../msw respect the bakefile's being processed: --> <add-flags formats="borland">-o$(INPUT_FILE_DIR)/../msw/makefile.bcc</add-flags> <add-flags formats="mingw">-o$(INPUT_FILE_DIR)/../msw/makefile.gcc</add-flags> <add-flags formats="msvc">-o$(INPUT_FILE_DIR)/../msw/makefile.vc</add-flags> <add-flags formats="watcom">-o$(INPUT_FILE_DIR)/../msw/makefile.wat</add-flags> | |
del-flags |
Removes some flags to the command executed to regenerate the bakefiles.
You can use the
You can use the <add-flags>-DVARIABLE1=value</add-flags> <!-- delete the -DVARIABLE1=value option from the MSVC and BORLAND formats --> <del-flags formats="msvc,borland"> -DVARIABLE1=value </del-flags> |
Bakefiles.bkgen
file is processed in the following
order:
disable-formats
entries are read into blacklist
of formats to globally ignore
enable-formats
entries are read and the formats
listed are removed from the blacklist (so
that your Bakefiles.local.bkgen
file can
re-enable something disabled by default).
add-formats
and del-formats
are processed in the order they appear in the file. They specify
which formats should be generated for which files (the default
being all files), assuming the blacklist is empty (in other words,
they describe what this Bakefiles.bkgen
is
capable of generating).
The list from step 3. is filtered using the blacklist from steps 1. and 2.