Clang makes a distinction between clang and clang++. In particular, clang++ will give a warning when it is passed `.c` source files; and the extra output warning text means that dmd testsuite output checking fails. The warning can be silenced (-Wno-deprecated) but then other tests will fail because `#ifdef __cplusplus` will be true, leading to header file import issues.
Allow exporting all generated symbols (including internal symbols).
Implement switch `-dllimport` ( windows only, not restricted to `extern(D)`)
Still to do:
* running shared module ctors
* running thread local module ctors
* registering DATA/TLS ranges with the GC
* exceptions
`run.d` / `windows.sh` may use older host compilers that don't support
`-m32omf`. So default to `-m32` using the proper bitness even though
it may use a different object format.
* Produce MS Coff by default when targetting windows
This rebases #12825 but doesn't attempt to rename phobos libraries and doesn't change the build infra where possible(and doesn't have a large diff in `link.d`). See if this fixes the CI issues.
* remove OMF piplines
* Update glue.d
* Update target.d
* Update target.d
* Update frontend.h
The currently used bash uploader is deprecated and will be removed in
the future[1]. This commit replaces the existing setup with the new
uploader for all currently supported platforms as proposed in [2].
Additional notes:
- FreeBSD support isn't supported yet and keeps using the old uploader
- Moved the new implementation into a dedicated file `source`d by
all coverage CI's (instead of changing each individual configuration)
[1] https://about.codecov.io/blog/codecov-uploader-deprecation-plan
[2] https://about.codecov.io/blog/introducing-codecovs-new-uploader
Current coverage report is linux only, this adds reports for Win64.
Win32 is currently excluded because dmd fails the test suite with weird
linker errors when using coverage build.
To finally have DMD's own assertions properly CI-tested. Assertions have
so far only been enabled for CircleCI (reduced testsuite on Linux x64)
and one Azure job (Win64 debug).
Previously, the tools were compiled by the DMD host compiler, but linked
with freshly compiled druntime/Phobos, leading to inevitable issues
popping up in dlang/druntime#3141 and dlang/druntime#3142.
The d_do_test and sanitize_json rules can be processed in parallel.
Additionally, the d_do_test executable can be built while its unittests
are built & run in the background (both take around 8 seconds on my box
with LDC).
These tools are prerequisites for the runnable/compilable/fail tests and
are thus built before running the actual tests.
These changes save a total of about 10 seconds on my box with LDC.
The best parallelization for a full test run is achieved via
`DMD_TESTSUITE_MAKE_ARGS="-j<N>" make start_all_tests`; the CI scripts
have been adapted accordingly.