When I added the "tee" commands to split off command outputs to
a file and the screen, I forgot that the exit status of the make commands
takes the exit status of "tee" which does not ususally have an error and
masks any error in the actual compilation. I added an exit ${PIPESTATUS[0]}
which returns the exit status of the compilation.
Added echos to all compile commands to append to MAKE_out. tee'd
the output of the compile command so that it will go to both the MAKE_out
file and the screen.
This tst was only run if the HOST_CPU of the run matched one
of the pre-existing files. So it was only tested on SL6. Found
that the udunits change never made it to these log files. I
updated the units and introduced only one copy of the files that
all platforms will test against.
Like gcc, swig supports all those -M options. Use them to automatically
manage *_py.cpp dependencies.
Add dependency generation to trickify.mk as well.
Make spends a considerable amount of time checking targets against
built-in implicit rules. Let's turn them off, enjoy some speedup, and
see if anyone was relying on them!
Refs #360
Moving targets to the more correct makefile like defining S_MAIN should
be in make_makefile_src. Moved the makefile_overrides rules read from
directories into their own makefile.
Changed some order only dependencies to actual dependencies. Added a
check in make_makefile_src for new files that should trigger recreating
Makefile_src.
CURDIR is used to produce absolute paths in S_source.d, which allows it
to be included from external makefiles. It is specifically intended to
be included from a Trickified project's user-facing makefile. That is,
the one the user is intended to include in a sim's S_overrides.mk. This
allows the project to automatically build their Trickified object as
part of a simulation build, but only when necessary as specified by the
dependencies.
Refs #309
Trick uses dlsym to dynamically load symbols at run time. At link time,
it cannot be known which symbols will be needed. When presented with a
library, the linker will only link in symbols that are known to be
needed. Therefore, the use of -whole-archive (Linux) or -force_load
(Mac) is necessary when linking a Trickified library into a sim.
We can simplify this by partially linking into an object instead of
creating a library. The linker will link all symbols in an object
regardless of whether or not they are known to be needed.
Refs #309