__attribute__((used)) here comes from Fedora which uses LTO by default
but this is a GCC-ism, so let this code compile if the compiler is not
GCC-compatible.
Adding the sanitizer flags to the PLUGIN_LDFLAGS fixes link errors
for the plugins when asan, tsan, or ubsan is enabled.
Adding the original LDFLAGS to PLUGIN_LDFLAGS means we no longer needs
to use both in the link command for plugins.
-mlongcall -Os would work until ScummVM 2.2.0, but now the engines are
too big to fit in a single static binary on Mac PowerPC.
(On ELF platforms, some flags like -Wl,--relax or -Wl,--gc-sections
can be used as well, but macOS uses Mach-O, and its old linker doesn't
have as many workarounds. -Wl,-dead_strip helped a bit but that's not
enough and you start hitting ld internal errors.)
So, recommend dynamic plugins on Mac PPC, now, and drop -Os -mlongcall
since working around the linker limits is not possible anymore. Using
compiler defaults probably means less bugs when using such an obscure
toolchain, anyway.
(Making a static release it still possible, but only with a very small
set of engines.)
codesign didn't exist on Tiger, and didn't have a --deep option on
Leopard.
Moreover, it was rarely used on these older systems, and previous
releases of ScummVM on Mac PowerPC weren't signed either.
@BeWorld2018
- Change plugin naming
- Add using dl library for dynamic
- Add "x" flag for strip to preserve global symbols with dynamic (honestly stolen from @dwatteau and #3877) ;-)
I'd like to get your confirmation on this, since it also touches MorphOS.
Otherwise i'll have to split targets.
Conforming to many of the other platforms use of plugin naming
and to distinguish between ScummVM's engine plugins and the OS'
shared objects/libraries names.
- Remove hardcoded newlib toolchain (there´s an open-source clib2 toolchain
available). Let the user decide which toolchain using LDFLAGS env var.
- Minor comment fixes.
This commit adds support for the SudoMaker RetroWave OPL3 sound card. Requires
the retrowave library.
Add the following settings to scummvm.ini:
retrowaveopl3_bus=serial
retrowaveopl3_port=<port> f.e. COM3 or ttyACM0
Apple's desktop operating system was formerly called "Mac OS X" and "OS X", but since 2016 it has been called "macOS" (starting with version 10.12).
Changing across all comments and documentation to use this current terminology, except in cases where the historical versions are explicitly referenced. No code changes are made; we should consider changing those in future PRs.
With GLAD it's not needed anymore to link against OpenGL libraries.
As configure knows better whether a platform supports GLAD, detection is
moved here.
To allow platforms where OpenGL should be linked at build time, the
tests are kept. Android uses them for now.
The OpenGL for Games was completely decoupled from the OpenGL for 2D
engines. This not the case anymore.
OD Beta is a mips linux OS based on buildroot, that runs on ingenic gaming handhelds
like the gcw0, rg350 and many more.
There was a previous GCW0 port, that was running on legacy opendingux, but that
OS is not maintained since 2014 and has an outdated kernel and toolchain.
Od Beta on the other hand, runs with linux 5.15, has a GCC 10 toolchain and
an active developpment community.
This adds support for 3 flavors :
gcw0 that runs on all jz4770 cpus
lepus that runs on all jz4760 cpus
rg99 which is a jz4725 device
Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>
On replace mode (r), u tells ar to replace object files only if the source
file is newer than the one in the archive.
When binutils is configured with --enable-deterministic-archives, the
default mode for ar is D (deterministic), which means that all the files
are stored with zero for UID, GID and timestamp. This means that ar has no
way to tell if the archived file is older than the source file, so it just
archives all the input files and issues the following warning:
`u' modifier ignored since `D' is the default (see `U')
Fix by dropping this flag. The performance gain is negligible anyway.
- too verbose logging slows down everything
- datadir / causes the whole FS to be scanned at launch, including files which are loaded lazily via XHR
- corrupt default data in local storage
- double-slash in path of VORBIS_LIBS
This is an initial version of the emscripten build/dist target.
Many things are still missing, see dists/emscripten/README.md for
a detailed summary of what this provides and still misses
Prevents a different include order being applied to the readline
function signature test than was applied to the detection test.
On Mac, this can cause the signature test to use Apple's libedit
instead of the path provided to --with-readline-prefix.
a52_init() unconditionally calls a52_imdct_init(), which prints "No
accelerated IMDCT transform found". This interferes with the normals
configure output, which looks like this:
Checking for liba52... No accelerated IMDCT transform found
yes
Reapply a6ded89075.
This already works with all the platforms on buildbot. The mingw release
environment had a misconfigured sdl2-config, but this should now be
fixed.
sdl2-config should return the correct paths without it. Trying to determine
the path by name lookup is error-prone.
For example, if both the host and a cross-toolchain have sdl2 installed,
the host executable is typically /usr/bin/sdl2-config, and the
cross-toolchain is <triplet>-sdl2-config and
/path/to/toolchain/triplet/bin/sdl2-config.
The toolchain bin path should not be part of PATH, because this can cause
clashes when building for the host (depends on the PATH order, and if the
tool exists on both).
And even if we do add the toolchain bin path, like we currently do at least
on MXE container, if the host path comes before the toolchain then the
<triplet>-sdl2-config will be detected, but this executable *is not* in the
directory that relates to this toolchain, but in the host bin (for example,
/opt/mxe/bin), so we pass the wrong path to --prefix and sdl2 breaks.
This only worked on buildbot because the lookup for mingw was sdl-config
instead of sdl2-config, and sdl-config just doesn't exist on the system.
Create a new flag --enable-windows-console to build with console
output on MinGW. The default behavior will be to enable the console.
The current plan is to continue to offer the users both options for
release builds - ScummVM and ScummVM (noconsole).
Whenever the text console is enabled, Windows console will be added
by default. This is to prevent a situation where ScummVM will not load
any visible debug console on hotkey or error.
On AmigaOS miniGL is a static library and linking against it in plugins
prevents to have a shared context. By linking only in main executable,
this forces plugins to use the only context available in scummvm binary.
- Change install path to use an assign instead of an absolute path
- Change system dialogs output to print "asl" instead of "amigaos (asl)", incorporated with morphos (since both targets use the same dialog system) to save some lines
When a subengine is added, its parent engine needs to be rebuilt.
A real solution will be to create a make-dependency file for each engine,
and touch it when its subengines change, but for now we'll just rebuild
everything.
Translated most of the engine work from shell to awk.
Tested that the output is the same (except the order of created files).
Time comparison
---------------
Windows:
* Little gnomes - 99s -> 0.3s
* Creating - 68s -> 1s
* Total - 205s -> 35s
Linux:
* Little gnomes - 3s -> 0.03s
* Creating - 2s -> 0.11s
* Total - 8s -> 3.8s
281b187de4 introduced ${//} bashism which
doesn't work when /bin/sh isn't linked to bash.
Use a more portable version with ${#} as "Version:" string is at
beginning.
Different platforms have different levels of support of encodings and
often have slight variations. We already have tables for most encoding
with only CJK missing. Full transcoding inclusion allows us to get reliable
encoding results independently of platform. The biggest con is the need for
external tables encoding.dat.
It removes a duplicate table for korean in graphics/korfont.cpp
We cannot execute the resulting binary, thus buildbot was not picking up
the version. Now we transfer version number into string at compile
time and search for it in the binary.
The c++11 standard includes some features that do not only depend on the
compiler supporting it, but also the c++ standard library having support
for it. This is the case for the initializer list feature. So when we
compile with a modern compiler but using an old std lib we need a
replacement for it.
The idea is that engines that want to use c++11 can specify it as
a dependency in their configure.engine file so that the engine
is automatically disabled when c++11 is not available.
- In engines.mk, add another module "enginename/detection"
- This module is always added, regardless if the engine is enabled or not.
- Remove the array which helped out when each individual engine port was being added over.
- Update AMEC's getFileProps (changes related to MacResMan)
- This commit also includes a change from other engines.
- Fallback detection here depends upon many Engine resources.
- As such, it might not be suitable to add all of them to executable.
- Thus, shift fallback detection to the dynamic part.
- The static part gets the relevant Engine plugin & then tries to call it.
- This way, fallback detection for Wintermute will depend on the engine plugin.
- Normal detection will still work fine.