When building icu4c, it defaults to clang instead of gcc when the default compiler, cc / c++, is a symlink to gcc / g++.
This not the expected behavior when building C and C++ code.
It appears that this behavior was put in place originally for supporting C++11, which hopefully is no longer such a concern.
This PR adjusts the configure.ac for icu4c to prefer the cc and c++ compilers first.
Run the tests only on the main branch of the unicode-org/icu repository. This avoids diluting the performance charts with performance results from the maintenance branches. Also, the performance tests won't execute on forked directories anymore, on which they fail after execution anyway, thus using GitHub resources without purpose.
It has been proposed that make running too many parallel jobs recently
has led to resource exhaustion in our CI, so that some kind of limit
would be helpful to set.
The load average 2.5 limit choosen here is simply the limit used as an
example in the make documentation, as we don't really have any way of
picking an initial value that's certain to be better.
https://www.gnu.org/software/make/manual/html_node/Parallel.html
See #2421
See #2422
Remove the valgrind build in azure pipeline which is slow (about 50-75
mins to run) and replace with a set in github action that run 17
testing jobs in parallel to speed it up to about 25 mins the longest.
1. Shorten job name uconfig_variation-check-unit-tests to uconfig-unit-tests
2. Shorten job name uconfig_variation-check-all-header-tests to uconfig-header-tests
3. use 11 jobs to run each of them in parallel to reduce the ~1hrs run to about 6-8 mins
Co-authored-by: Markus Scherer <markus.icu@gmail.com>
Add the github action bot to build with cfi
Also fix all the known issues which require the change from C style cast to
static_cast inside the i18n and common directory while we are sure about
the object. and use
C++ style dynamic_cast for base-to-derive cast in other code inside i18n
and common and in test code or tool.
Change to use const_cast for casting between const / non-const
Contemporary implementations of the C++ standard library also use the
@deprecated annotation in its header files and these then get included
by the preprocessor when preprocessing the ICU header files, like this:
/// @deprecated Non-standard. Use `is_null_pointer` instead.
In order to work as expected, testtagsguards.sh must therefore be
updated to ignore @deprecated annotations unless they're for ICU.