user guide: document Custom Configuration Checks
This commit is contained in:
parent
0ccf43cc96
commit
a2a1d08014
@ -377,6 +377,58 @@ defined, and defaults to `false` if the `:set_define` option is defined.
|
|||||||
If set, a build define of the specified String will be added to the
|
If set, a build define of the specified String will be added to the
|
||||||
`CPPDEFINES` construction variable array if the requested package is found.
|
`CPPDEFINES` construction variable array if the requested package is found.
|
||||||
|
|
||||||
|
###> Custom Configuration Checks
|
||||||
|
|
||||||
|
The `Rsconscript` author can add custom configuration checks to be performed
|
||||||
|
during the rscons `configure` operation.
|
||||||
|
|
||||||
|
Here is an example from `build_tests/configure/custom_config_check.rb` showing
|
||||||
|
a custom configuration check:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
${include build_tests/configure/custom_config_check.rb}
|
||||||
|
```
|
||||||
|
|
||||||
|
A custom configuration check is created by calling the `custom_check` method
|
||||||
|
and passing a block.
|
||||||
|
The contents of the block should perform the custom configuration checking
|
||||||
|
logic.
|
||||||
|
This logic can include executing a test command or other arbitrary operations.
|
||||||
|
An argument `op` is passed to the block.
|
||||||
|
This object is an instance of the [`ConfigureOp` class](../yard/Rscons/ConfigureOp.html)
|
||||||
|
class and provides several methods that can be used to aid with the custom
|
||||||
|
configuration check.
|
||||||
|
The [`log_and_test_command`](../yard/Rscons/ConfigureOp.html#log_and_test_command-instance_method)
|
||||||
|
method can be used to execute a test command and retrieve its results.
|
||||||
|
The command and its output are also logged to the config.log file.
|
||||||
|
The [`store_merge`](../yard/Rscons/ConfigureOp.html#store_merge-instance_method),
|
||||||
|
[`store_append`](../yard/Rscons/ConfigureOp.html#store_append-instance_method),
|
||||||
|
and [`store_parse`](../yard/Rscons/ConfigureOp.html#store_parse-instance_method)
|
||||||
|
methods can be used to store construction variables for Environments created
|
||||||
|
during the `build` operation.
|
||||||
|
Finally, the [`complete`](../yard/Rscons/ConfigureOp.html#complete-instance_method)
|
||||||
|
method can be used to complete the configuration check and indicate a success
|
||||||
|
or failure.
|
||||||
|
|
||||||
|
While performing a custom configuration check, it can sometimes be useful to
|
||||||
|
be able to construct an Environment to use the set of default construction
|
||||||
|
variables as defined so far in the configuration block, for example to expand
|
||||||
|
construction variables to build a test command.
|
||||||
|
The normal `Environment` class cannot be used within the `configure` block,
|
||||||
|
however the [`BasicEnvironment`](../yard/Rscons/BasicEnvironment.html) class
|
||||||
|
can be used for such a purpose.
|
||||||
|
|
||||||
|
For example, to expand the current `${CCCMD}` value:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
configure do
|
||||||
|
custom_check("Checking something to do with CCCMD") do
|
||||||
|
command = BasicEnvironment.new.expand_varref("${CCCMD}")
|
||||||
|
# ...
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
##> Build Operations
|
##> Build Operations
|
||||||
|
|
||||||
The `build` block is used to create Environments and register build targets.
|
The `build` block is used to create Environments and register build targets.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user