From ae68ff085724dd35d60151bd153e80b8b0776873 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 27 May 1997 12:40:11 +0000 Subject: Initial revision --- doc/develenv/compile.texi | 157 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 doc/develenv/compile.texi (limited to 'doc/develenv/compile.texi') diff --git a/doc/develenv/compile.texi b/doc/develenv/compile.texi new file mode 100644 index 0000000000..7ef2e99b92 --- /dev/null +++ b/doc/develenv/compile.texi @@ -0,0 +1,157 @@ +@c This chapter is not currently in the Development Environment Guide. + +@c +@c COPYRIGHT (c) 1988-1997. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c + +@ifinfo +@node Compilation and GNU Make Stanzas, Compilation and GNU Make Stanzas Building the Entire Tree, Test Suite Source Directory, Top +@end ifinfo +@chapter Compilation and GNU Make Stanzas +@ifinfo +@menu +* Compilation and GNU Make Stanzas Building the Entire Tree:: +* Compilation and GNU Make Stanzas Making a Component:: +* Compilation and GNU Make Stanzas Optional Manager Support:: +@end menu +@end ifinfo + +RTEMS is compiled using the GNU gmake(1G) utilities. +All examples in this section are with the gmake(1G) command. +Note that the installation procedure for GNU Make installs it as +make. It is referred to as gmake in this document to +distinguish it from any other make utilities which may also be +on the development system. + +The GNU Make utility uses a file that describes the +relationships among the files and the operations necessary for +updating each file. The GNU Make utility uses stanzas to specify +which set of relationships to update. Each component and suite +control directory contains a make control file, Makefile, which +describes the relationships which must be checked and the +associated update operations for each stanza. This facility is +used to perform compilation, to remove intermediate files, to +install RTEMS, and to maintain release and working set source +and documentation notebooks. The following is a list of stanzas +used by RTEMS make control files: + +@ifset use-texinfo-tables +@table @code +@item all +perform compilation but do not install + +@item install +perform compilation if directory contains source but do not install + +@item clean +delete most generated files and directories for the current CPU and target + +@item clobber +delete all generated files and directories for the current CPU and target +@end table +@end ifset + +@ifclear use-texinfo-tables +@html +
+ + + + + + + + + +
allperform compilation but do not install
installperform compilation if directory contains source + but do not install
cleandelete most generated files and directories for + the current CPU and target
clobberdelete all generated files and directories for + the current CPU and target
+
+@end html +@end ifclear + +@ifinfo +@node Compilation and GNU Make Stanzas Building the Entire Tree, Compilation and GNU Make Stanzas Making a Component, Compilation and GNU Make Stanzas, Compilation and GNU Make Stanzas +@end ifinfo +@section Building the Entire Tree + +At the top of the C source tree, execute the command +gmake all. This will build and install all components and tests +into the directory in this directory. + +@ifinfo +@node Compilation and GNU Make Stanzas Making a Component, Compilation and GNU Make Stanzas Optional Manager Support, Compilation and GNU Make Stanzas Building the Entire Tree, Compilation and GNU Make Stanzas +@end ifinfo +@section Making a Component + +A single component can be compiled by changing to the +directory which contains that component and performing the +following command: + +@example +gmake +@end example + + +This is equivalent to the following command: + +@example +gmake all +@end example + +Both commands will result in the GNU Make utility +determining which files require compilation or assembly. If any +files require compilation or assembly, then these operations +will be performed followed by the appropriate archive or link +command. Files installed are placed in subdirectories under the +install point. The install point is determined by the setting +of the variable PROJECT_HOME in the file +c/make/custom/.cfg. + +If the current directory is not a leaf directory, +then the requested operation will be performed recursively to +all subdirectories under the current directory. + +By specifying one of the other stanzas supported by +the Makefile, the GNU Make utility can be used to perform such +operations as removing all automatically generated files in a +component (clean and clobbers stanza). + +NOTE: For many components it is not possible to +compile them until other components have been installed. + +@ifinfo +@node Compilation and GNU Make Stanzas Optional Manager Support, Sample Applications, Compilation and GNU Make Stanzas Making a Component, Compilation and GNU Make Stanzas +@end ifinfo +@section Optional Manager Support + +RTEMS allows the C applications developer to build +images that only contain those components of the executive that +are needed, leaving out those that will not be utilized. This +is accomplished by the RTEMS Makefile system linking in the +"stub" versions of the optional managers in the place of those +managers not needed by the specific application. The +application Makefile sets the system variable $(MANAGERS) list +to contain those managers that are required by the application. +The RTEMS Makefile system then is able to build a list of +managers that are unwanted, effectively linking in the stubbed +versions of these managers before the RTEMS library is built. + +For more information and implementation details refer +to the following files: + +@itemize @bullet +@item c/make/leaf.cfg, + +@item a Makefile for a test or sample application, and + +@item a compiler description file from c/make/compilers +@end itemize + +These files demonstrate the use of $(MANAGERS) and +how the unwanted managers are handled. + + -- cgit v1.2.3