\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 Píša
@end copying
@titlepage
@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.
@end itemize
+
+
@node Quick Start, History, Why to Use OMK?, Overview of OMK
@section Quick Start
@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
@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
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
@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
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
@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
@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.
@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.
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
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.