]> rtime.felk.cvut.cz Git - omk.git/blobdiff - doc/omk-manual.texinfo
Small fix in documentation
[omk.git] / doc / omk-manual.texinfo
index db4fadca13ca763a14516dea9c0b9e2c2e70dffd..7c026a7c6cc779cb1835c1cd84df0c7f06952ddc 100644 (file)
@@ -1,13 +1,14 @@
 \input texinfo   @c -*-texinfo-*-
 @c %**start of header
 @setfilename omk-manual
+@documentencoding UTF-8
 @settitle OMK: Ocera Make System
 @c %**end of header
 
 @copying
-Manual for Ocera Make System (OMK)
+Manual for Ocera Make System (OMK) version $Id$
 
-Copyright @copyright{} 2007 Michal Sojka, Pavel Pisa
+Copyright @copyright{} 2007, 2008 Michal Sojka, Pavel Pisa
 @end copying
 
 @titlepage
@@ -40,12 +41,10 @@ Copyright @copyright{} 2007 Michal Sojka, Pavel Pisa
 @cindex overview
 
 OMK is an advanced make system written entirely in GNU make. Compiling
-software using OMK requires only GNU make binary and standard UNIX
-utilities (@command{sh}, @command{sed}, @command{cmp} and
-@command{tr}@footnote{@command{tr} is needed only for OMK to be
-compatible with MinGW.}) installed. OMK aims to be developer friendly;
-to use OMK, you do not need to understand (sometimes) cryptic syntax of
-Makefiles.
+software using OMK requires only GNU Make and standard UNIX
+utilities (@command{sh}, @command{sed}, @command{cmp}, ...)
+installed. OMK aims to be developer friendly; to use OMK, you do not
+need to understand (sometimes) cryptic syntax of Makefiles.
 
 You can use OMK on all platforms where you can run GNU Make including
 Cygwin and MinGW. MS DOS was not tested.
@@ -113,6 +112,8 @@ choosing of a make system.
 @end itemize
 
 
+
+
 @node Quick Start, History, Why to Use OMK?, Overview of OMK
 @section Quick Start
 
@@ -130,8 +131,11 @@ make
 
 @enumerate
 @item
