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.
- Move AGOSGameDescription -> detection.h
- Move obsoleteGameIDsTable -> obsolete.h
- Both the above points are because the detection needs them, as well as the engine.
- By moving to headers in this pattern, we avoid many unnecessary inclusions and keep everything clean.
- Entire code was located in the main sword2.cpp file.
- Seperate detection-related code to detection.cpp
- Seperate other MetaEngineConnect related code to metaengine.cpp
- detection.h serves common code between the above files
- A enum value has been copied from sword2.h into the detection TU to avoid duplicate copy
- the detection.h has static function definitions for detecting games.
- This is because metaengine.cpp includes it & detection.cpp does as well.
- If we keep the methods as static, we can truely seperate out everything detection related.
- Also, we remove the static keyword so other TU's can use the functions defined.
- This change has a catch.
- Because creating an instance depends on game detection code from detection.cpp, we cannot exclude it from Scumm.
- For Statically linked Scumm, we can simply exclude these detection files, because they're already being built.
- For dynamically linked Scumm, we can add it to our executable.
- Thus, for dynamically linked Scumm, one catch is that we have duplicated code (detection.o in our executable, as well as scumm.dll), but that shouldn't be a big problem considering the advantage it gives us: Detection without a plugin loading.
- Detection related code, and the class MetaEngine lives in detection.cpp
- Things which require the engine to be loaded, are in metaengine.cpp - the relevant class is called MetaEngineConnect.
- Update modules for the necessary changes.
The commit had the effect of disabling update altogether as there is
no check for the _updates variable and anything that is not "yes"
disables updates. Instead there is a test for the _sparkle variable
(that is already set to auto by default).
The two variables exist because potentially we could use something
other than Sparkle for the updates.
Also the bug was already fixed by rootfather in commits f204867 and
2615c68 by making sure that _updates is false if _sparkle is false.
This reverts commit 581b4ca594.
It seems that theoradec is not necessarily always linked to an external ogg library
The (xiph) reference implementation depends on the ogg (xiph) library, but optimized versions for various archs (etc the theorarm) might not have this requirement. So better to not prevent enabling it, if the test is passed, even if in some cases it may result to linkage errors if ogg (external) was not enabled.
The use of operator names works fine on gcc and clang, but breaks MSVC. Make
them error on gcc/clang too.
According to this random link, gcc and clang have supported this flag for a
really long time, so it shouldn't need an extra compile check:
https://phabricator.kde.org/D3850
This allows backends to use non-ANSI functions.
As it was the main reason to not set -ansi on these platforms, add it
back to ensure strict adherence to C++ standard.
Added GNU FriBidi, thus allowing Hebrew (or other future RTL languages)
to be displayed correctly.
It's been implemented for all ScummVM GUI (as far as I have noticed),
and can be further used by the engines as needed.
This work is only partial, because for complete BiDI support we'll need
to mirror the widgets, and support input text areas (which currently
don't even support Hebrew text input at all).
Some changes are required in order to use this:
- Visual Studio:
-- add FriBidi lib from https://github.com/ShiftMediaProject/fribidi
(and place the files in the other libs location)
-- add fribidi.dll to the current directory
-- add fribidi.lib to VS library list
(in GUI it's: Project -> scummvm Properties -> Linker ->
input -> Additional Dependencies)
-- Add USE_FRIBIDI define
either to:
dists/msvc/ScummVM_Global.props <PreprocessorDefinitions>
or in GUI:
Project -> scummvm Properties ->
C/C++ -> Preprocessor -> Preprocessor Definitions
- GCC:
-- install FriBidi
e.g.,
Ubuntu: `apt-get install libfribidi-dev`
CentOS: `yum install fribidi-devel`
-- rerun `configure`
This is a workaround for the blurry display we get on retina screen
when building with SDK 10.14 or above. Unsetting the SDK version
in the executable is sufficient to avoid the issue. See bug
similar change in LibreOffice.
The workaround can only be used with Xcode 11 or above. When using
configure it automatically detects if the workaround can be used.
The workaround is disabled by default in create_project and needs
to be enabled manually (uncomment the MACOSX_NO_SDKVERSION define
at the top of the xcode.cpp file).
- Don't expect compilation to be run on a Linux host
- Allow override of CXX and STRINGS by environment variables
This should not break already working build systems
https://github.com/Pro/raspi-toolchain
Current release of this toolchain must be installed in /opt
This uses a more recent gcc (8) whereas the official one uses 4.3-2
This is used for two purposes:
1. Use the new legacy icon when targeting 10.5 or older. This fixes
bug #11261 MAC OS X: App icon doesn’t display on OS X 10.5.8.
2. Do not attempt to compile the dock plugin in 32 bits when
targeting 10.14 or newer. This fixes the bundle target as support
for compiling 32 bits binaries was removed in SDK 10.14.
This commit also removes the bundle64 target as it is no longer
needed.
Updated NDK to r21 (LTS)
Switch target Android to 29 as it is required by Google Play Store
Switch minimum Android to 16 (4.1) as it is the lowest supported version by NDK
Removed MIPS and armeabi as they are no longer supported
Renamed Android build names into official ones
This was a relatively short-lived port. We have it broken and
disabled on the buildbot since 2016. Also, the last builds
were provided in 2011. Thus, it makes a little sense to continue
to keep the code in the repository, as it gets bitrot.
In the previous commit we modified the configure script to silently
ignore some options, that are not needed for ScummVM, but are valid
for the configure script generated by GNU Autotools, so the configure
macro for RPM-based distributions can be used when building a rpm
package for them.
Unfortunately the configure script, as used by ScummVM uses the --host
option to determine the target system it will actually be build for.
Autotools based configure scripts have a --target option for such a
purpose, and use the --host option to determine the system the build
is performed on.
For that reason there should be a way to discard the parameters passed
to the configure script with the --host option. The easiest approach
to achieve this goal, is to have an environment variable, which when
set influences the configure script to ignore the parameters of the
--host option.
Thus we introduced a variable called 'CONFIGURE_NO_HOST', that will
when set to anything, but an empty value, before invoking the configure
script, have the parameters of the --host option take no influence on
the configure stage (and the build stage as well).
RPM-based distributions come with a configure macro, that sets up the
whole build environment. In order to be able to use this macro, some
options, which are valid for the configure script generated by GNU
Autotools, should not error-out when preparing the build stage.
Instead of showing subengines directly under their parent engine, like:
illusions Illusions Engine engine
kyra Kyra engine
lol Lands of Lore in Kyra engine
eob Eye of the Beholder in Kyra engine
lab Labyrinth of Time engine
Show them slightliy indented, like:
illusions Illusions Engine engine
kyra Kyra engine
- lol Lands of Lore in Kyra engine
- eob Eye of the Beholder in Kyra engine
lab Labyrinth of Time engine
It keeps the list sorted, and makes it easier to skim through it.
This is for debugging the current buildbot toolchain failures, but
it is a relatively innocuous change which should help debugging if
compilers are failed to be detected for various porters.
Some platforms (eg. Android, iOS) use edited versions of SDL_net or SDL2_net that does not require SDL or SDL2
This should enable local server (LAN) mode for Android and probably iOS
Currently, --enable-release always enables updates even on unsupported platforms.
This additional check disables updates entirely if no proper sparkle implementation
is found.
Fixes#11217.
This sets Android as a non-standard port in configure in order to override the definition for vsn_printf
The vsn_printf implementation is taken from https://github.com/weiss/c99-snprintf
Also added macros for the plain (non-SDL) Android port __ANDROID_PLAIN_PORT__ and ANDROID_PLAIN_PORT
The workaround of this commit uses the same logic as for the Nintendo Switch port and should suffice for testing purposes. It should be replaced by more elaborate code of installing and maintaining a certificates pem file.
TTS libraries can now be used in default Mingw-w64 environments.
- Removes reference to sapiddk.h which isn't used and isn't in Mingw-w64
- Defines guids whose symbols are missing from Mingw-w64
- Restores TTS detection to configure script