Currently, the logic for exporting symbols is rather complicated: when
tests are enabled internal symbols are exported in addition to the
public symbols. Such logic causes several problems. (1) Test binaries
link against a Ceres build that is different from the final release
since fewer optimizations are applied if more symbols are exported. (2)
Also, some toolchains hide symbols by default breaking the existing
logic eventually causing linker errors.
Since internal symbols are not intended to be used outside of the
project, we can compile them into object files and use exactly the same
binary code both for the final build and the tests without relying on
conditionals.
By default, all symbols are now hidden unless annotated as public.
Internal symbols are explicitly marked as not being exported in case
users chose not to hide symbols by default.
Change-Id: I589dd10be2f6f438508783cf99d141af0120057b
Genrerate the specialization files by grouping the specializations into
five groups, cutting build time by three minutes (roughly 20%) in my
tests.
Change-Id: Ifd6a4523a47346c5e84c1cda15b7abba60d8e953
The initial reason for this is because of a previous reformatting CL
triggered a macro redefinition warning in the schur eliminator. But
actually it was worse because the reordering had caused the macro
definition to be ignored and caused a performance regression.
This simplifies the generated files, fixes some formatting errors
and recovers the performance.
Change-Id: I9dbeffc38743b3f24b25843feec2e26a73188413
- update file generator scripts / templates so generated files adhere
to clang-format
- A few exceptions are not fixed, where the file generation results in
lines of different width. To properly fix this would make the code
more complicated and it's not that important for generated files
anyway.
- note that generated files are excluded in ./scripts/format_all.sh
Change-Id: I4f42c83d1fec01242eada5e7ce6c1a5192234d37