[include include/global.inc]

These commands control the details of compilation and linking a
[vset critcl_script].  The information is used only to compile/link the
object for the [vset critcl_script].  For example, information for
[file FOO.tcl] is kept separate from information for [file BAR.tcl].

[list_begin definitions]
[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::cheaders] [opt [arg arg]...]]

Provides additional header locations.

[para] Each argument is a glob pattern.  If an argument begins with [const -]
it is an argument to the compiler.  Otherwise the parent directory of each
matching path is a directory to be searched for header files.  Returns an
error if a pattern matches no files.

[vset relative_pattern]

[para] [const {#include}] lines are not automatically generated for matching
header files.  Use [cmd critcl::include] or [cmd critcl::ccode] as necessary to
add them.

[para] [vset cumulative]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::csources] [opt [arg {glob pattern}]...]]

Matching paths become inputs to the compilation of the current object
along with the sources for the current [vset critcl_script].  Returns an
error if no paths match a pattern.

[vset relative_pattern]

[para] [vset cumulative]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::clibraries] [opt [arg {glob pattern}]...]]

provides the link step with additional libraries and library locations.

A [arg {glob pattern}] that begins with [const -] is added as an argument to
the linker.  Otherwise matching files are linked into the shared library.
Returns an error if no paths match a pattern.

[vset relative_pattern]

[para] [vset cumulative]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::source] [arg {glob pattern}]]

Evaluates as scripts the files matching each [arg {glob pattern}].  Returns an
error if there are no matching files.

[vset relative_pattern]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::tsources] [arg {glob pattern}]...]

Provides the information about additional Tcl script files to source when the
shared library is loaded.

[para] Matching paths are made available to the generated shared library when
it is loaded for the current [vset critcl_script].  Returns an error if a
pattern matches no files.

[vset relative_pattern]

[para] [vset cumulative]

[para] After the shared library has been loaded, the declared files are sourced
in the same order that they were provided as arguments.

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::owns] [arg {glob pattern}]...]

Ignored in "compile and run" and "generate package" modes.

In "generate TEA" mode each file matching a [arg {glob pattern}] is a file to
be included in the TEA extension but that could not be ascertained as such from
previous commands like [cmd critcl::csources] and [cmd critcl::tsources],
either because of they were specified dynamically or because they were directly
sourced.


[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::cflags] [opt [arg arg]...]]

[para] Each [arg arg] is an argument to the compiler.

[para] [vset cumulative]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::ldflags] [opt [arg arg]...]]

[para] Each [arg arg] is an argument to the linker.

[para] [vset cumulative]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::framework] [opt [arg arg]...]]

Each [arg arg] is the name of a framework to link on MacOS X.  This command is
ignored if OS X is not the target so that frameworks can be specified
unconditionally.

[para] [vset cumulative]

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::tcl] [arg version]]

Specifies the minimum version of the Tcl runtime
to compile and link the package for.  The default is [const 8.4].

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::tk]]

Arranges to include the Tk headers and link to the Tk stubs.

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::preload] [arg lib]...]

Arranges for the external shared library [arg lib] to be loaded
before the shared library for the [vset critcl_script] is loaded.

[para] [vset cumulative]

[para][include preload_search.inc]

[comment {
	XXX preload - compile & run - will it work ?
}]

For developers who want to understand or modify the internals of the
[package critcl] package, [sectref {Preloading functionality}] explains how
preloading is implemented.

[comment ---------------------------------------------------------------------]
[call [cmd ::critcl::debug] [arg area]...]

Specifies what debugging features to activate. Internally each area is translated into
area-specific flags for the compiler which are then handed over to
[cmd critcl::cflags].

[list_begin definitions]
[def [const memory]]

Specifies Tcl memory debugging.

[def [const symbols]]

Specifies compilation and linking with debugging symbols for use by a debugger
or other tool.

[def [const all]]

Specifies all available debugging.

[list_end]
[list_end]
