- 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
- Add comment to tts initialization on Windows
- Correctly free the voicesInfo in linux ttsMan
- Remove popState method from linux-text-to-speech.h and
windows-text-to-speech.h
- Add tts to help in configure
- Refactor language setting in gui-manager.cpp
It counted with english being the default language in
ttsMan constructors, which isn't true anymore.
I looked at how ResidualVM works with iconv and used a define
ICONV_USES_CONST, which they define in configure, thinking it is
defined by iconv. I a define of this into configure, so this
should fix the build error on osx_intel.
OpenGL works when enabled from the start in scummvm.ini,
when ScummVM is compiled with latest Switch toolchain packages.
It only crashes when switching between SDL modes and OpenGL while
ScummVM is running.
GLES2 crashes when switching between SDL2 graphics and OpenGL
graphics. This is a known problem on the platform due to the
implementation of GLES2, it crashes on de-init.
This patch silences the warnings about the (outdated?) 'u'
flag that appears at least when building and linking ScummVM
statically on mingw32:
"`u' modifier ignored since `D' is the default (see `U')"
The cause for this appears to be a bug in recent versions of
libtool that most likely will also appear when building on
Linux. However, since I have not tested this yet, this patch
only disables it for mingw32.
The only downside from this patch is that building a non-clean
build will take (slightly?) longer since we are no longer
just updating (that's what the 'u' is for) changed libraries
during the linking stage, but linking all .a files again.
Most of these flags don't work with modern Android NDKs. The ones
that may, like setting sysroot and include directories, don't work
properly with standalone toolchains. Users compiling for Android
should make sure that they properly set up include paths in their
environment CXXFLAGS/LDFLAGS as needed for the compiler to run,
instead of relying on configure to do it, since configure can't do
it in a toolchain-agnostic manner.
There was already a configure option to specify a output format other
than plain text, but this had to be specified explicitely when
executing configure. Now the ports can define a default other than
plain text.
On macOS now by default pandoc generate html output. It could
in theory also generate rtf, but those are not properly displayed
by TextEdit, and in addition TextEdit cannot handle link internal
to the document (such as for the TOC). But if we are fine with
no link for the TOC, we could pipe the pandoc html output with
textutil to generate the RTF documents.
Also this change allows to have an extension for the pandoc output
files. By default this is empty for plain text (as before) and
the same as the format otherwise (for example .rtf or .html).
CPPFLAGS should only contain options that are used by the preprocessor, however pkg-config may return C/C++ specific options which are unrecognised by windres.