mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-03-11 06:54:06 +00:00
Update the internals documentation, adding the kernel API.
Update the internals architecture documentation. /trunk/docs/overview.txt | 75 67 8 0 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 67 insertions(+), 8 deletions(-)
This commit is contained in:
parent
dcb7ca29ba
commit
229aa8fe54
@ -541,18 +541,18 @@ An architecture is defined by:
|
|||||||
- a human-readable name, in lower case letters, with numbers as appropriate.
|
- a human-readable name, in lower case letters, with numbers as appropriate.
|
||||||
The underscore is allowed; space and special characters are not.
|
The underscore is allowed; space and special characters are not.
|
||||||
Eg.: arm, x86_64
|
Eg.: arm, x86_64
|
||||||
- a directory in "arch/" named after the architecture, with the same letters
|
- a directory in "config/arch/" named after the architecture, with the same
|
||||||
as above. Eg.: arch/arm, arch/x86_64
|
letters as above. Eg.: arch/arm, arch/x86_64
|
||||||
This directory contains the following files, and only those files:
|
This directory contains the following files, and only those files:
|
||||||
- a configuration file in kconfig syntax, named "config.in", which shall
|
- a configuration file in kconfig syntax, named "config.in", which shall
|
||||||
follow the API defined below.
|
follow the API defined below.
|
||||||
Eg.: arch/arm/config.in
|
Eg.: config/arch/arm/config.in
|
||||||
- a function script in bash-3.0 syntax, named "functions", which shall
|
- a function script in bash-3.0 syntax, named "functions", which shall
|
||||||
follow the API defined below.
|
follow the API defined below.
|
||||||
Eg.: arch/arm/functions
|
Eg.: config/arch/arm/functions
|
||||||
- an optional file, named "experimental" (in lower case!), which, if it
|
- an optional file, named "experimental" (in lower case!), which, if it
|
||||||
is present, means that support for this architecture is EXPERIMENTAL.
|
is present, means that support for this architecture is EXPERIMENTAL.
|
||||||
Eg.: arch/arm/experimental
|
Eg.: config/arch/arm/experimental
|
||||||
|
|
||||||
The "config.in" file API:
|
The "config.in" file API:
|
||||||
> the config option "ARCH_%arch%" (where %arch% is to be replaced with the
|
> the config option "ARCH_%arch%" (where %arch% is to be replaced with the
|
||||||
@ -588,9 +588,9 @@ The "functions" file API:
|
|||||||
> the function "CT_DoArchValues"
|
> the function "CT_DoArchValues"
|
||||||
+ parameters: none
|
+ parameters: none
|
||||||
+ environment:
|
+ environment:
|
||||||
- all variables from the ".config" file,
|
- all variables from the ".config" file,
|
||||||
- the two variables "target_endian_eb" and "target_endian_el" which are
|
- the two variables "target_endian_eb" and "target_endian_el" which are
|
||||||
the endianness suffixes
|
the endianness suffixes
|
||||||
+ return value: 0 upon success, !0 upon failure
|
+ return value: 0 upon success, !0 upon failure
|
||||||
+ provides:
|
+ provides:
|
||||||
- mandatory
|
- mandatory
|
||||||
@ -656,6 +656,9 @@ The "functions" file API:
|
|||||||
- default to:
|
- default to:
|
||||||
- all empty
|
- all empty
|
||||||
|
|
||||||
|
You can have a look at "config/arch/arm/" for an quite complete example of
|
||||||
|
what an actual architecture description looks like.
|
||||||
|
|
||||||
Kernel specific |
|
Kernel specific |
|
||||||
----------------+
|
----------------+
|
||||||
|
|
||||||
@ -668,12 +671,16 @@ A kernel is defined by:
|
|||||||
- a file in "config/kernel/", named after the kernel name, and suffixed with
|
- a file in "config/kernel/", named after the kernel name, and suffixed with
|
||||||
".in".
|
".in".
|
||||||
Eg.: config/kernel/linux.in, config/kernel/bare-metal.in
|
Eg.: config/kernel/linux.in, config/kernel/bare-metal.in
|
||||||
|
- a file in "scripts/build/kernel/", named after the kernel name, and suffixed
|
||||||
|
with ".sh".
|
||||||
|
Eg.: scripts/build/kernel/linux.sh, scripts/build/kernel/bare-metal.sh
|
||||||
|
|
||||||
The kernel's ".in" file must contain:
|
The kernel's ".in" file must contain:
|
||||||
> an optional lines containing exactly "# EXPERIMENTAL", starting on the
|
> an optional lines containing exactly "# EXPERIMENTAL", starting on the
|
||||||
first column, and without any following space or other character.
|
first column, and without any following space or other character.
|
||||||
If this line is present, then this kernel is considered EXPERIMENTAL,
|
If this line is present, then this kernel is considered EXPERIMENTAL,
|
||||||
and correct dependency on EXPERIMENTAL will be set.
|
and correct dependency on EXPERIMENTAL will be set.
|
||||||
|
|
||||||
> the config option "KERNEL_%kernel_name%" (where %kernel_name% is to be
|
> the config option "KERNEL_%kernel_name%" (where %kernel_name% is to be
|
||||||
replaced with the actual kernel name, with all special characters and
|
replaced with the actual kernel name, with all special characters and
|
||||||
spaces replaced by underscores).
|
spaces replaced by underscores).
|
||||||
@ -703,6 +710,58 @@ The kernel's ".in" file must contain:
|
|||||||
this, as the kernel name was written all upper case. However, the prefix
|
this, as the kernel name was written all upper case. However, the prefix
|
||||||
is unique among kernels, and does not cause harm).
|
is unique among kernels, and does not cause harm).
|
||||||
|
|
||||||
|
The kernel's ".sh" file API:
|
||||||
|
> is a bash script fragment
|
||||||
|
|
||||||
|
> defines the function "do_print_filename":
|
||||||
|
+ parameters: none
|
||||||
|
+ environment:
|
||||||
|
- all variables from the ".config" file,
|
||||||
|
+ return value: ignored
|
||||||
|
+ behavior: output the kernel's tarball filename, with adequate suffix,
|
||||||
|
on stdout.
|
||||||
|
Eg.: linux-2.6.26.5.tar.bz2
|
||||||
|
|
||||||
|
> defines the function "do_kernel_get":
|
||||||
|
+ parameters: none
|
||||||
|
+ environment:
|
||||||
|
- all variables from the ".config" file.
|
||||||
|
+ return value: 0 for success, !0 for failure.
|
||||||
|
+ behavior: download the kernel's sources, and store the tarball into
|
||||||
|
"${CT_TARBALLS_DIR}". To this end, a functions is available, that
|
||||||
|
abstracts downloading tarballs:
|
||||||
|
- CT_DoGet <tarball_base_name> <URL1 [URL...]>
|
||||||
|
Eg.: CT_DoGet linux-2.6.26.5 ftp://ftp.kernel.org/pub/linux/kernel/v2.6
|
||||||
|
Note: retrieving sources from svn, cvs, git and the likes is not supported
|
||||||
|
by CT_DoGet. You'll have to do this by hand, as it is done for eglibc in
|
||||||
|
"scripts/build/libc/eglibc.sh"
|
||||||
|
|
||||||
|
> defines the function "do_kernel_extract":
|
||||||
|
+ parameters: none
|
||||||
|
+ environment:
|
||||||
|
- all variables from the ".config" file,
|
||||||
|
+ return value: 0 for success, !0 for failure.
|
||||||
|
+ behavior: extract the kernel's tarball into "${CT_SRC_DIR}", and apply
|
||||||
|
required patches. To this end, a function is available, that abstracts
|
||||||
|
extracting tarballs:
|
||||||
|
- CT_ExtractAndPatch <tarball_base_name>
|
||||||
|
Eg.: CT_ExtractAndPatch linux-2.6.26.5
|
||||||
|
|
||||||
|
> defines the function "do_kernel_headers":
|
||||||
|
+ parameters: none
|
||||||
|
+ environment:
|
||||||
|
- all variables from the ".config" file,
|
||||||
|
+ return value: 0 for success, !0 for failure.
|
||||||
|
+ behavior: install the kernel headers (if any) in "${CT_SYSROOT_DIR}/usr/include"
|
||||||
|
|
||||||
|
> defines any kernel-specific helper functions
|
||||||
|
These functions, if any, must be prefixed with "do_kernel_%CT_KERNEL%_",
|
||||||
|
where '%CT_KERNEL%' is to be replaced with the actual kernel name, to avoid
|
||||||
|
any name-clashing.
|
||||||
|
|
||||||
|
You can have a look at "config/kernel/linux.in" and "scripts/build/kernel/linux.sh"
|
||||||
|
as an example of what a complex kernel description looks like,
|
||||||
|
|
||||||
Adding a new version of a component |
|
Adding a new version of a component |
|
||||||
------------------------------------+
|
------------------------------------+
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user