Warning |
---|
This is an unapproved draft. It is currently in progress and under review. |
Include Page | ||||
---|---|---|---|---|
|
7.1 Introduction
rce modules and binary objects for host systems are compiled and linked with the gnu compiler and binutils collections. The build tool is gmake.
...
Building all projects at once is the exception. Typically, development iterations involve building and re-building individual packages and constituents. Figure 5 depicts the makefiles relevant to package and constituent builds.
Hierarchy of package- and constituent-level makefiles
Makefile search path
Under construction
Note: How "export library symbols...just like symbols in module sources."
Inter-package and inter-project dependencies
Must be handled manually
If A depends on B, build B first
Order of projects in projects.mk
Order of packages in packages.mk
Library search order
When linking each library is searched once
In lists of libraries put the lower-level libs first
The search order will be the reverse of that listed
...
Rule | Description | Example | ||
---|---|---|---|---|
modsneeded_<modname> | Used to record any indirect dependencies the client module may have on other modules at run time, which the dynamic linker cannot infer. | modsneeded_transport := \
| ||
modincs_<modname> | Header file include directories for headers inside the RCE release tree. | modincs_transport := \ | ||
modsinc_<modname> | Header file include directories for headers outside the RCE release tree. | modsinc_transport :\ |
...
Code Block |
---|
ppc-linux ppc-rtems-rce405 ppc-rtems-ml405 i386-linux x86_64-linux sparc-solaris |
Make actions
Wiki Markup |
---|
{span:class=steve}Steve: If an action is not specified, then what is built?{span} |
Make action | Description |
---|---|
all | Build 'bin' and user-defined |
dir | Create build directories, but do not build. |
obj | Compile sources |
lib | Build libraries from object files |
bin | Build libraries, executables and modules |
clean | Remove all built products |
cleanall | Same as 'clean', but removes some tmp directories as well |
List what is built and where it goes |
...
Each module that the one being constructed depends on should be named on the linker command line so that each of their sonames will be recorded in a DT_NEEDED entry in the elf dynamic section. This defines a minimum set of compatbility requirements; compatibility requirements can be expanded by implementing an rce_isCompatible function, as described in Chapter Y.
Wiki Markup |
---|
{span:class=steve}Steve: Can set rce core comaptibility here? Is this optional, only for cases where the dependency is not direct? Won't dynalink try to resolve?{span} |