-  Take appropriate @file{Makefile.rules}, put it together with leaf
-  @file{Makefile} to the root directory of your project.
+  The newest version of OMK can be found at @uref{http://rtime.felk.cvut.cz/omk/}.
+@item
+  Take appropriate @file{Makefile.rules} (see @ref{Properties of
+  Specific Makefile.rules}), put it together with leaf @file{Makefile}
+  to the root directory of your project.
 @item
   Create @file{Makefile.omk} files in all directories you want to
   compile something. Please refer to @ref{OMK User's Manual} to learn
@@ -146,7 +150,7 @@ make
 @node History,  , Quick Start, Overview of OMK
 @section History
 
-OMK was originally written by Pavel Pisa as a solution to have one
+OMK was originally written by Pavel Píša as a solution to have one
 common make system for OCERA project, where we needed to compile
 user-space programs, Linux kernel modules and RT Linux modules in one
 package. Although this system was not accepted for the whole OCERA
@@ -401,7 +405,7 @@ In @file{Makefile.omk}, you specify several variables, which defines how
 the libraries should be compiled. In the example below the library
 @samp{mylib} (full filename will be @file{libmylib.a}) is created from
 two sources @file{funca.c} and @file{funcb.c}. Interface of this library
-is defined in @file{myfunc.h}. Therfore, we export this header for use
+is defined in @file{myfunc.h}. Therefore, we export this header for use
 by other programs.
 
 @example
@@ -412,7 +416,7 @@ by other programs.
 
 @defvar lib_LIBRARIES
   Specifies a list of statically linked libraries to be compiled. OMK
-  automaticvally prepends @code{lib} prefix library names.
+  automatically prepends @code{lib} prefix library names.
 @end defvar
 
 @defvar shared_LIBRARIES
@@ -505,6 +509,7 @@ classic Makefiles that provides all the needed features.
 You can instruct OMK to descend to a (sub)directory by setting the
 @code{SUBDIRS} variable in @file{Makefile.omk}.
 
+@anchor{SUBDIRS}
 @defvar SUBDIRS
   This variable contains a list of directories, in which compilation
   must be also invoked. Usually, names of subdirectories are used, but
@@ -512,9 +517,12 @@ You can instruct OMK to descend to a (sub)directory by setting the
 
   Compilation is invoked in these directories before it is invoked in
   the current directory.
+
+  See also @ref{AUTOMATIC_SUBDIRS}.
 @end defvar
 @c TODO: Write tests for this.
 
+@anchor{ALL_OMK_SUBDIRS}
 @defvar ALL_OMK_SUBDIRS
   This variable is set by OMK and can be used as the value of
   @code{SUBDIRS} variable. It contains a list of all direct
@@ -529,6 +537,13 @@ You can instruct OMK to descend to a (sub)directory by setting the
   @end example
 @end defvar
 
+@anchor{AUTOMATIC_SUBDIRS}
+@defvar AUTOMATIC_SUBDIRS
+  If this variable is set to @samp{y} and @code{SUBDIRS} is not assigned
+  in @file{Makefile.omk}, then @code{SUBDIRS} is assigned a default
+  value @code{$(ALL_OMK_SUBDIRS)}.
+@end defvar
+
 @node Dependency Tracking, Configuration and Conditional Compilation, Multiple Directories, OMK User's Manual
 @section Dependency Tracking
 
@@ -725,9 +740,10 @@ directory.
 @node Common Variables,  , Using Configuration Parameters, Configuration and Conditional Compilation
 @subsection Common Variables
 
-It is common practice to use @file{config.omk} to store project-wide
-settings. Here is the list of variables, which are commonly set here
-(but they can also be set elsewhere, e.g. in @file{Makefile.omk}).
+It is common practice to use @file{config.target} or @file{config.omk}
+to store project-wide settings. Here is the list of variables, which are
+commonly set here (but they can also be set elsewhere, e.g. in
+@file{Makefile.omk}).
 
 You can easily ``reconfigure'' your project by changing the
 @file{config.omk} file. It is useful to have several configurations
@@ -895,7 +911,7 @@ in some particular @file{Makefile.rules}.
 @subsection Linux
 
 This @file{Makefile.rules} is used not only for Linux as the name
-sugest, but also for other Unices and even for Windows.
+suggests, but also for other Unices and even for Windows.
 
 @defvar BUILD_OS
   The name of the operating system (OS) where make was invoked.
@@ -919,7 +935,7 @@ sugest, but also for other Unices and even for Windows.
 @node System-Less, RTEMS, Linux, Properties of Specific Makefile.rules
 @subsection System-Less
 
-This @file{Makefile.rules} is deigned for compilation of code for
+This @file{Makefile.rules} is designed for compilation of code for
 (small) micro-controllers without operating systems. See
 @uref{http://rtime.felk.cvut.cz/hw/index.php/System-Less_Framework} for
 more information about our framework, which uses this rules.
@@ -1310,9 +1326,9 @@ separate lookup and download for .po files and full Autoheader... cycle.
 I have put together package similar to release. Only ./configure --prefix=...
 and make is required. CVS sources contains version 3.81beta1.
 You can download prepared sources archive from
-  @indicateurl{http://paulandlesley.org/make/make-3.81beta1.tar.bz2}
+  @uref{http://paulandlesley.org/make/make-3.81beta1.tar.bz2}
 Or you can get our local copy from
-  @indicateurl{http://cmp.felk.cvut.cz/~pisa/can/make-3.81beta1.tar.gz}
+  @uref{http://cmp.felk.cvut.cz/~pisa/can/make-3.81beta1.tar.gz}
 
 The archive contains even "make" binary build by me, which should work
 on other Linux distributions as well.  Older version of MAKE (3.79.x
@@ -1324,7 +1340,7 @@ bug.
 The local CTU archive with our CAN components prepared for inclusion
 into OCERA SF CVS could be found in my "can" directory
 
-  @indicateurl{http://cmp.felk.cvut.cz/~pisa/can/ocera-can-031212.tar.gz}
+  @uref{http://cmp.felk.cvut.cz/~pisa/can/ocera-can-031212.tar.gz}
 
 The code should build for user-space with new make on most of Linux distros
 when make is updated.
@@ -1368,7 +1384,34 @@ list for all options if Kconfig is used.
 @node OMK Development, Variable Index, Original README, Top
 @chapter OMK Development
 
+This section is far from complete. Its purpose is to document internals
+of @file{Makefile.rules} as well as other things needed only by people
+who hack OMK itself.
+
+@section Passes
+
+A pass is created by instantiation of @code{omk_pass_template} with
+@var{pass-name} as one of arguments. This defines several targets which
+are described here:
 
+@table @code
+@item @var{pass-name}
+Target used to invoke the individual pass either from command line or
+from inside of @file{Makefile.rules}.
+
+@item @var{pass-name}-submakes
+Invoked recursively from @var{pass-name}. The reason for this is the
+fact that 
+
+@item @var{pass-name}-this-dir
+This target calls make recursively once again with @var{pass-name}-local
+target, which does the real-work. Make's working directory is set to the
+corresponding directory in @file{_build} tree and the -local
+
+@item @var{pass-name}-@var{dirname}-subdir
+This target is responsible for recursive invocation of @command{make} in
+subdirectories specified in @code{@ref{SUBDIRS}} variable.
+@end table
 
 @node Variable Index,  , OMK Development, Top
 @unnumbered Variable Index