* Invoking OMK::
* Compiling Programs::
* Compiling Libraries::
+* Compiler Flags::
* Recursing into Subdirectories::
* Dependency Tracking::
* Configuration and Conditional Compilation::
@file{Makefile.omk} (usually) in the directory where program sources are
located.
-In the example bellow a program @command{test} will be compiled from
+In the example bellow program @command{test} will be compiled from
source @file{test.c}.
@example
-@verbatiminclude tests/programs/Makefile.omk
+@verbatiminclude tests/programs/compile-a-single-source-c-program/Makefile.omk
@end example
@noindent The variables are:
@end example
@end defvar
+@defvar xxx_CFLAGS
+ CFLAGS specific for the compiler program. If this variable is set, its
+ value efectively overrides the value of OMK_CFLAGS variable.
+@end defvar
+
+@defvar xxx_CXXFLAGS
+ CXXFLAGS specific for the compiler program. If this variable is set, its
+ value efectively overrides the value of OMK_CXXFLAGS variable.
+@end defvar
+
+@defvar xxx_CPPFLAGS
+ CPPFLAGS specific for the compiler program. If this variable is set, its
+ value efectively overrides the value of OMK_CPPFLAGS variable.
+@end defvar
+
+@defvar xxx_GEN_SOURCES
+ Program sources generated (by other rules) in the build directory. See
+ the following example.
+ @verbatiminclude tests/programs/generated-sources/Makefile.omk
+
+@end defvar
+
@defvar lib_LOADLIBES
This variable contains a list of libraries which needs to be linked to
to all programs or shared libraries in this directory.
instead of lib_LOADLIBES.
@end defvar
-@defvar INCLUDES
- Directives passed to the C or C++ compiler with additional directories
- to be searched for header files. In most cases you need to specify an
- absolute path. To specify a directory relative to the source
- directory, you can use the @code{$(SOURCES_DIR)} variable, which
- refers to the directory, where @file{Makefile.omk} is located. This
- variable applies to all compilations invoked in the current directory.
-
- @example
- INCLUDES = -I$(SOURCES_DIR)/my_include_dir
- @end example
-@end defvar
-
-@defvar DEFS
- Directives passed to the C or C++ compiler with preprocessor macro
- definitions. This variable applies to all compilations invoked in the
- current directory.
-
- @example
- DEFS = -DDEBUG=1
- @end example
-@end defvar
-
-
-@c FIXME: INCLUDES variable should not be set by rtlinux rules.
-
-@node Compiling Libraries, Recursing into Subdirectories, Compiling Programs, User's Manual
+@node Compiling Libraries, Compiler Flags, Compiling Programs, User's Manual
@section Compiling Libraries
by other programs.
@example
-@verbatiminclude tests/libraries/Makefile.omk
+@verbatiminclude tests/libraries/static-library/Makefile.omk
@end example
@noindent Variables for use with libraries are:
@subsection Header Files
C and C++ libraries are not very useful without header files. OMK
-provides several variables that controls operations with header files.
+provides several variables that control operations with header files.
During compilation, header files are copied (or linked by symbolic
links) from source directories to the @file{_compiled} tree (see
top level configuration file @file{config.omk} or on command line.
@end defvar
-@node Recursing into Subdirectories, Dependency Tracking, Compiling Libraries, User's Manual
+@node Compiler Flags, Recursing into Subdirectories, Compiling Libraries, User's Manual
+@section Compiler Flags
+
+OMK follows the same philosophy for flag variables as does Automake. The
+variables with OMK_ prefix (e.g. OMK_CPPFLAGS) are supposed to be used by
+the package developer and variable without that prefix (e.g. CPPFLAGS)
+are reserved for the user. The following
+
+@defvar OMK_CPPFLAGS
+Preprocessor switches.
+@end defvar
+
+@defvar OMK_CFLAGS
+C compiler switches.
+@end defvar
+
+
+@defvar INCLUDES
+ Directives passed to the C or C++ compiler with additional directories
+ to be searched for header files. In most cases you need to specify an
+ absolute path. To specify a directory relative to the source
+ directory, you can use the @code{$(SOURCES_DIR)} variable, which
+ refers to the directory, where @file{Makefile.omk} is located. This
+ variable applies to all compilations invoked in the current directory.
+
+ @example
+ INCLUDES = -I$(SOURCES_DIR)/my_include_dir
+ @end example
+@end defvar
+
+@defvar DEFS
+ Directives passed to the C or C++ compiler with preprocessor macro
+ definitions. This variable applies to all compilations invoked in the
+ current directory.
+
+ @example
+ DEFS = -DDEBUG=1
+ @end example
+@end defvar
+
+@c FIXME: INCLUDES variable should not be set by rtlinux rules.
+
+@node Recursing into Subdirectories, Dependency Tracking, Compiler Flags, User's Manual
@section Recursing into Subdirectories
OMK is probably most useful in projects consisting of multiple