This only implements unsigned types for now, as there are no known use
cases for signed checked arithmetic as of yet. The macros will safely
error out at compilation time if signed types are misused.
As contribs keep being updated with newer versions of the language, we need to
support a more modern version of C++ going forward.
Setting -std=c++17 should not break existing contribs that are built with C++11 or C++14.
In fact we already support the mix of versions between 11 and 14 without problem.
Modern C++ compilers are designed to take care of this [1].
When switching to a new C++ version there might however be some slight differences on how the
code is interpreted. These differences [2] might trigger some build errors for removed parts.
[1] https://stackoverflow.com/questions/46746878/is-it-safe-to-link-c17-c14-and-c11-objects
[2] https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/p0636r3.html
GCC and Clang can check that the % format strings are used with the proper
types. If they are not that can lead to security issues.
This cannot be added to global CFLAGS as it will issue an error when testing
for asprintf/vasprintf in AC_REPLACE_FUNCS().
Add the tests that are not depending on some libvlc plugins, ie. those
that can be run immediately with `meson test` without compiling the
sources first. It makes use of the test infrastructure from the previous
commits.
The test libvlc_media_list_player is commented out like in Makefile.am
since the future refactor of the libvlc API will re-enable it.
This adds a -Drust feature option to the meson build system, which aims
to enable pure Rust modules.
This option will check for the presence of cargo (Rust package manager
and build system) and give a warning about the experimental nature of
the Rust modules.
This option is disabled by default.
We don't need this hack anymore. We call the proper API's available in
UWP when needed.
However we still need to link with windowsappcompat as libunwind is calling
RtlRestoreContext(), regardless if we're building for UWP or not.
While runtime gettext support was already working,
this adds the missing piece of build integrations.
With these changes, three new targets are now available
to manage translation files:
- vlc-pot: Regenerates the .pot files using xgettext
- vlc-update-po: Regenerates the .po files from the current .pot files
- vlc-gmo: Builds (but not installs) the translations
_stricmp a Windows thing that is present in all the CRT, even in UCRT.
The stricmp() deprecated variant doesn't seem to exist elsewhere.
In some configuration it's not possible to link with stricmp() even though
_stricmp() is available.
With a proper C11 compiler we don't need this. Either they activate C11
things in the compiler which should be there anyway. Or in the SDK
which is __USE_MINGW_ANSI_STDIO for C99 and nothing else.
This patch tries to replicate configure.ac (at the time of writing)
from line 407 - 438, except the strict aliasing check. Libraries such as
ole32 are linked by default by meson, so those have been omitted.
Another difference: the check has been moved out of the mingw check.
This is not meant to be functional just yet, but having the winstore
option gives a starting point for further support.