Michal Sojka [Fri, 18 Apr 2008 15:47:00 +0000 (15:47 +0000)]
Fixed problem with parallel make (-j) caused by the previous change
If compilation was invoked as make -j, pass serialization didn't work.
In other words, it was possible that, for example, some library-pass
targets was made before all include-pass targets was finished. This
meant all include files were not available for compilation of libraries.
This behavior was caused the fact that recently introduced <pass>-XXX-subdir
targets was direct dependencies of <pass>. Since pass serialization is
done by putting one pass as dependency of another pass, this
serialization dependencies was on the "same level" as -subdir
dependencies and make -j executed them in parallel.
This was fixed by adding another target called <pass>-submakes which is
called recursively from <pass> target after all "serialization
dependencies" are processed. All -subdir targets are dependencies of
only -submakes target and hence are not intermixed with serialization
dependencies.
To avoid overhead caused by this additional recursive make invocation,
all recursive makes are invoked directly with the new -submakes target
as their goal. Hence, the original pass target is called only in the
top-level make.
This change can influence some "nonstandard" constructs used sometimes
in Makefile.omk that count upon invocation of the original pass in every
directory. This issue will be solved by upcoming patches.
Michal Sojka [Thu, 17 Apr 2008 06:25:00 +0000 (06:25 +0000)]
Fixed behaviour of make -k if there is an error in a subdirectory
The previous implementation of recursive invocation of make in
subdirectories didn't obey the -k flag. If there was an error in some
subdirectory, the other directories were not made.
This patch creates a separate targets for each subdirectory and pass and
add them as a dependencies to the main pass target. This way the
compilation errors are handled correctly with the -k flag.
Michal Sojka [Thu, 3 Apr 2008 10:54:00 +0000 (10:54 +0000)]
Added OMK_RULES_TYPE variable
This variable is automatically generated by the omkbuild.py on top of
the Makefile.rules. Its value is the name of rules target. It can be
used for example in config.target to distinguish between targets.
Pavel Pisa [Sun, 2 Mar 2008 00:06:00 +0000 (00:06 +0000)]
Return back "srcdir" variable. The VPATH cleanup has been too intrusive.
The "srcdir" variable notation is compatible with automake tools
and it is already used by some projects in Makefile.omk files.
Removal breaks build of ORTE library code for example.
Michal Sojka [Mon, 28 Jan 2008 08:30:00 +0000 (08:30 +0000)]
Makefile.rules can now tell the OMK tester that the test cannot be executed.
If OMK is executed by tester.py, base snippet calls -check targets for
each pass and defines macro 'canttest'. The canttest macro can be used
by the -check targets or at other places. It notifies the tester that
this test cannot be executed because of something is missing for
example.
This way, the check for "canttest" don't have to be in runtest
scripts, which allows to execute more tests and skip only those, which
relly need some unavailable feature.
Tester application was enhanced to produce results not only by
testcase but also by rules. The results also contains links to test
script and directory, so it is easy to see quicky what a given error
mean.
Michal Sojka [Sun, 27 Jan 2008 15:42:00 +0000 (15:42 +0000)]
VPATH variable completely removed from rules.
If the VPATH variable was set to SOURCES_DIR, it caused problems, when
there were .o files in SOURCES_DIR. OMK thoughts the prerequisites
existed and link command failed, because no .o file were found in
_build tree. This behavior was problematic if OMK was used in
projects with multiple make systems.
Michal Sojka [Sun, 16 Dec 2007 23:36:00 +0000 (23:36 +0000)]
config.target added to documentation. Reworked configuration section.
Please note, that current implementation doesn't conform to what is
written in documentation. We need to investigate how to rewrite
Makefile.rules to behave as described.
Pavel Pisa [Thu, 20 Sep 2007 21:44:00 +0000 (21:44 +0000)]
Yet another MinGW extraordinary expansion problem fix.
The sed invocation
sed -e 's/[ \t]/\n/g'
loses backslash before 'n' for some reason.
tr 'x \t' 'x\n\n'
equivalent function works correctly and "tr" command
has already been made necessary by previous MinGW fix.
Both patterns starts by x to prevent some clever
substitution of '\' (absolute path character in MinGW).
Pavel Pisa [Wed, 19 Sep 2007 23:12:00 +0000 (23:12 +0000)]
There has to be copy of all config headers for kernel build too.
The previous solution has generated config files when they have been
required by kernel objects build. It is not possible now.
The kernel config headers are generated only, if there is some
kernel related activity expected in the directory. There could be
problem if only kernel configs should be build in some directory.
Michal Sojka [Wed, 19 Sep 2007 14:39:00 +0000 (14:39 +0000)]
Generated headers are changed only if neccessary.
If config.omk is changed, it might cause a need to regenerate
generated config.h files. If the generated file will the same as
before the change (i.e. something elese changed in config.omk), the
real file is not updated and thus other files dependent on it are not
recompiled and recompilation time is shorter.
Pavel Pisa [Sun, 16 Sep 2007 16:22:00 +0000 (16:22 +0000)]
The apostrophes in the config options are preserved now.
The previous solution discarded them during default-config generation.
They has been preserved in generation of include files from
config.omk. The right processing could be disputed, but actual
solution is more consolidated and is natural result of default-config
generation correction.
Pavel Pisa [Sun, 16 Sep 2007 15:40:00 +0000 (15:40 +0000)]
Corrected generation of defines from config options for complex values.
The words boundary finding have sometimes not allow to eliminate whole
value part. The separators (spaces or tabulator characters) are converted
to newlines first now and whole lines are processed then.
Pavel Pisa [Sun, 16 Sep 2007 13:39:00 +0000 (13:39 +0000)]
Fix performance degradation when W/OMK_WHOLE_TREE is used.
Whole tree calls make with command-line provided "OMK_SERIALIZE_INCLUDED=n".
If it is not assigned with "override", then serialization would be
included recursively in each subdirectory.