Commit graph

2053 commits

Author SHA1 Message Date
Cameron Cawley
77523c844c CONFIGURE: Make SVQ1 and QDM2 optional components 2025-03-03 07:31:41 +02:00
Donovan Watteau
b85fa35036 CONFIGURE: MACOSX: Use -fno-var-tracking-assignments for OSXPPC
On OSXPPC, a newer toolchain is required for C++11 support.
This, in turn, requires an updated GDB for the newer symbols.

OSX Tiger can't use anything newer than DWARF v2, it seems, so
that's why we're already using -gdwarf-2 (older 'stabs' formats
weren't reliable with these toolchain and GDB releases).

I've been hitting internal GDB errors when analyzing a backtrace
in the TWP engine, until I dropped the -fvar-tracking-assignments
flag we enable by default.  The GCC manual page says that "Use of
-gdwarf-4 is recommended" along with this option, so that's
probably why I was having issues.

(Debug builds on OSXPPC already have an implicit '-O0' requirement,
anyway, as so the GDB release's so old and clunky that it's unwise
to hope anything about '-O2 -g', so -fvar-tracking-assignments
wasn't that useful there anyway.)
2025-02-28 23:07:28 +01:00
Eugene Sandulenko
beca5be32b
CONFIGURE: Fix SDL detection on systems without sdl-config 2025-02-19 02:00:33 +01:00
scemino
8afb2c1f62 BACKENDS: Add SDL3 backend + update imgui 2025-02-18 22:13:56 +01:00
Le Philousophe
39efaa54d5 IMGUI: Use the static loader if we are not using GLAD
Fixes bug:15541.
2025-02-16 18:44:23 +01:00
Donovan Watteau
63d903d037 CONFIGURE: Make --disable-gold the default, now that Binutils deprecated it
This is a follow-up to previous commit eb904f67e5.

GNU Binutils 2.44 officially deprecated the (mostly unmaintained for
some years) Gold linker:

https://lists.gnu.org/archive/html/info-gnu/2025-02/msg00001.html

So, make --disable-gold the default, now.  Users having good reasons to
try linking with Gold anyway now need to set an explicit --enable-gold,
since we'll try to revert to GNU BFD if it's found, and if Gold appears
to be the default for some reason.
2025-02-16 11:32:54 +01:00
Le Philousophe
12cf92dec5 ANDROID: Enable NEON by default
This will allow better performance for the vast majority of older
Android devices.
The Android devices lacking NEON support are really rare and will be
able to make use of an alternative APK compiled using
--disable-ext-neon.
2025-02-01 18:06:56 +01:00
Le Philousophe
859a8e06ad GRAPHICS: Also enable NEON codepath if compiler builds with NEON enabled
This will allow to build with NEON on platforms using an old compiler
but with NEON enabled for all translation units.
2025-02-01 18:06:56 +01:00
Le Philousophe
ffe33de533 CONFIGURE: Fix compiler version checks
The checks were too strict compared to the targeted versions.
In addition, for GCC on ARM, the NEON target gating was introduced later
than for x86.
2025-02-01 18:06:56 +01:00
Donovan Watteau
eb904f67e5 CONFIGURE: Avoid using the Gold linker on non-mainstream archs, unless using --enable-gold
Debian, Fedora and Slackware have been building their official ScummVM
packages with --disable-gold for a while, because of build failures on
(at least) i386:

a6afd58cf8
e737fe0c41
https://git.slackbuilds.org/slackbuilds/commit/games/scummvm?id=d3ce31e0215d7d6fdf7bdecac1bad499a0e0167d

I saw a similar issue on Linux ppc32 myself (linker internal error when
doing a full `-Og -g` build with all engines), and both Gentoo and Fedora
treat Gold as a deprecated linker nowadays, anyway.

Alternative linkers exist (mold, lld...), and ld.bfd often is a safe
default (and AFAICS it's not as slow at it used to be).

People really wanting to use Gold on other archs can still ask for it
with --enable-gold.

Out of simplicity, this patch doesn't handle the case where Gold would
be the default OS linker. We hope no system is doing that, if its linker
is known to have this kind of issues.
2025-01-30 18:00:58 +02:00
Le Philousophe
a3c8c88f3b CONFIGURE: Warn if the stack frames are too large 2025-01-24 22:57:30 +02:00
Orgad Shaneh
063209a962 BUILD: Fix build on mingw with libcurl
waitOnSocket in socket.cpp uses select, which is implemented in ws2_32.
2025-01-03 08:28:44 +01:00
Le Philousophe
546f097ff5 ANDROID: Build with optimizations when requested even in debug mode 2024-12-27 19:52:36 +01:00
Eugene Sandulenko
49e43701d5
CONFIGURE: Turned gif into a component 2024-12-27 13:20:50 +01:00
Eugene Sandulenko
a7aec6c486
CONFIGURE: Implement mpeg2 as a component 2024-12-27 13:03:46 +01:00
Eugene Sandulenko
e32dee18aa
CONFIGURE: Added ENet as a component used by scumm-he games 2024-12-27 12:53:43 +01:00
Eugene Sandulenko
847c714e68
CONFIGURE: Split indeo into indeo3 and indeo45 components
Also, add indeo3 as a dependency to bbvs and add all codect to testbed
2024-12-27 12:40:26 +01:00
Eugene Sandulenko
74c2cb0c13
CONFIGURE: Added universaltracker as a meta-component
This could disable both MikMod and OpenMPT as the universal tracker
libraries
2024-12-26 23:04:48 +01:00
Eugene Sandulenko
be4ac56d3b
CONFIGURE: Turned MPC into a component 2024-12-26 22:57:11 +01:00
Eugene Sandulenko
879eba5c32
CONFIGURE: Replace mt32emu component with 'midi'
This component disables all MIDI-related things when unused,
including MT-32 emulator, Fluidsynth, TiMidity and Sonivox
2024-12-26 22:54:56 +01:00
Eugene Sandulenko
c0f635ba38
CONFIGURE: Added VGMTrans Soundfont audio as a component 2024-12-26 22:54:56 +01:00
Eugene Sandulenko
bd88407cdd
CONFIGURE: Skip compilation of unnecessary file with mt32emu disabled 2024-12-26 19:38:28 +01:00
Eugene Sandulenko
89febd4230
CONFIGURE: Turned sid_audio into a component 2024-12-26 19:30:48 +01:00
Eugene Sandulenko
4a70b3507f
CONFIGURE: Added fmtowns_pc98_audio as a component 2024-12-26 19:18:49 +01:00
Le Philousophe
d7a45e8d5f CONFIGURE: Improve components descriptions 2024-12-26 18:42:44 +02:00
Eugene Sandulenko
bfd09fc81b
CONFIGURE: Added 'hnm' video codec as a component 2024-12-26 01:10:14 +01:00
Eugene Sandulenko
a6e3feed61
CONFIGURE: Turned Indeo codecs into 'indeo' component
For Director engine it is marked as optional, since so far onnly
one game is using it.

This could lead to regressions since we were not tracking which
games use Indeo codecs since we added them in 2016 (Indeo 4&5) and
2010 (Indeo 3). So, there could be an AVI video which is now stops
playing and produces a warning. In this case, the 'indeo' component
must be added to the respective engine.
2024-12-26 01:10:14 +01:00
Hubert Maier
f54fd81b4f
JANITORIAL: Fix typos in general files 2024-12-25 16:57:34 +02:00
Le Philousophe
4954e7879f CONFIGURE: Document features that can't be components
And reorder the features declaration list.
2024-12-25 00:34:39 +01:00
Le Philousophe
d33ec239fa CONFIGURE: Added imgui component and marked all the relevant engines 2024-12-25 00:34:39 +01:00
Le Philousophe
f7a881b114 CONFIGURE: Component settings are really a define
Rename the variable.
In addition, remove the useless component name (as it's a feature, we
can get the name from the fitting feature).
2024-12-25 00:34:39 +01:00
Le Philousophe
eae088d18e CONFIGURE: Don't duplicate features and components
Make a component a specialized feature.
This avoids repeating ourselves.
2024-12-25 00:34:39 +01:00
Eugene Sandulenko
2b41c7807d CONFIGURE: Added tinygl as a component 2024-12-25 00:34:39 +01:00
Eugene Sandulenko
d780708c96 ENGINES: Add mt32emu as a feature and component
Add it to engines that have MIDI playback.

This essentially compiles the emulator only when an engine that
can potentially use it (e.g. MIDI) is enabled
2024-12-25 00:34:39 +01:00
Eugene Sandulenko
63f60562d0 CONFIGURE: Eliminate duplicate defines for features/components
Now the matching features are enabled via components
2024-12-25 00:34:39 +01:00
Le Philousophe
4079c8a85a CONFIGURE: Slightly simplify the engines.awk.out generation
There is no need of the she-bang on sourced scripts and eval should be
avoided.
Using a single > allows to not remove the file before writing to it.
2024-12-25 00:34:39 +01:00
Eugene Sandulenko
aa43f4f5e7 CONFIGRE: Added theoradec component and marked all the relevant engines 2024-12-25 00:34:39 +01:00
Eugene Sandulenko
daa3bd0abf CONFIGURE: Fix multiple component disabling. Add vpx component 2024-12-25 00:34:39 +01:00
Eugene Sandulenko
8f0cf59c73 CONFIGURE: Properly pass disabled features from the awk script 2024-12-25 00:34:39 +01:00
Eugene Sandulenko
0207a98c59 CONFIGURE: Implemented two passes for engine checking
THe first pass checks if there are features (deps) which are not
used by any enabled engine and schedules them for disabling
2024-12-25 00:34:39 +01:00
Eugene Sandulenko
f93919b6e9 CONFIGURE: Re-add lua as a feature 2024-12-25 00:34:39 +01:00
Eugene Sandulenko
f1f826f0e2 CONFIGURE: Added possibility to define engine components. Turn lua into a component
Components are parts of the ScummVM common code that could be optionally
built only when the engines that use them are enabled
2024-12-25 00:34:39 +01:00
rsn8887
1c2c1c8c11 BUILD: On PSP -O3 and dynamic detection work well now 2024-12-21 14:12:54 -06:00
Le Philousophe
a9c42d271a Revert "BUILD: On PSP use -O1 to fix crash on startup"
This reverts commit 0318b6b7ba.
The root cause is now fixed.
2024-12-21 12:52:04 -06:00
rsn8887
0318b6b7ba BUILD: On PSP use -O1 to fix crash on startup
When built with -O2, the new path handling from commit
93a8f7f4d6 causes the PSP to crash
on loading kbd.zip. This can be reproduced in PPSSPP emulator.
The fact that -O1 fixes this problem probably indicates some
undefined behavior.
2024-12-19 16:07:36 -06:00
Donovan Watteau
25f8cf5eba CONFIGURE: MACOS: Link with -headerpad_max_install_names for OSX <= 10.5 2024-12-11 16:06:51 +01:00
Thierry Crozat
dbcc0b6b90 BUILD, MACOS: Restrict -force_cpusubtype_ALL flag to MacOS X PPC 2024-12-06 15:39:14 +00:00
Vladimir Serbinenko
4cb942a4be KOLIBRI: Fix freetype detection on kolibri 2024-12-06 17:17:12 +02:00
Donovan Watteau
6041d7e455 CONFIGURE: Remove tmp_endianness_check.dwo leftover
Seen with GCC 5.5.0.
2024-12-03 07:46:23 +02:00
Donovan Watteau
0979284958 CONFIGURE: Add -ffat-lto-objects to the endianness check for LTO builds
Some Linux distributions enable compiler Link Time Optimization by default,
but our endianness check may fail there, if the object that is created only
contains Intermediate Representation and no regular Machine Code, especially
as not all 'strings' utilities are guaranteed to understand IR-only objects.

The -ffat-lto-objects flag (added in GCC 4.7) makes sure that this object
will always contain regular machine code, even when LTO is turned on.

From Fedora.
2024-12-03 07:46:23 +02:00