Compare commits

...

462 Commits

Author SHA1 Message Date
Rafael Kitover
d3f345208d Add toggle: SDL GameController mode for joysticks
Add a toggle for SDL GameController Mode in the game key configuration
dialog, default enabled.

On check or uncheck, change the option and reinitialize joysticks, not
using GameController mode if it is disabled.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-29 14:29:37 +00:00
Rafael Kitover
8183a005af translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-29 02:00:21 +00:00
Rafael Kitover
75a34cd098 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-28 02:00:21 +00:00
Rafael Kitover
23e1573442 build: set wxWidgets_DIR with vcpkg
When using vcpkg as the toolchain, pass NO_DEFAULT_PATH to
find_package(wxWidgets ...) so that the default cmake
FindwxWidgets.cmake is not included.

Set wxWidgets_DIR to the
<vcpkg-root>/installed/<triplet>/share/wxwidgets vcpkg port directory
for the subsequent find_package() calls to find the port-installed
wxWidgetsConfig.cmake file.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-27 03:02:33 +00:00
Fabrice de Gans
98b51910eb [Build] Remove ENABLE_NLS, fix TRANSLATIONS_ONLY
* Remove the ENABLE_NLS option, it is now always enabled.
* Fix the TRANSLATIONS_ONLY build to properly build the zip file.
2024-03-26 17:38:12 -07:00
Rafael Kitover
c3f0aa2edf translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-26 22:18:10 +00:00
Rafael Kitover
ea596e4cb0 translations: rebuild source .pot
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-26 22:17:52 +00:00
Fabrice de Gans
68adb14b07 [Build] Use Toolchain-gcc-clang for non-MSVC
Apple compiler ID is defined as `AppleClang`. Rather than explicitly
adding every single compiler ID, this changes the build to try to apply
settings for GCC for every non-MSVC-like compilers.
2024-03-18 17:12:51 -07:00
Fabrice de Gans
a565cea8e9 [Build] Remove the OpenGL check
This is no longer necessary with modern CMake.
2024-03-18 23:56:22 +00:00
Fabrice de Gans
6ac95d373f [Build] Rework wx/CMakeLists.txt
* Bring the wx frontend more in-line with the rest of the codebase.
* Always default to Unicode APIs on Windows.
* Clean up all include guards and headers.
2024-03-18 23:56:22 +00:00
Fabrice de Gans
d4430ca440 [Build] Move SDL build configuration to sdl/
* Clean up SDL includes and include guards.
* Add the sdl target to `sdl/CMakeLists.txt`.
2024-03-17 14:41:07 -07:00
Fabrice de Gans
000c7f854c [Build] Move non-core common code to components/
* Create multiple components library. These depend on the core code and
  are used by multiple frontends.
* Clean up the filters declaration by moving them to a common header in
  `components/filters/filters.h`.
* Clean up the include guards and include orders.
* Fix the modified paths in `src/debian/copyright` to match their new
  location.
2024-03-16 17:32:09 -07:00
Fabrice de Gans
047bd935ea [Build] Move the core emulator to src/core/
* Move src/apu/, src/gb/ and src/gba/ to src/core/.
* Clean up include guards and headers.
* Rename `BKPT_SUPPORT` to `VBAM_ENABLE_DEBUGGER` and remove the
  `NO_DEBUGGER` define.
2024-03-16 14:35:36 -07:00
Fabrice de Gans
33cb9a66d4 [Build] Move System.h and most of Util.h to core/
* Move System.h to core/base.
* Move most of the functionality out of Util.h to core/base.
* Fix corresponding headers.
2024-03-15 20:43:57 -07:00
Fabrice de Gans
f8374b52a8 [Build] Move more of src/common to src/core/base
* Clean out all of the dependent headers.
* Modify generated version.h to improve the dependency chain and isolate
  the generated file to its own sub-directory within the build
  directory.
2024-03-15 19:51:52 -07:00
Fabrice de Gans
2f10e71f1d [Build] Cleanup files in src/common
* Remove unused files.
* Move files used only by the SDL frontend to the sdl folder.
* Remove contains.h in favor of manual iterator parsing.
2024-03-15 17:05:16 -07:00
Fabrice de Gans
8f92d99968 [Build] Move file-related utilities to core/base
* Remove duplicate function definitions between the libretro and other
  frontends by merging them into a common source file.
* Also move `systemMessage()` and message IDs definitions to core/base.
* Clean up and modernize many file utility methods.
2024-03-15 16:04:45 -07:00
Fabrice de Gans
ce12db1e06 [Build] Move fex/ to src/core/fex/
* Clean up source set and public headers.
* Make the fex library an OBJECT library to speed up build.
* Clean up the only fex include to use the full path to the header.
2024-03-15 12:16:40 -07:00
Fabrice de Gans
d8a1886ccb [Build] Use new way of setting /Z flag with MSVC
CMake 3.25 introduced the CMAKE_MSVC_DEBUG_INFORMATION_FORMAT to set the
/Z flag for MSVC toolchains. Use it rather than modifying the compile
options if possible. We revert to setting the compile options manually
if the CMake version is too old.
2024-03-15 11:32:38 -07:00
Fabrice de Gans
1d051d0e6e [Build] Make powershell optional on non-Windows (#1248)
Fixes: #1247
2024-03-15 11:32:24 -07:00
Fabrice de Gans
f96e42fe04 build: cmake refactor and improvements
* Use add_compile_definitions everywhere.
* Remove unused intermediate target.
* Add ASAN support for MSVC.
* Remove duplicate option definitions.
* Configure MinGW separately from the toolchain
2024-03-15 16:19:01 +00:00
Fabrice de Gans
aa59d94490 [Build] Add toolchain-specific files (#1244)
* Move toolchain-specific options to their own files.
* Clean up and modernize the use of toolchain options.
* Use modern cmake LTO support.
* Remove dead cmake code and cmake functions available in upstream cmake.
* Update README.md to remove references to removed build options.
2024-03-13 11:13:55 -07:00
Fabrice de Gans
07e490254c Fix most remaining release warnings (#1243)
Bug: #1003
2024-03-11 18:56:01 -07:00
Fabrice de Gans
18b97b4342 Fix various build warnings (#1242)
* Mass-rename some global variables with clangd
* Fix various int conversion issues

Bug: #1003
2024-03-11 16:47:45 -07:00
Rafael Kitover
b45a4066b1 ci: add clang+bintools for macOS, disable LTO
Add llvmPackages_latest.clang and bintools to the macOS part of
default.nix for nix, because for some reason the `ar` utility is not
found in GitHub actions right now.

Disable LTO for the macOS action for now, this is a consequence of
recent cmake refactoring and needs to be fixed.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-11 08:53:47 +00:00
Fabrice de Gans
1fff5cb1f7 Move build options to their own file
This moves all build options to their own file to clean up the main
CMakeLists.txt. In addition, this upgrades the minimum required CMake
version and changes the build to use CMAKE_MSVC_RUNTIME_LIBRARY rather
than hardcoding the MSVC ABI flag.
2024-03-11 01:38:25 +00:00
Fabrice de Gans
13a16eb79c Fix various warnings in filters and headers (#1241)
Bug: #1003
2024-03-10 17:33:11 -07:00
Fabrice de Gans
69769c1bef [CI] Use proper POWERSHELL variable casing
The POWERSHELL cmake variable was sometimes used lowercase.
2024-03-10 16:24:02 -07:00
Fabrice de Gans
e998a4016a [CI] Properly inclue SDL2 directories for vbamcore (#1240)
The variable name should have been changed to SDL2_INCLUDE_DIRS
2024-03-10 16:14:52 -07:00
Fabrice de Gans
f17a9855f3 [CI] Look for pwsh in addition to powerhsell (#1239)
Newer github actions bot setup no longer include a powershell.exe
binary, only pwsh.exe
2024-03-10 15:58:25 -07:00
Rafael Kitover
85b7cf7aec translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-10 02:00:30 +00:00
Rafael Kitover
f46da1c525 build: remove our version of FindSDL2.cmake
SDL2 now comes with a cmake find_package() module, so we will use it
instead of this one that came from someone's github a decade ago.

Keep the fixup for libsamplerate with vcpkg and move it into the main
cmake code.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-08 23:41:26 +00:00
Rafael Kitover
404e9a1a55 build: add clang to ./installdeps for MSYS2
Add clang when installing for CLANG* environments in MSYS2 because this
package is no longer included by default in the set of packages we
install.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-08 23:13:32 +00:00
Rafael Kitover
3ec8960f1a translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-08 02:00:29 +00:00
Weiran Wu
613bd4038a Make menu more reasonably organized (#1230)
* Make menu more reasonably organized
* Revert name and order change of configs

---------

Co-authored-by: wuweiran <wwrnfls@126.com>
2024-03-06 18:25:42 -08:00
Rafael Kitover
ecb69a240a build: add pthreads w/vcpkg, link FAudio target
In preparation for including the finished FAudio support, link the cmake
FAudio target FAudio::FAudio when the feature is enabled.

Add pthreads to vcpkg deps and use the installed PThreads4W on Windows.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-03-06 21:58:43 +00:00
Rafael Kitover
215e3c5ae9 build: use find_program() to find powershell
Use cmake find_program() to find powershell.exe on Windows because
invoking `powershell` or `powershell.exe` without a path sometimes fails
for some reason. Use the standard location on Windows 11 as a hint.

Make the `pwsh` executable REQUIRED when installing vcpkg packages
on non-Windows.

Use find_program() to find the zip executable before downloading it on
Windows vcpkg builds.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-28 13:44:22 +00:00
Rafael Kitover
e5aa685f70 build: don't use wx utils as UNIX cmds on Windows
Don't convert wx-config and wxrc into UNIX commands on a Windows host,
as the paths may have spaces in them and this will break the invocation.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-28 13:11:23 +00:00
Rafael Kitover
53e1f44a69 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-26 02:00:28 +00:00
beef
9e4c8e1753 build: fix gentoo dependency namespaces
Change sys-devel to dev-build to match current gentoo package naming
convention. Also add --ask flag to prompt for confirmation before
merging packages.

Signed-off-by: Mohamad Issawi <68k@segv.moe>
2024-02-20 06:20:07 -08:00
Jhonny Oliveira
5f853b99ad Update metainfo.xml to new standards
Update metainfo.xml to new standards.

Fix #1221
2024-02-20 06:15:17 -08:00
Rafael Kitover
e7d135dbf1 Update links to new domain visualboyadvance-m.org
Update all URLs in the code and documentation to the new domain
visualboyadvance-m.org and also fix the date for the last release in the
CHANGELOG.md.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-06 15:55:19 +00:00
Rafael Kitover
60fc096f1a build: add libglu-devel for solus in installdeps
Add libglu-devel to the list of dependencies for solus in installdeps,
this is required for wxWidgets and OpenGL.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-05 17:32:45 +00:00
Rafael Kitover
32bc9c9dc7 release v2.1.9
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-03 21:15:24 +00:00
Rafael Kitover
84b0a3e366 Remove SDL sound driver
Because of reported framerate issues with the SDL sound driver, remove
it and make XAudio2 the default on Windows and OpenAL the default
everywhere else.

Rewrite the "sdl" value from users' configs to the new default.

Make OpenAL a mandatory dependency as well.

Fix #709

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-03 20:59:37 +00:00
Rafael Kitover
418b7b64dc translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-02-01 02:00:29 +00:00
Ruben
2ad7dd1a79 Fix wav audio recording
Always use `av_wrte_trailer()` even for audio recordings, because an
invalid wav file was generated otherwise.
2024-01-24 00:39:48 +00:00
Rafael Kitover
f915ec5972 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-01-19 02:00:47 +00:00
Rafael Kitover
37acfc8d50 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-01-17 02:00:31 +00:00
Rafael Kitover
9202bfd55e translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-01-16 02:00:33 +00:00
Zach Bacon
23ef8ef0f9 Dialog appearance improvements + link warning
In SoundConfig.xrc and DisplayConfig.xrc use the 'option' property
to fully expand the contents.

In NetLink.xrc add a label at the top of the dialog explaining that Link
will likely not work over the internet or over LAN.

Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-01-15 16:19:52 -08:00
Rafael Kitover
390482a719 build: use libsamplerate with vcpkg sdl2 port
Enable the samplerate feature for the vcpkg sdl2 port to use
libsamplerate for resampling.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2024-01-02 02:57:09 +00:00
Rafael Kitover
d1aa4eb23d build: detect vcpkg host triplet for build deps
On Windows, detect the host triplet for vcpkg and prepend it to the
triplet list to get the binary packages for vcpkg build dependencies
correctly.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-31 16:06:41 +00:00
Rafael Kitover
7dc95076e5 build: fix vcpkg binary package list parsing
Fix parsing of package list from the server html, which was ignoring
brotli because it was on the same line as another package. Use a
different method to extract the links that does not rely on them being
on separate lines.

Also fix the errors from `vcpkg list` on new vcpkg clones.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-31 15:41:05 +00:00
Rafael Kitover
92d9230e2c translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-30 02:00:36 +00:00
Rafael Kitover
6e2f1f1103 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-29 14:48:16 +00:00
Rafael Kitover
fa720aea07 translations: rebuild source .pot
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-29 14:47:50 +00:00
Stanley Kid
e70e57a5c0 translations: remove strings to not translate
Mark some strings that don't need to be translated as such to remove
them from the catalog.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-29 14:23:16 +00:00
Rafael Kitover
9e2a9b479a doc: update commit message guide in dev manual
Describe the requirements for commit messages in this project in detail
and add a standard set of area prefixes.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-25 15:20:21 +00:00
Zach Bacon
3ab048bebf translations: remove < 50% done translations
Remove all translations that are less than 50% done from Transifex and
the repo.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-25 14:28:48 +00:00
Rafael Kitover
a045270164 build: don't fseeko64()/ftello64() on musl libc
Check for musl libc in Patch.cpp and use fseeko()/ftello() in that case
instead of fseeko64()/ftello64() as well, as the 64 variants are glibc
extensions.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-23 10:23:25 +00:00
Rafael Kitover
3c5348983b build: add Alpine Linux support to installdeps
Add basic support for Alpine Linux to installdeps.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-23 09:46:47 +00:00
Zach Bacon
db355126d3 README.md: Minor spelling corrections
Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2023-12-22 13:38:09 -05:00
Zach Bacon
eea649ae16 README.md: Added a link to the flathub page to install vba-m as a flatpak
Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2023-12-22 13:35:18 -05:00
Zach Bacon
9e9fe812d2 visualboyadvance-m.metainfo.xml: add screenshots to the metainfo
Useful for app stores like KDE's discover and gnome software
Also updated to current specifications of appstream
Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2023-12-20 22:06:21 -05:00
Rafael Kitover
c0e71b0cb4 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-20 02:00:59 +00:00
Rafael Kitover
ddc6fd7080 release v2.1.8
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-13 15:06:53 +00:00
Rafael Kitover
8184522c6d build: don't use vcpkg on non-WIN32 w/o triplet
Fix the logic in the vcpkg automatic support to return on non-WIN32 if
VCPKG_TARGET_TRIPLET is not defined.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-13 14:50:54 +00:00
Rafael Kitover
e955501f61 build: update macOS dependencies
Update sdl2, sfml, wxwidgets and ffmpeg dependencies to the latest
versions in the macOS builder.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-13 13:49:54 +00:00
Rafael Kitover
ef09fca4d1 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-07 02:00:59 +00:00
Rafael Kitover
78b99d8b23 build: fix wrong syntax in vcpkg cmake
Fix if(EXISTS var) statements to be written as if(EXISTS ${var}) because
the EXISTS operator does not accept variable references.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-04 00:13:29 +00:00
Rafael Kitover
717ac7ed74 build: fix inst check for VS default vcpkg
Since the new default VS vcpkg does not implement list, use list from
the powershell module to check for packages that are already installed.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-03 16:50:44 +00:00
Rafael Kitover
59d67fe703 build: fix check for vcpkg ports in vcpkg clones
Fix checking for already installed vcpkg ports in user vcpkg clones,
broken in 491f104b (build: better binpkg support for default VS vcpkg,
2023-11-30).

Checking for installed ports in the VS default vcpkg is still broken,
because it does not implement the list command.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-01 10:38:20 +00:00
Rafael Kitover
de1f4dffba build: prefer user vcpkg root over VS system-wide
If the vcpkg clone exists in our preferred location, and VCPKG_ROOT has
not been passed to the build system, use it over the Visual Studio
default one, which is much more problematic.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-12-01 09:54:51 +00:00
Rafael Kitover
491f104b89 build: better binpkg support for default VS vcpkg
Check for cl.exe in the PATH to also automatically enable vcpkg support.

Ignore git errors for default VS vcpkg, as it is not in git.

Get host triplet packages (build depends currently) for static triplets,
e.g. get x64-windows packages also when getting x64-windows-static
packages. This helps with the default VS vcpkg too, as it cannot run
regular install commands for build deps.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-30 17:53:24 +00:00
Rafael Kitover
244ee8ebfa translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-30 02:00:59 +00:00
Rafael Kitover
3683938ec7 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-22 02:01:02 +00:00
Rafael Kitover
64d8cfffc2 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-17 02:01:00 +00:00
Rafael Kitover
18f3449c31 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-16 02:01:01 +00:00
Rafael Kitover
8db618625d translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-15 02:01:01 +00:00
Rafael Kitover
a262a2facf build: make inferred vcpkg triplet default static
Make the vcpkg triplet inferring code only run on WIN32 explicitly, and
make all inferred triplets -static, not only when BUILD_SHARED_LIBS is
FALSE.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-14 08:40:10 +00:00
Fabrice de Gans
beab088139 Store the PC register at the appropriate offset
In ARM mode, the GBA CPU stores the PC (r15) register with an offset of
4. This was not handled correctly by the core emulator.

Fixes #1200
2023-11-10 15:55:41 -08:00
Rafael Kitover
215e9b1ac2 build: fix vcpkg support for Linux
Fix the Linux-specific date command in the cmake code, and skip the ABI
check for vcpkg, because it is failing for some reason on Linux+vcpkg.

The resulting executable works perfectly.

This should also help on mac, I will test this later.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-10 09:50:50 +00:00
Rafael Kitover
0e68a2340c build: compare vcpkg bin pkg revisions explicitly
Compare port revisions explicitly instead of appending to version
string.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-10 06:48:33 +00:00
Rafael Kitover
0eb65a0eb3 build: fix finding vcpkg binary packages on server
Fix the regex against the file listing module on the server for the
vcpkg binary package list.

Also replace all the dashes in versions with periods for comparison
purposes.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-07 18:32:02 +00:00
Rafael Kitover
1af7aa2333 build: install vcpkg binary packages in dep order
Use the new code in the powershell module for vcpkg binary packages to
install the downloaded binary packages in dependency order with build
dependencies so that the database is not corrupted at any point in the
installation process or after.

Also remove the build binary package directory after installation, so
that all the previous packages are not reinstalled if a package is
updated on a subsequent run.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-07 15:36:40 +00:00
Rafael Kitover
e9162a0d28 build: handle revisions for vcpkg binary packages
Read the revision from the vcpkg binary package zip file names and from
`vcpkg list` and use them in version comparisons.

Also fix up the indentation a bit.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-11-02 18:01:18 +00:00
Rafael Kitover
99923dd126 ci: add Visual Studio workflow
Add a Visual Studio build workflow to the CI, test building using ninja
(msbuild support needs to be fixed) for both 64 and 32 bit.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-28 14:44:02 +00:00
Rafael Kitover
3a1b577d0a build: prototype binary packages for vcpkg
Now that there is a task on the Windows build VM to upgrade all vcpkg
ports and generate packages, update the cmake vcpkg code to install
them.

This is a working prototype implementation, all of this will require a
significant amount of further work.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-27 06:41:32 +00:00
Fabrice de Gans
bf2452aab9 Resize GameArea after MainFrame initialization
The GameArea was setting incorrect minimum size during initialization
due to the MainFrame not being entirely loaded, this caused the
MainFrame to not be resized properly on initialization. Resetting the
MainFrame minimum size after everything has been loaded fixes the issue.

This also changes MainFrame to ignore events sent before initialization
is complete, which should speed up startup a bit.

Fixes #1186
2023-10-24 12:49:34 -07:00
Fabrice de Gans
71ca0fb270 Properly hide the status bar at startup
Previously, the status bar was always shown at startup, even if the
status bar had been previously disabled. This fixes the issue by hiding
the status bar when it is first set up, if needed.
2023-10-24 17:51:02 +00:00
Rafael Kitover
e19e13fa0a build: use std:: proxy for nonstd:: on non-macOS
The nonstd:: implementation of nonstd::variant was causing a link error
in the Debug configuration on MSYS2 CLANG64.

Set the macros for choosing the implementation of both nonstd::optional
and nonstd::variant to the std:: forwarding behavior on all platforms
other than macOS.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-24 17:22:47 +00:00
Zach Bacon
1c76e3b0f4 snapcraft.yml: Rebuilt the snapcraft yaml to utilize core22
Also added the joystick plug, however it doesn't autoconnect.
to autoconnect manually you'll need to use snapctl

Permission will be asked by the snapcraft forums to allow it to autoconnect

Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2023-10-23 14:14:35 -04:00
Rafael Kitover
c36c3e0250 doc: simplify vscode instructions
Remove the suggested project config in favor of a suggested global
settings.json configuration change to use ninja and automatically run
cmake.

The other parts are all automatic now and don't need to be mentioned.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-23 15:16:34 +00:00
Rafael Kitover
6c38eaa2a5 build: rm gone ffmpeg deps in link flags for macOS
Followup on d8d3ee2b (build: remove unneeded ffmpeg/sfml deps for macOS,
2023-10-20). Also remove the link flags for these deps in the cmake
code, otherwise linking fails.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-20 23:25:14 +00:00
Rafael Kitover
7e1afcd37c Fix reading joystick hat config values
Use the wxString-returning form of wxRegex.GetMatch() because the bool
form always returns true if the initial match succeeded, causing every
hat direction in the config to be interpreted as north, the first
condition in the if statement.

Fix #1192

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-20 17:45:54 +00:00
Rafael Kitover
d8d3ee2b48 build: remove unneeded ffmpeg/sfml deps for macOS
Remove all extra dists for ffmpeg deps since we only use core ffmpeg,
adding those in the first place was a mistake.

Remove libogg and liborbis and stop building sfml-audio, since we only
use sfml-network.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-20 10:40:58 +00:00
Rafael Kitover
df83b4ba80 build: macOS builder updates
Bump openssl, curl, glib, sdl2, sfml, wxWidgets and ffmpeg.

Add support for DIST_INSTALL_TARGETS in order to use `make install_sw`
instead of `make install` for openssl because installing the man pages
and symlinks to them is very painfully slow with my install code. It's
even more painfully slow with whatever whoever did to my macOS virtual
machine.

Add `brew unlink openssl@3` in the brew setup code because someone broke
my compiler and it's not giving precedence to the include directories
passed on the command line, breaking the build.

Remove `-stdlib=libc++` from compiler flags. This was only necessary
when using a 10.7 macOS target, which has both libstdc++ and libc++,
libc++ being the newer and current distribution of the C++ standard
library for clang and macOS. We are now using a 10.10 macOS target which
does not have the old libstdc++, and this compiler option no longer
exists, causing a build failure in glib due to -Werror and an unused
command line option warning.

Remove my patch to link gettext statically for glib, this has been fixed
in the newer versions.

Install meson using pip in the python3 POST_BUILD instead of using a
dist.

Add the variables MAKE and MESON to point to the respective invoking
commands.

Check for /usr/bin/perl before /usr/local/bin/perl, the brew perl no
longer works but the macOS perl does.

Fix overwriting meson with a symlink when meson has already been
installed.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-18 23:40:22 +00:00
nuive
32581966ae Link: Fix menu not refreshing correctly
Start Network Link is not allowed while Local mode is selected, but
state change of Local mode was ignored until an option which triggers
EnableNetworkMenu() was selected.

Removed EnableNetworkMenu() from the Configuration option because it
doesn't change anything related to Link menu state.
2023-10-15 03:36:38 +00:00
Rafael Kitover
67af67278e ci: use nix instead of brew for macOS workflow
Since brew has been failing frequently lately, use the nix action
instead.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-04 20:26:15 +00:00
Rafael Kitover
e17d2cbaf5 build: fixes for nix on macOS
Add references to frameworks being linked to `buildInputs` in
`default.nix`.  Remove `-framework System` from `wxWidgets_LIBRARIES` in
the cmake code as it's not necessary and nix does it have it in
`darwin.apple_sdk.frameworks`.

TODO:

Debug build currently builds and runs. Release build builds but does not
run because of a problem with the dylib bundling.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-04 13:19:44 -07:00
Rafael Kitover
7e46939826 build: add pcre2 and openal to default.nix
Add openal, which was missing, and pcre2 which is required by glib,
which is an indirect dependency.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-10-04 16:26:46 +00:00
Rafael Kitover
0501f985a3 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-22 02:00:59 +00:00
Rafael Kitover
cee1789259 release v2.1.7
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-11 05:05:56 +00:00
Rafael Kitover
aca206a721 Launch on xwayland under Wayland if no EGL
On initialization, if wxWidgets was compiled without EGL support, check
in environment variables if running under Wayland and if so tell GDK to
prefer using an X11 backend, causing the program to launch under
xwayland.

Fix #1028

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-10 21:14:45 -07:00
Rafael Kitover
93a24bee3c Disable mirroring for ROMs > 32MB
In doMirroring() do nothing if the ROM size is greater than 32MB. This
fixes these ROMs automatically working without disabling mirroring in
settings.

Fix #1046

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-06 18:52:35 +00:00
Rafael Kitover
ea5cbba016 build: update default.nix for macOS and new wx
Update the default.nix, which is used on nixOS and other nix
installations for loading the build dependencies into a shell for
building.

Update the wxWidgets package to wxGTK32, the current version.

Add an if statement to check for macOS and load the right package set
for it.

Building with nix on macOS does not currently work, but the build
dependencies do work now.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-05 16:49:21 +00:00
Rafael Kitover
f6e3daf9d8 ci: use matrix, disable macos for now
Change CI actions to a matrix with cmake options, for both release and
debug builds, with ENABLE_LINK=OFF and ENABLE_SDL=ON configurations, for
all 3 runners.

Also add both g++ and clang++ to the matrix for the Ubuntu runner to
test on clang.

Disable the macOS workflow for now because brew is failing to install
dependencies.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-04 22:55:51 +00:00
Fabrice de Gans
0f4ec57557 [Build] Fix the NO_LINK build
The NO_LINK build had bitrot and was no longer building. This fixes the
issue by properly disabling Link-related code, including unreachable
functions when the project is built with ENABLE_LINK=FALSE
2023-09-04 13:46:29 -07:00
Rafael Kitover
7a7778c644 build: fix installdeps for new Debian wx packages
Update installdeps for Debian to find the new version wx packages, but
still use the -gtk3 variants on very old versions of Debian.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-09-04 20:41:17 +00:00
Fabrice de Gans
803ab35269 [GB] Save MBC7 EEPROM data to gbRam
Previously, MBC7 EEPROM was saved at address 0xa000 in memory, rather
than inside the `gbRam` data buffer. This was inconsistent with other
mappers, resulting in issues like the EEPROM data being cleared on
`gbReset`.

Fixes #1173
2023-08-27 17:08:09 -07:00
Fabrice de Gans
24b6ac5a28 [GBA] Implement missing Thumb instruction
The CMP Thumb instruction was missing one variant. This is used in the
Chinese fan translation of Mega Man Battle Network 2.

Fixes #889
2023-08-27 16:52:36 -07:00
Rafael Kitover
0e5d63cd9a build: update to Mac third_party_libs_tool 1.3
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-08-27 17:19:08 +00:00
Rafael Kitover
cd8d65bddd build: set cmake C++ version to 17, fix Mac build
Fix Mac build regression caused by 2407923f (build: fix cmake version
warnings, 2023-08-26) due to vbamcore and vbam targets using C++11 but
no longer being compatible with it.

When cmake_minimum_required() was set to a much older version, the
CXX_STANDARD property for vbamcore and vbam were ignored.

With the change mentioned above setting a higher
cmake_minimum_required(), the -std=gnu++11 flag started being passed when
compiling these two targets, making them fail due to recent changes no
longer being C++11 compatible.

Set cmake_minimum_required() to 3.8.2, the first version of cmake
supporting C++17, remove the CXX_STANDARD and CXX_STANDARD_REQUIRED
properties from these two targets, and set CMAKE_CXX_STANDARD to 17 to
set this property to C++17 for all targets in the project.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-08-27 08:04:57 +00:00
Rafael Kitover
2407923fc0 build: fix cmake version warnings
To fix some cmake dev warnings in recent cmake versions, move
cmake_minimum_required() to before project() and set the minimum
required cmake version to 3.5.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-08-26 02:32:50 +00:00
Rafael Kitover
37f4affe55 Merge remote-tracking branch 'libretro/master' 2023-08-26 02:26:44 +00:00
saulfabreg Wii VC Project
76cb71464d Fix GameCube builds for VBA-M Libretro too
The GameCube, like the Wii and Wii U, is also big-endian, so let's fix VBA-M for GCN too.
2023-08-19 15:26:08 +00:00
saulfabreg Wii VC Project
0cd79a96f5 Add VBA-M to Wii/Wii U nightly buildbot. 2023-08-19 15:26:08 +00:00
saulfabreg Wii VC Project
3745eea419 Fix Wii & Wii U builds of VBA-M for Libretro (Ploggy)
Since Wii and Wii U are both big-endian systems, we need to call in the Makefile for Libretro cores that these must use big endian code for be able to work, otherwise the emulation will just give a white screen.
Fix by Ploggy, many thanks to him.
2023-08-19 15:26:08 +00:00
LibretroAdmin
a2378f05f6 Merge pull request #116 from saulfabregwiivc/wii-wiiu-fix
Fix VBA-M Libretro builds on Wii/Wii U. (Ploggy)
2023-08-18 12:39:10 -07:00
saulfabreg Wii VC Project
f7d4370789 Add VBA-M to Wii/Wii U nightly buildbot. 2023-08-18 14:17:16 -05:00
saulfabreg Wii VC Project
46de99a0da Fix Wii & Wii U builds (Ploggy)
Since Wii and Wii U are both big-endian systems, we need to call in the Makefile for Libretro cores that these must use big endian code for be able to work, otherwise the emulation will just give a white screen.
Fix by Ploggy, many thanks to him.
2023-08-18 14:12:25 -05:00
Rafael Kitover
5583175559 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-08-15 02:00:58 +00:00
Fabrice de Gans
14a4b6f820 [dialogs] Move JoypadConfig to its own class. 2023-08-13 16:07:31 -07:00
Rafael Kitover
5f421b53c0 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-08-08 02:00:57 +00:00
Rafael Kitover
32d273ad78 build: notarize mac release binary
Notarize the mac release binary from cmake as described here:

https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow?language=objc

. This involves adding `--options runtime` when codesigning to enable
the hardened build.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-22 20:51:48 +00:00
Rafael Kitover
774fbab7cc build: write version to macOS plist
Separate writing the version into the Info.plist on macOS into a
separate action from the online updates Sparkle framework into a
separate POST_BUILD action because we are not using Sparkle for macOS
builds right now due to codesigning issues.

Also sort tags by reverse tag name in the cmake git version extractor
because a tag was rewritten.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-12 06:24:20 +00:00
Rafael Kitover
00645906a5 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-11 02:01:00 +00:00
Rafael Kitover
bde372bc72 build: fix codesigning arm64 release binaries
CMAKE_CROSSCOMPILING is true when building arm64 on an x64 host, so
ignore this on MSVC.

Eventually we want to run osslsigncode through wine when cross compiling
for win32 on other platforms, or use the native signtool.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-10 01:37:55 +00:00
Rafael Kitover
d0194d9a75 release v2.1.6
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-09 15:44:48 +00:00
Squall-Leonhart
7561ca97c1 Fix Discord streaming for OpenGL
Check if the OpenGL context is valid on every operation, and if not
re-initialize it. Also rebind the textures every time the frame is
drawn.

Also rename the SetCurrent method to SetContext, which is clearer.

Fix #643
Fix #767
Fix #840
Fix #843

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-06 20:40:54 +00:00
Rafael Kitover
24b92462f9 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-07-03 02:02:24 +00:00
Rafael Kitover
ffec5aba5e translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-06-30 02:01:01 +00:00
Rafael Kitover
882957a2d3 Override SetCurrent() in GLDrawingPanel
Make a bool SetCurrent() wrapper over checking the wxGL_IMPLICIT_CONTEXT
define and executing the appropriate behavior to set the OpenGL context.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-06-28 21:12:01 +00:00
Rafael Kitover
5b65066bf8 build: on mac install trans into debug builds too
Change the cmake code to install the translations gettext .mo files into
the .app bundle for non-release builds too.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-06-27 22:14:37 +00:00
Rafael Kitover
790618102d builder: bump SDL2 2.24.0 -> 2.28.0
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-06-23 00:56:37 +00:00
Rafael Kitover
9331dbf9c8 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-06-04 02:01:00 +00:00
Fabrice de Gans
6f68bfcf71 Create the config directory at first launch
First launch would fail because wx does not create the configuration
directory by itself if it does not exist.
This also fixes an incorrect menu option.
2023-06-01 18:28:14 +00:00
Rafael Kitover
7b8c4242fb builder: macOS build updates
Update glib/gvdb to fix a compile error with newer clang compilers.

Add link flags for ffmpeg to link the static libraries and frameworks it
needs.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-05-31 13:38:44 +00:00
Rafael Kitover
df84f2b005 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-05-31 02:01:00 +00:00
Rafael Kitover
d08c9137c1 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-05-29 02:01:01 +00:00
Rafael Kitover
7aafce0665 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-05-28 02:01:01 +00:00
Fabrice de Gans
e26f807355 [bios] Fix lz77 and add BIOS_SndDriverVsyncOn
The lz77 uncompresssion software BIOS implementation was exiting early
when uncompressing data, if the overall length was larger than
advertised in the function parameter. However, real GBA BIOS does read
further than the advertised length, so we do here too. This fixes
Advance Wars title screen.

This also adds a SoundDriverVSyncOn implementation, silencing an error
for some Shrek games, though they still cannot properly boot with an
emulated BIOS.

Fixes #789
2023-05-27 22:51:39 +00:00
Rafael Kitover
4c8b54de89 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-05-26 03:28:10 +00:00
Fabrice de Gans
bad388e0aa Move the GB ROM Info dialog to its own class
* Move the Game Maker information to a separate helper method.
* Make the dialog strings more localizable.
2023-05-23 15:19:39 -07:00
Fabrice de Gans
d1f6500098 Refactor accelerator / global shortcuts handling
* Removes wxAcceleratorEntryUnicode and assorted arrays in favor of a
  new class, `config::Shortcuts`, which handles UserInput assignment to
  commands and resolution at runtime. `config::Shortcuts` also handles the
  INI user configuration in a backwards-compatible way. Runtime
  resolution of UserInput to command is also now logarithmic rather than
  linear.
* The same shortcut can no longer be assigned to 2 different commands,
  which fixes #158.
* Moves the `AccelConfig` dialog to its own dedicated class.
2023-05-23 11:56:32 -07:00
Fabrice de Gans
fda429fc64 [GBA] Do not draw BG tiles from outside of BG VRAM
This was fixed by endrift in mGBA in commit
4ce9b83362
2023-05-09 17:12:30 -07:00
Fabrice de Gans
b139572424 Convert wxJoyKeyCtrl to UserInputControl
This replaces all uses of wxJoyKeyCtrl with a new custom widget,
UserInputControl. Internally, this class keeps track of UserInputs
associated with the current control, allowing direct access to the
UserInputs, rather than going through string conversions.

Acceleration handling is simplified by going through UserInput -
converted to the key, mod, joy triplet for now - rather than handling
string comparisons.
2023-05-08 01:42:39 +00:00
Rafael Kitover
b9694e1900 build: fixes for mac Homebrew
Add some fixes for building on macOS Homebrew.

- Set ZLIB_ROOT because zlib is now keg-only. Unfortunately the cmake
  warning about policy CMP0074 cannot be suppressed because of some kind
  of cmake bug.

- Update FindFFmpeg.cmake from:
  https://github.com/snikulov/cmake-modules/blob/master/FindFFmpeg.cmake
  , this fixes a problem with FFmpeg not being found.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-05-07 23:41:51 +00:00
Fabrice de Gans
5aa3ea92b9 Properly initialize wxAcceleratorTable
The `wxAcceleratorTable` for the `GameArea` panel was initialized with an
array of `wxAcceleratorEntryUnicode`, while the API calls for an array
of `wxAcceleratorEntry`. This resulted in the array not being properly
interpreted by the `wxAcceleratorEntry`. This fixes the issue by using
`wxAcceleratorEntry` to instantiate the array.
2023-04-24 18:04:43 -07:00
Fabrice de Gans
7b5d4a82d7 Remove unused code and use explicit type coercions 2023-04-24 18:04:32 -07:00
Fabrice de Gans
1f57d5f797 Remove global variables for ROM data
These can be accessed via the global gbCartData object. In addition,
this cleans up gbMemory to remove dead code that was used as a
workaround for ROM hacks.
2023-04-24 13:52:12 -07:00
Fabrice de Gans
0e29be8735 Support multiple RAM sizes for MBC7
We rely on the rom size in the cartridge header as a proxy for the RAM
size. Only 3 cartridges exist that use MBC7, Korokoro Kirby / Kirby
Tilt'n'Rumble and Command Master. Both versions of Kirby use a 256 bytes
EEPROM while Command Master uses a 512 bytes EEPROM. There does not seem
to be any other way to reliably get the EEPROM size for MBC7 cartridges.
2023-04-17 17:07:18 -07:00
Fabrice de Gans
75b79d91f1 Change MBC7 reported RAM size to 512 bytes
Some MBC7 cartridges use 512 bytes EEPROM rather than 256 bytes. For
compatibility with older versions, we keep saving and loading 256 bytes
of EEPROM for every MBC7 cartridge. TODOs have been left to figure out
how to identify the EEPROM capacity properly.
2023-04-17 17:07:18 -07:00
Fabrice de Gans
52c05c7147 Simplify battery save / load
* Removes all of the per-mapper helper functions in favor of an
  iovec-like structure that is set on ROM load and ROM patch.
* Changes the MBC7 RAM size to 256 bytes, which is what the cart
  actually uses.
* Works around issues with homebrews by overriding some of the header
  data. For instance, battery is disabled if a cart specifies a battery
  but no RAM and no RTC.

Test: This was tested with every known RTC/RAM/Battery variations by
creating a battery file before these changes and checking that the
battery file is still loaded properly with these changes applied. The
reverse was also tested to ensure compatibility.
2023-04-17 17:07:18 -07:00
Fabrice de Gans
d8d6991c4b Refactor the save/load state and battery code
* Simplifies most of the GB save/load state code and changes many
  of the global variable uses to go through gbCartData instead.
* Changes all battery reads to use gzFiles. This seems to have been an
  oversight in an earlier refactor of the code.
* Removes some unused variables and stops exporting internal-only
  functions in GB.cpp/gb.h.

Breaking change: Cartridges with no mapper, but a save battery should
now properly save and load changes. However, this type of cartridge has
not been used in any commercially released software for Game Boy so the
exact intended behavior is speculative.
2023-04-17 17:07:18 -07:00
Rafael Kitover
36e88fafb6 Fix dsound looping when moving/resizing window
Add MOVE_START/MOVE_END events to detect when the window is moved or
resized and pause sound on Windows to prevent the DirectSound driver
from looping.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-04-13 13:47:17 +00:00
Rafael Kitover
93fbb5618d build: add arm64 VS build configs
Add arm64 configurations to CMakeSettings.json for Visual Studio.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-04-12 03:01:25 +00:00
Rafael Kitover
6a1be5d4ad build: update VS build configs
Update the Visual Studio build configurations in CMakeSettings.json to
remove dynamic builds and add RelWithDebInfo.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-04-12 02:52:02 +00:00
Rafael Kitover
23aa083cd4 build: support RelWithDebInfo for vcpkg
Make some tweaks to the cmake files to support
CMAKE_BUILD_TYPE=RelWithDebInfo, release with debug information for MSVC
vcpkg builds.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-04-12 02:43:13 +00:00
Rafael Kitover
40711fa5c9 build: lowercase vcpkg package names
vcpkg now requires that package names be lowercase, change all package
names to lowercase.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-04-11 23:17:06 +00:00
Fabrice de Gans
86bef62faf Move more options to g_owned_opts
* Moves most remaining options toggled by menu items to g_owned_opts and
  modifies associated usage.
* Adds more obervers to handle option changes.
2023-04-07 15:36:45 -07:00
Fabrice de Gans
928a61704f Move directory options to g_owned_opts
* Moves most directory settings to g_owned_opts.
* Converts the DirectoriesConfig dialog to the new structure.
* Various includes clean-ups.

Breaking change: Loading a GB/GBC/GBA ROM when the ROM directory setting
is unset for that platform will now populate the per-platform ROM
directory setting.
2023-04-06 00:49:55 -07:00
Fabrice de Gans
019fcda9c1 Sanitize and improve the GB header parsing (#1109)
Further testing showed some limitations with the current GB header
parsing. Many homebrew and some licensed cartridges do not follow the
expected format. In particular, the manufacturer code used in the "new
format" is not always used properly.

Some mapper flags seem to not actually exist in practice. These have
been documented as comments.

The header parsing code was creating string objects with '\0' bytes,
this is now properly sanitized.

The destination code flag was not being set properly. This has been
fixed.
2023-04-06 00:49:08 -07:00
Fabrice de Gans
7005b92840 Sanitize allocations in the Game Boy emulator (#1105)
This adds checks for every allocation failure in the core Game Boy
emulator. In addition, this replaces some magic values defined
constant expressions and removes an unused function.
This also removes asserts for failed allocations in GB.cpp, they now
report a failure to the caller.
2023-04-03 12:47:55 -07:00
Fabrice de Gans
e91e4dcf17 Add nanosvg library dependency for vcpkg static builds
nanosvg is now a required dependency with recent wxWidgets builds.
2023-04-01 17:15:22 -07:00
Rafael Kitover
88b07df394 build: add pkgconf to vcpkg deps
Add pkgconf to list of vcpkg deps. We are not using it right now for
vcpkg builds, but it may be good to have available.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-31 00:08:15 +00:00
Rafael Kitover
3cef52b72d Fix pause/next-frame
Pause only sound on menu open on Windows, and resume on menu close if
emulator is not paused.

This is to avoid DirectSound looping on menu open.

Fix #788
Fix #1077

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-30 00:22:54 +00:00
multiSnow Liu
d3f8cc1714 Option to suspend the X11 screensaver when running
On Linux, when not running under Wayland and the app was built with XSS
(X ScreenSaver) support, optionally suspend the X11 screensaver when a
ROM is loaded and not paused.

Add a "Suspend ScreenSaver" checkbox in UI Settings bound to an option
to enable this feature, visible only under X11.

Defaults to off, as there is already a call to suspend the screensaver
on joystick input, which may be sufficient for the user.

TODO: Add necessary support for other platforms.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-28 16:28:36 +00:00
Rafael Kitover
df81959825 builder: update macOS build to 10.10, Wx 3.2.2.1
Bump the macOS target OS from 10.7 Lion to 10.10 Yosemite to use the
newest Wx, 3.2.2.1.

This also fixes dark mode support on macOS 13 Ventura.

Remove --enable-static from base CONFIGURE_ARGS because it breaks Wx,
and add it to DIST_ARGS where it's needed, libffi, libicu and libx264.

Make the necessary adjustments to build the new Wx and a couple of other
minor fixes.

Fix #1102

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-27 14:59:10 +00:00
Fabrice de Gans
0132c76100 Move GB/GBC header parsing to gbCartData
This adds a new class, gbCartData to do all of the GB/GBC header parsing
in a single location.

Breaking change: ROMs advertising a 2 KiB RAM size now properly only
have 2 KiB allocated for RAM, whereas it used to be 8 KiB. This was
tested with the one aftermarket ROM making use of this RAM size
(Quartet), with no issue. Save files and save state files should still
be compatible since the RAM was saved with the correct 2 KiB size.
2023-03-27 10:55:00 +00:00
Rafael Kitover
e505236ec4 Merge remote-tracking branch 'libretro/master'
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-25 12:23:58 +00:00
Rafael Kitover
785af394f6 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-24 02:01:03 +00:00
Rafael Kitover
f15b09f8e5 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-20 22:43:31 +00:00
Fabrice de Gans
1ab46f704f Update SIOCNT when the link driver is disconnected
Some software (like the EU version of Digimon Racing) relies on the
SIOCNT register being properly updated when no cable is connected.
Otherwise, they risk getting stuck in a loop waiting for an update on
the SIOCNT register.
2023-03-19 22:22:43 +00:00
Fabrice de Gans
9889ef4fa8 Move GameBoyConfig dialog to its own class
This changes all of the options handled by the GameBoyConfig dialog to
use the new Option type. This also fixes a number of small issues
related to palette handling and GB emulation:
* Modifying the custom GB palette no longer incorrectly applies to GBC
  and SGB modes.
* Loading a GB save state (not GBC or SGB) properly applies the
  user-defined palettte and not the one in the save state.
* The GBC core now accepts .gbc BIOS files.

Finally, this modifies and renames wxFarRadio to widgets::GroupCheckBox.
In addition GroupCheckBoxes can now be loaded and fully configured from
the XRC file rather than having to be manually configured on dialog
initialization.
2023-03-15 00:45:22 +00:00
Rafael Kitover
1d7e8ae4ed build: fix build with new OpenAL
Remove the AL_NO_PROTOTYPES #define, it breaks the build with new
versions of OpenAL.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-03-12 15:06:42 +00:00
Fabrice de Gans
892527e53b Move ConfigManager to SDL
This removes ConfigManager from common source and header files and moves
it to be only used by the SDL frontend.
2023-03-07 14:11:52 -08:00
Fabrice de Gans
bd7eac6c4b Add options shared with sdl to wx g_owned_opts
This removed the dependency on ConfigManager from the wx frontend.
Next: Move ConfigManager to be only used by the SDL frontend.
2023-03-07 13:38:46 -08:00
Zach Bacon
efffe7c333 Add the repology badge to the readme.
Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2023-02-27 21:07:25 -05:00
Squall Leonhart
a529ddfe49 remove non-working override. 2023-02-27 20:31:02 +00:00
Squall Leonhart
9a8a077443 Lets fix Stuart Little 2 properly (maybe?)
This game cart may have a flashcontroller but no flashram onboard, the game automatically goes down the Flash Type path and hits a stackoverflow at cpuSaveGameFunc after cpuSramEnabled returns as false

I'm not sure of the specifics, but with this change it seems to avoid this condition.

I have tested a number of titles that create Sram, 512 and 1024Mbit flash and they all still seem to just fine.
2023-02-27 20:31:02 +00:00
Squall Leonhart
a9284b3d66 workaround for Stuart Little 2 crashing when set to none
despite not having backup ram.
2023-02-27 17:17:28 +00:00
Squall Leonhart
166299cda6 Implements Read/Writes for HUC3
Also seperates HUC1 from MBC1
2023-02-27 02:18:27 +00:00
Rafael Kitover
1a63a27c62 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-27 02:01:01 +00:00
libretroadmin
640ce45325 Change SOUND_CLOCK_TICKS to 280896 cycles - ~1074 samples per frame 2023-02-27 00:14:05 +01:00
Rafael Kitover
83d24828df build: fix default debug build for vscode
Check if CMAKE_BUILD_TYPE is false and not just empty string, as it is
some kind of other empty value in the default vscode build and the check
fails.

If CMAKE_BUILD_TYPE is unset, default to Debug, which is what vscode and
most things expect as the default CMAKE_BUILD_TYPE.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-21 20:53:20 +00:00
Fabrice de Gans
f1d3f631d2 Fix automatic dynamic frame skipping
The previously used algorithm was too aggressive. This fixes the issue
by using the last second data and using a more gentle adjustment curve
to prevent huge changes in frame skipping.
2023-02-15 13:52:16 +00:00
Fabrice de Gans
d1733c4505 [ConfigManager] Move wx options to g_owned_opts
This is a preliminary change towards removing ConfigManager from the wx
build. Usage of these options has also been modified in the wx frontend.
2023-02-14 18:06:41 -08:00
Fabrice de Gans
d37a3a32e1 Move remaining options used by core to CoreOptions 2023-02-14 16:33:03 -08:00
Rafael Kitover
3f507b6c6a translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-14 02:01:02 +00:00
Rafael Kitover
e560efb08f translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-12 02:00:57 +00:00
Rafael Kitover
ca841e9bae translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-11 02:00:59 +00:00
Rafael Kitover
4b605b4b1a translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-10 05:53:02 +00:00
Stanley Kid
d756f6716f translations: fix some source strings
Fix some more strings marked for translation in the source code to be
more correct and easier to localize.

References #1071 #1029

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-10 05:50:20 +00:00
Rafael Kitover
49140fe5dd translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-10 02:01:01 +00:00
Rafael Kitover
5d4f1bd0d9 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-09 16:18:49 +00:00
Fabrice de Gans
91873254d3 Add INI file versioning
This introduces a new INI config option called "IniVersion". Whenever
default values change or options are renmaed, the latest version number is
incremented and an update path is run.
This change also rewrites part of the initialization routine by adding
more safety checks before creating or reading the configuration file.
2023-02-08 01:31:40 +00:00
Rafael Kitover
ae09ae7d59 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-07 02:01:00 +00:00
Fabrice de Gans
950a4070c1 Move display options to owned_opts
This also removes limits on the main window position so it can now be
negative. This is necessary on Windows where multiple screens to the
left and top of the main screen have negative coordinates. A check at
startup ensures we always restore the window within the drawable area.
2023-02-06 04:49:36 +00:00
Fabrice de Gans
216bf4d7e4 Restore "Fullscreen at startup" handler
This was mistakenly removed.
2023-02-05 20:29:14 -08:00
Rafael Kitover
f0fd9208b7 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-06 03:27:56 +00:00
Fabrice de Gans
31e17c1ba4 Add less verbose proxy object accessor
This introduces an OPTION macro, as well as assignment operators and
convenience conversion operators to make it easier to treat the
OptionProxy object (renamed from Proxy) as a variable.
2023-02-06 03:25:37 +00:00
Fabrice de Gans
2b950e282f [Option] Add Proxy template class for Option
This removes the global accessors for individual options in favor of a
proxy template class with a simpler per-type API. This adds compile-time
checks to validate that the right option is used with the right type
when accessing it directly.
2023-02-06 03:25:37 +00:00
Rafael Kitover
f84a164072 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-06 02:00:59 +00:00
Fabrice de Gans
60568d26e0 Move core options to a struct
Options used by the core emulator were set with global variables. This
moves all of the options used by the core emulator into a new struct,
shared by all 3 frontends.
2023-02-06 01:22:19 +00:00
Stanley Kid
64921c6535 translations: fix some source strings
Fix some source strings in the source code that are marked for
translation to be more formally/grammatically correct and easier to
localize.

References #1029

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-05 19:55:06 +00:00
Rafael Kitover
257150f46b translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-05 17:29:58 +00:00
Rafael Kitover
61046c76bf translations: rebuild source .pot
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-05 17:29:14 +00:00
Fabrice de Gans
fad2e7a310 Fix issues with the DisplayConfig dialog (#1066)
The DisplayConfig dialog had a few issues:
* The OK/Cancel buttons were not working as expected. The configuration
  options would be immediately written whenever some control values were
  changed. The configuration options are now properly being set on a
  click to OK, and ignored on a click to Cancel.
* The X button works again.
* There is now proper validation for the Display Scale option,
  validation ensures that the value is in the right range and incorrect
  data can no longer be input in that field.
* The Direct3D option is now properly enabled on Direct3D builds.
2023-02-04 21:59:04 -08:00
Fabrice de Gans
2cec46f825 Clean-up ConfigManager options (#1067)
* Clean-up ConfigManager options

Many of the options in ConfigManager were not actually used.
* Some options are only used by wx, they have been moved to gopts. In
  addition, the type of the option has been changed to "bool" when
  applicable.
* Some options are only used by SDL and do not have a corresponding
  configuration option, they have been moved to the SDL implementation.
* Some options are not used at all, they have been removed.
2023-02-04 21:39:13 -08:00
Rafael Kitover
dc6659857c translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-05 02:01:03 +00:00
Rafael Kitover
1c2a62f055 Include cstdint for wx
Close #1065

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-04 06:51:34 +00:00
Rafael Kitover
7d9cb2b5f0 Default GBA LCD filter to off.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-04 01:46:38 +00:00
Rafael Kitover
5385b477da translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-02 02:01:02 +00:00
Rafael Kitover
aabb70cb85 Followup on be1e5ca1, wrong ref var declaration
Fix rvalue variable declarations in be1e5ca1, the && associates with the
variable, not the type.

This has no effect on functionality.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-01 13:27:22 +00:00
Rafael Kitover
266512fbbc translations: move ru trans to ru_RU, delete ru
Move ru.po to ru_RU.po because it is the more complete translation, and
the latter is checked first.

Fix #1057

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-01 05:06:35 +00:00
Rafael Kitover
be1e5ca18c Check for wx < 3.2.2 for EGL move fix backport
When executing the EGL subsurface move backport fix, check for loaded
library version < 3.2.2 so as not to execute an unnecessary EGL
subsurface move operation on versions which will already have the fix.

References #1028

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-02-01 04:58:56 +00:00
Lars Wendler
1fb18b320f Rename appdata to metainfo
See https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html
chapter 2.1.2 "Filesystem locations"

Signed-off-by: Lars Wendler <polynomial-c@gmx.de>
2023-01-20 06:14:56 -08:00
Rafael Kitover
561d6e1ab0 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-17 02:01:00 +00:00
Rafael Kitover
78724bc893 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-16 02:01:00 +00:00
Fabrice de Gans
addd53b69d Remove all warnings in gba/bios.cpp
A regression from #1008 was identified as the root cause for #1050 and
fixed in #1051. This is a follow-up that changes the constants used
for `sineTable` to be unsigned hex, which fixes warnings in MSVC
without breaking changes.

Bug: #1003
2023-01-14 16:32:58 -08:00
Rafael Kitover
2e3ce863c7 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-14 02:01:01 +00:00
Rafael Kitover
4c4ce3cf37 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-13 02:01:00 +00:00
Squall Leonhart
ca7ae3363e Fix regression in bios, port DMA fix from libretro 2023-01-10 06:29:40 +00:00
Rafael Kitover
25bcf2e42d translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-10 02:00:59 +00:00
Squall Leonhart
b34448c9eb Fix record/play dialogs for native recordings
Resolves assertions when opening the file selection dialog windows for
recordings.
2023-01-08 14:17:07 +00:00
Rafael Kitover
3989146fa5 build: enable severe warnings for MSVC release
Enable severe warnings for MSVC release builds with /W1.

Disable macro redefinition warnings explicitly with /wd4005.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-06 16:58:52 +00:00
Rafael Kitover
0a96d84581 build: make release build quieter
Silence output of nuget commands used to get gettext tools for the
Windows build.

Remove Objective-C++ source files (.mm extension) from the list of all
sources passed to xgettext to silence the warning about the file type
being unrecognized. These do not have any strings that need to be
translated.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2023-01-06 16:24:12 +00:00
Rafael Kitover
6a4115ca45 ci: fix macOS runner
It seems the GitHub Actions macOS image has a conflicting python in
/usr/local, invoke:

brew -v install python
brew link --overwrite python

, before installing dependencies.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-29 20:29:53 -08:00
Rafael Kitover
6307348cbc build: support MSVC arm64 cross build on x86
Adjust cmake code to support building a Windows arm64 binary on a
Windows x86/x64 host.

Add /EHsc to MSVC compiler flags for exception unwind support.

Check VCPKG_TARGET_TRIPLET in Architecture.cmake to set the appropriate
cmake variables for cross-compiling for arm64.

Add MSVC_x86_Host_Compile.cmake script, used from HostCompile.cmake, to
adjust the path of the cl.exe compiler and ENV{LIB} to build a C program
for x86 when cross-compiling, necessary for the bin2c utility.

Use wxrc from dependencies submodule when cross-compiling, because the
cross wxrc executable cannot be run on the host.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-29 20:29:53 -08:00
Rafael Kitover
77f1235a95 build: update Windows dependencies submodule
Update contains wxrc.exe for cross builds.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-29 20:29:53 -08:00
Rafael Kitover
9963b81506 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-30 02:04:11 +00:00
Rafael Kitover
7a45c16539 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-29 02:04:08 +00:00
Rafael Kitover
87bdc93e15 Revert "translations: use %% instead of percent"
This reverts commit 1ac7ac999b.

The %% sequence turned out to not be dealt with specially by gettext
tools.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-28 18:51:37 +00:00
Rafael Kitover
ab4ae96e05 Clarify/set condition: wayland && !wayland_egl
Check for the condition where the windowing system has wayland support
but not wayland EGL support for wxGLCanvas in wx, in which case the
Simple renderer must be forced.

This is currently how the wx packages are built on Fedora.

Refer #1028

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-28 18:27:04 +00:00
Rafael Kitover
8e4acfc91d Fix build w/wxUSE_GLCANVAS_EGL=0, on Fedora
Disable the EGL subsurface move backport for Wayland GLCanvas if the wx
config sets wxUSE_GLCANVAS_EGL=0 (off.)

This fixes the build failure on Fedora. To fix the functionality,
however, they need to enable the EGL GLCanvas in their wx builds.

Also use a different hack to access the private wxGLCanvasEGL member
using template instantiation instead of redefining a keyword as a macro.

Refer #1028

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-28 17:24:08 +00:00
Fabrice de Gans
3c41b68d51 Fix the Windows ARM64 build
* Remove arch constraints in a CMake block.
* Convert some tab identation to spaces.
2022-12-27 21:59:33 +00:00
Rafael Kitover
e10bf7bc4b installdeps: check for newest wx on Fedora
For Fedora ./installdeps support, install either wxGTK-devel or
wxGTK3-devel, depending on which has a higher version.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-24 06:41:00 +00:00
Rafael Kitover
8329ba9646 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-22 02:02:15 +00:00
Rafael Kitover
7aa1f59128 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-21 02:01:00 +00:00
Rafael Kitover
a16dd2c9f7 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-20 02:01:00 +00:00
Rafael Kitover
26818177e8 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-19 02:01:02 +00:00
Rafael Kitover
22578d02eb Increase MAX_CART_SIZE from 32MiB to 128MiB
Some ROM hacks are larger than 32MiB.

Fix #1046

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-16 16:35:15 +00:00
Rafael Kitover
f8c1d31294 release v2.1.5
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-15 11:58:01 +00:00
Rafael Kitover
fd2df853b6 build: turn off Sparkle on macOS
Disable the Sparkle online updater for the mac build because it requires
10.13 and we currently only build for 10.7.

Once I add a newer macOS build, I will reenable it for that build.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-15 10:03:02 +00:00
Rafael Kitover
cf600890bf translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-08 02:00:59 +00:00
Rafael Kitover
0ca1771a49 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-05 02:01:02 +00:00
Rafael Kitover
1ac7ac999b translations: use %% instead of percent
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-04 15:55:42 +00:00
Rafael Kitover
77e9ea6a2f translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-04 02:01:01 +00:00
Rafael Kitover
ccb9af2c64 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-02 22:50:51 +00:00
Rafael Kitover
dcc5ae07d0 translations: update .tx/config to new format
Re-run `tx init` and `tx add` to rewrite the .tx/config file to the new
required format.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-02 22:48:44 +00:00
Rafael Kitover
ea10306daa translations: minor additions/adjustments
Add a few translation markers for strings that are translated in the
wxWidgets catalogs, which we do not pull yet.

Also change the string "% of normal:" to "percent of normal:" because
the percent sign was causing an error in poedit.

Fix #1029.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-12-02 22:21:13 +00:00
Rafael Kitover
a42e166e94 build: fix syntax and rm dbg prints from 2a65e92d
Remove two debug messages and add a missing paren to the cmake source.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-28 18:34:48 +00:00
Rafael Kitover
2a65e92da2 build: remove StrawberryPerl from ENV{PATH}
On Windows, StrawberryPerl tools and libraries exposed in the PATH
environment variable can pollute and break the build, remove any such
entries for WIN32 as a startup cmake action.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-28 10:27:06 -08:00
Rafael Kitover
6d8ca723d0 build: restrict MSVC static libs to .lib only
The MSVC linker can now apparently link MinGW .a static libs too, and
StrawberryPerl pollutes the build with its own.

Set CMAKE_FIND_LIBRARY_SUFFIXES to .lib only when MSVC is true for
static builds.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-28 10:23:33 -08:00
Rafael Kitover
5807376fba build: fix finding SDL2 on vcpkg (again)
Sometimes vcpkg calls the SDL2 library SDL2-static for static toolchains
and sometimes it doesn't, change FindSDL2.cmake to search some possible
library names in order of priority.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-27 19:34:29 +00:00
Rafael Kitover
1a687e564b translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-24 02:02:13 +00:00
Rafael Kitover
8f1b5dae90 Merge remote-tracking branch 'libretro/master'
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-18 00:24:23 +00:00
Fabrice de Gans
0483524870 [build] Add VS Code integration
* Infer the VCPKG triplet for MSVC-like environments.
* Add recommended VS Code settings.
* Add instructions for using clangd.
2022-11-12 13:26:23 +00:00
Rafael Kitover
61b503ada4 builder: update core dists and macOS build
cmake:

Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.

Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.

Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.

Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.

Builder dist changes:

Updates:

dist                    old v                   new v
==============================================================
xz                      5.2.4                   5.2.6
openssl                 1.1.1f                  1.1.1g
curl                    7.65.3                  7.85.0
ccache                  3.4.3                   4.6.3
cmake                   3.19.4                  3.24.1
autoconf                2.69                    2.71
autoconf-archive        2017.09.28              2022.09.03
libtool                 2.4.6                   2.4.7
help2man                1.47.5                  1.49.2
libiconv                1.16                    1.17
gsed                    4.4                     4.8
bison                   3.0.5                   3.8.2
texinfo                 6.5                     6.8
flex                    e7d45afc                ea6493d9
libicu                  65_1                    71_1
nasm                    2.14.02                 2.15.05
pcre                    8.41                    8.45
libffi                  3.2.1                   3.4.2
libxml2                 2.9.12                  2.10.2
libxslt                 1.1.33-rc2              1.1.37
XML-SAX                 0.99                    1.02
expat                   2.2.4                   2.4.8
libjpeg-turbo           2.0.4                   2.1.4
libtiff                 4.1.0                   4.4.0
freetype                2.10.0                  2.12.1
libgd                   2.2.5                   2.3.3
liberation              2.0.1                   2.1.5
urw                     91edd6ec                20200910
graphviz                4bf0ec9b                5.0.1
python2                 2.7.15                  2.7.18
python3                 3.9.1                   3.10.6
swig                    3.0.12                  4.0.2
doxygen                 1.8.14                  1.9.5
bakefile                33c270a5                7a218d89
XML-Parser              2.44                    2.46
ninja                   1.9.0                   1.11.1
meson                   0.51.2                  0.63.2
glib                    2.62.2                  51251940
libgpg-error            1.41                    1.45
libgcrypt               1.8.5                   1.10.1
libsecret               0.19.1                  0.20.5
sdl2                    2.0.10                  2.24.0
flac                    1.3.3                   1.3.4
libogg                  1.3.4                   1.3.5
libvorbis               1.3.6                   1.3.7
harfbuzz                1.7.5                   5.1.0
sfml                    03375688                2.5.1
shared-mime-info        1.9                     2.2
wxwidgets               9cc0c9a0                31720e1e
graphite2               ce0e793f                425da3d0
xvidcore                1.3.5                   1.3.7
fribidi                 1.0.1                   1.0.12
libgsm                  1.0.18                  1.0.22
libmodplug              5a39f591                d1b97ed0
libopencore-amrnb       0.1.5                   0.1.6
snappy                  1.1.7                   af720f9a
speex                   1.2.0                   1.2.1
vidstab                 1.1.0                   90c76aca
libvo-amrwbenc          0.1.3                   3b3fcd0d
libass                  0.14.0                  0.16.0
libbluray               1.1.2                   1.3.2
libvpx                  1.8.1                   1.12.0
libx264                 20190913-2245           f7074e12
libxavs                 distrotech-xavs-git     8300fbf4
libzmq                  4.2.2                   4.3.4
ffmpeg                  4.3.1                   5.1.1

Removed dists:

dist            ver
=========================
zlib            1.2.11
pkgconfig       0.29.2
docbook5.0      5.0
libwavpack      5.1.0

Added dists:

dist            ver
========================
zlib-ng         ce01b1e4
zstd            1.5.2
hiredis         1.0.2
pkgconf         1.9.3
pcre2           10.40
docbook5.0.1    5.0.1
docbook5.1      5.1

Changes:

Update all non-working dist URLs.

Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.

Add zstd and hiredis, new deps of ccache.

Replace pkgconfig with pkgconf.

Use both pcre1 and pcre2.

Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.

Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.

Builder core:

Rename some of the directories and files to be a bit nicer.

Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.

Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.

Set the `LIBRARY_PATH` variable in the global environment.

Make some adjustments for the new dist versions and make some other
improvements.

macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):

Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.

Allow pre-defined CHECKOUT directory for building the project sources.

Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.

If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.

Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.

Add LLVM `libunwind` from the LLVM archive.

Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.

Add an extra location to check for `stdint.h` in XCode.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-12 13:23:54 +00:00
Rafael Kitover
d6aa168718 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-08 02:03:11 +00:00
Benjamin Siskoo
364dad84a9 Fixed typos and translated strings... 2022-11-07 02:21:39 +00:00
Fabrice de Gans
02f516f646 Set wxWS_EX_VALIDATE_RECURSIVELY style for dialog
This is no longer required since wxWidgets 3.1.0 but is needed for
prior versions.
2022-10-31 17:57:10 +03:00
Rafael Kitover
f138b44a50 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-27 02:02:19 +00:00
Fabrice de Gans
080be1a325 [config] Make usage of Option less verbose
* Add convenience direct accessors to individual Options.
* Move BasicOptionObserver to a separate header and allow it to
  observer multiple options. This also removes the include for
  "config/option.h" for using this observer, reducing build time.
* Never skip the "Plugin" option when changing filters. This is
  already handled properly in the GameArea class. If the plugin is
  unusable, GameArea resets the filter to the default value.
* Make the OptionID names slightly less long and fix the inconsistent
  naming in the enum.
2022-10-26 12:28:14 +00:00
Rafael Kitover
0a104a9a9d translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-26 02:02:20 +00:00
Rafael Kitover
0bfb88d0e3 Fix regression in ea2a929f, check for Wayland
Fix regression in ea2a929f, which broke x11 support by not checking for
Wayland when making the Wayland EGL subsurface move call.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-25 19:17:40 +00:00
Rafael Kitover
873de5f667 build: update default.nix
Change dbus_libs to dbus, which is the new package name.

This is for `nix-shell` to build on NixOS.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-25 19:14:38 +00:00
Rafael Kitover
9bf6a25048 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-24 02:02:24 +00:00
Rafael Kitover
ea2a929f5e Backport 800d6ed69b from wx to fix Wayland EGL pos
Backport 800d6ed69b from wxWidgets git to fix resizing the
`GLDrawingPanel` in Wayland using the EGL `wxGLCanvas`.

Also rename `IsItWayland()` to `IsWayland()`.

Fix #1028

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-23 13:14:03 -07:00
Fabrice de Gans
0ca5184dda [option] Convert all uses of geometry options to use config::Option
Moving and resizing the window no longer updates the entire option
set, reducing jank on move and resize.
2022-10-23 11:42:08 +00:00
Rafael Kitover
d2d070b52f translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-23 02:03:18 +00:00
Rafael Kitover
c40a141792 Write vsync toggle msg to debug log not OSD
Write vsync enable/disable messages to debug log and not the OSD, they
are kind of annoying.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-22 11:55:56 +00:00
Rafael Kitover
5d2dd01e85 Call Layout() after DrawingPanel OnSize event
When processing the `OnSize` event in the `GameArea` and calling the
embedded `DrawingPanel` `OnSize` event, call `Layout()` afterwards.

This seems to improve the resizing behavior of the EGL `wxGLCanvas`
`DrawingPanel` on Wayland.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-22 11:51:13 +00:00
Rafael Kitover
00344ca8f1 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-22 02:02:19 +00:00
Fabrice de Gans
af4951511e [config] Add Observers for Options
This adds a generic Observer interface to config::Option. To
demonstrate its intended usage, the Display Configuration dialog and
the options it controls have been updated to be entirely handled via
the config::Option class.

Implementations for wxValidator are used to validate the flow between
the UI and the underlying Option. In turn, modifying the Option value
triggers all of its observers that should then do what they need to
do.

Rather than explicitly calling all of the needed methods after
modifying a global option value, the UI elements that need to be
notified when an Option value is modified will be notified via their
observers. Runtime assert checks are put in place to prevent infinite
recursion if an observer attempts to modify an Option while handling
the observer callback.

Once all uses of Options have been updated, we should get into a state
where the following will be true:
* cmdevents.cpp will no longer rely on the application state.
* All dialogs will have been moved to specific implementations,
  reducing the size of guiinit.cpp
* update_opts() will no longer need to be called and will be removed.

This will then make it easier to update accelerator handling to be
done with config::UserInput.

Bug: #745
2022-10-22 01:47:39 +00:00
Rafael Kitover
da686a4827 Reinit panel on vsync toggle.
Destroy the DrawingPanel on vsync checkbox toggle so that it is
re-created with the vsync option in effect.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-21 21:43:13 +00:00
Rafael Kitover
ec27885c36 Support EGL VSync on Wayland.
Add support for `eglSwapInterval()` to enable or disable VSync on
Wayland.

Also add status messages for enabling or disabling VSync, for both EGL
and GLX.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-21 19:19:28 +00:00
Rafael Kitover
c27d384a53 Enable GL on Wayland for wx 3.2+, no vsync.
wxWidgets 3.2+ has experimental `wxGLCanvas` support for Wayland EGL,
enable it for those versions.

The `glXQueryExtensionsString()` method for enabling or disabling vsync
does not work on Wayland currently, so it's disabled.

TODO: Enable/disable vsync on Wayland EGL.

Fix #1028.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-21 17:24:46 +00:00
Rafael Kitover
75e46b7117 build: update macOS third_party_libs_tool from git
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-19 00:00:59 +00:00
Rafael Kitover
c249115b7a build: set -mtune=generic
Nach explained that this is the safest and best option.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-16 18:37:03 +00:00
Rafael Kitover
d23b374fbf ci: add basic macos-latest runner
Add basic macos-latest build to have one macOS runner.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-16 18:22:37 +00:00
Rafael Kitover
2985b46926 ci: add ubuntu-latest workflow
Add basic build on ubuntu-latest to have at least one ci build on Linux.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-16 14:18:13 +00:00
Adam Sampson
54b8192d30 Fix prototype for main.
A typo in 297d7c06c4 meant main had the
wrong prototype on non-Windows systems, breaking the build.
2022-10-16 13:08:25 +00:00
Rafael Kitover
927ccf0bc8 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-16 02:02:40 +00:00
Fabrice de Gans
8c1bd84f40 [config] Move VbamOption and wxGameControl to config namespace 2022-10-15 23:11:41 +00:00
Fabrice de Gans
297d7c06c4 [hidpi] Use wxWidgets 3.2 on Windows
* Remove the custom handling for pre-3.1.4 builds on Windows since
  both the mingw and msvc builds now use 3.2.
* Remove wxDPIChangedEvent handling, since this triggers a resize,
  which has the same effect.
* Implement main/WinMain ourselves, rather than relying on wxWidgets
  macros. This allows us to initialize the console earlier in the
  process.
* Add an explicit dependency on the manifest file to trigger a link
  when it is modified.
2022-10-15 22:25:54 +00:00
Fabrice de Gans
0d86432a31 [hidpi] Implement full HiDPI support
This converts the HiDPIAware into a series of helper functions, using
wxWidgets native support starting with wxWidgets 3.1.4. Custom
implementations are provided for Mac and Windows.

In addition, this fixes a few issues with the Windows build:
* Use the same defines variables in the MSVC and MinGW builds, with
  g++ and Clang.
* Add a custom manifest for the application, indicating full DPI
  support and support for recent Windows versions so the application
  will no longer run in compatibility mode by default.
* Manually spawn a console in debug builds if none is attached and
  always use the parent console if it is available otherwise, even in
  release builds. This also removes the /subsystem:console linker
  argument.
2022-10-15 22:25:54 +00:00
Fabrice de Gans
95337da558 [build] Add basic clang-cl support
XAudio2 is disabled because the included header needs to be updated to
be parseable by clang.
2022-10-15 22:25:34 +00:00
Rafael Kitover
d6331ff92e translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-14 02:02:29 +00:00
Rafael Kitover
69a4061ab9 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-13 02:02:23 +00:00
Rafael Kitover
8f27869715 build: fix finding static vcpkg SDL2
The static lib is now called `SDL2-static.lib` and the debug version is
called `SDL2-staticd.lib`.

Adjust our `cmake/FindSDL2.cmake` for the new vcpkg naming convention.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-09 04:00:26 +00:00
LibretroAdmin
7e30b03889 Merge pull request #109 from negativeExponent/silence_bios_sign_compare_warnings
HLE: Fix sign-compare warnings
2022-10-07 10:59:16 +02:00
LibretroAdmin
09bb3c3acf Remove fallthrough - breaks Clang on Mac/iOS 2022-10-07 10:58:00 +02:00
LibretroAdmin
655cfb929d Merge pull request #111 from negativeExponent/fix_warnings
Fix warnings and more cleanups
2022-10-07 10:57:48 +02:00
negativeExponent
e2f3a64143 Cleanup more libretro-specific branches 2022-10-07 15:28:31 +08:00
negativeExponent
1c95df1212 Simplify save state handling
- size and version parameters are unused in the libretro implementation,
  so remove them
2022-10-07 14:46:29 +08:00
negativeExponent
3158b73d69 Wrap functions unused by LIBRETRO 2022-10-07 14:21:29 +08:00
LibretroAdmin
62671753a9 Merge pull request #108 from negativeExponent/fix_implicit-fallthrough
Fix implicit fallthrough and other warnings
2022-10-07 08:21:19 +02:00
LibretroAdmin
cb3fc44789 Merge pull request #110 from negativeExponent/fix_missing_field_initializers
Fix missing-field-initializer warnings
2022-10-07 08:20:51 +02:00
negativeExponent
ac2a56be7f Silence other warnings 2022-10-07 13:41:06 +08:00
negativeExponent
ba2513b511 Fix missing break statements 2022-10-07 13:23:02 +08:00
negativeExponent
0594fa2a2c Silence implicit-fallthrough warnings
Used [[fallthrough]]; to mark affected areas. Such keyword should be
available since C++11
2022-10-07 13:21:49 +08:00
negativeExponent
9864dc2853 Fix missing-field-initializer warnings 2022-10-07 12:52:29 +08:00
negativeExponent
12f39b86b1 HLE: Fix sign-compare warnings 2022-10-07 12:34:32 +08:00
Rafael Kitover
eed171aac0 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-02 02:02:17 +00:00
Rafael Kitover
603d6a3872 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-10-01 02:02:18 +00:00
Fabrice de Gans
f8974d8870 Merge pull request #1012 from Ds886/fix-missing-header
* adds missing header to memgzio ("stdint")
2022-09-30 13:11:50 -07:00
Ds886
6be626d4c7 * adds missing header("stdint") 2022-09-30 22:56:58 +03:00
Rafael Kitover
8771172d19 build: silence cmake warning on macOS for Sparkle
Silence cmake policy set warning for FetchContent
DOWNLOAD_EXTRACT_TIMESTAMP by setting it to TRUE.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-29 23:04:27 +00:00
Rafael Kitover
85a95dcde0 build: macOS C++ compatibility fixes
Remove constexpr in user-input.h as LLVM 13 complains that it is
illegal.

Use variant-lite as nonstd::variant and related types as some variant
functions are macOS 10.14 Mojave only.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-29 22:34:59 +00:00
Rafael Kitover
343eafc477 build: add variant-lite as nonstd::variant
From:

https://github.com/martinmoene/variant-lite

. Needed for macOS build.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-29 22:34:59 +00:00
Rafael Kitover
1425248072 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-29 02:02:19 +00:00
Rafael Kitover
4bdd3798f1 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-28 02:02:21 +00:00
LibretroAdmin
7c25d64d69 Merge pull request #106 from ds22x/master
Update to core options v2 interface
2022-09-28 00:02:59 +02:00
Fabrice de Gans
69d24fb53e [build][msvc] Fix debug information and set hidpi support
* Add /ZI compiler flag in Debug mode to get proper debug symbols.
* Specify hidpi support in the app manifest.
2022-09-27 01:25:20 +00:00
Fabrice de Gans
b027e64753 [config] Move wxUserInput to the config namespace
* Remove the wx prefix and make UserInput a class in the config
  namespace.
* Make UserInput constexpr-constructible. This should reduce program
  startup time by having the compiler pre-allocate UserInput objects.
* Change initialization of UserInput objects to be made via
  constructor. A previous approach would have limited creation of
  UserInput objects to a few places but that proved unworkable in the
  long run.
2022-09-26 02:20:12 +00:00
Fabrice de Gans
1d4eb48a68 [build] Fix all warnings in src/gba/bios.cpp
This adds some helper methods to safely downcast integer types.

Bug: #1003
2022-09-26 02:17:26 +00:00
Fabrice de Gans
1e1451c57f [build] Fix warnings in src/common
Bug: #1003
2022-09-26 02:14:53 +00:00
Fabrice de Gans
b2ec1544be [build] Regenerate lex and yacc files
The source grammar files were also updated. This fixes compiler
warnings for these files.

Bug: #1003
2022-09-26 02:13:12 +00:00
Fabrice de Gans
239b244640 [build] Fix warnings in memgzio.c
Bug: #1003
2022-09-26 02:11:52 +00:00
Rafael Kitover
9cc45c355b translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-26 02:02:20 +00:00
Fabrice de Gans
4a056c7720 [options] Remove duplicate string constants
* Changed the string to enum conversions to be built at runtime from
  the existing constant array rather than redefining the strings.
* Fixed an issue in the initialization of the `checkable_mi` array.
  A test had been mistakenly removed during the refactor.
* Fixed an issue where changing a bool or int option would cause an
  assertion error at runtime. Changed helper methods definitions to
  use a pointer to a variable rather than take a parameter by
  reference, clarifying the intent from the caller perspective.
* Fixed the `renderer` enum definition to properly exclude Direct3D or
  Quartz2D depending on the platform.
* Various comment fixes.
2022-09-25 05:47:34 +00:00
Fabrice de Gans
c4d46a713f [options] Refactor INI options
This change introduces a new class to handle all of the INI options
data, VbamOption. A VbamOption represents a single option in the INI
file. It is not constructible outside of its implementation, which
prevents the initialization of incorrectly formatted options.

Internally, a VbamOption points to a global variable in memory, which
holds the value used at runtime. This is because various parts of the
codebase edit the global variable rather than going through a central
registry. This also means we need to separately update the INI values.

In the future, we may be able to convert all existing reads and writes
to the global variable to go through VbamOption. Individual UX elements
could link directly to getters/setters for a specific VbamOption rather
than have duplicate data.

VbamOption replaces the opt_desc struct and the global opts array. All
users of opt_desc and the global opts array have been updated.

This is a necessary preliminary change to better support a refactor of
accelerators, through wxUserInput.

Issue: #745, #158
2022-09-25 05:47:34 +00:00
Rafael Kitover
dd6071e5cb translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-25 02:02:21 +00:00
Rafael Kitover
c10338a854 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-24 02:02:22 +00:00
Fabrice de Gans
a92c448405 Merge pull request #1002 from visualboyadvance-m/interframe-blending-changer
Interframe blending changer OSD improvement
2022-09-23 16:55:41 -07:00
Rafael Kitover
90fc3e12e2 Default CTRL+I to change interframe blender
Add default menu accelerator `CTRL+I` to `ChangeIFB` which is the menu
item to change the interframe blending algorithm.

CMD+I on macOS.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-23 23:44:37 +00:00
Rafael Kitover
a57d81e1af Show name of interframe blender not num in OSD
When changing the interframe blending algorithm via:

`Options -> Video -> Change interframe blending`

, show the short name of the algorithm instead of the list number in the
OSD.

Store a pointer to the wxChoice of interframe algorithms read from the
XRC for easy access.

Shorten the names of the algorithms in the XRC selection list.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-23 23:44:36 +00:00
Rafael Kitover
97c24ec2d2 Minor refactor of strutils and add 3 new functions
Use namespace strutils:: instead of the `str_` prefix for the functions.

Remove `vec_find` as it's just an alias for `wxArrayString::Index(str)`
and is not a function on a string.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-23 23:43:31 +00:00
Rafael Kitover
2d3610b5c6 translations: remove Hebrew he locale, use he_IL
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-23 22:12:34 +00:00
Rafael Kitover
adb9f62080 Copy Hebrew translation from he to he_IL locale
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-23 21:59:26 +00:00
ds22x
67e7cfc200 Update to core options v2 interface 2022-09-17 17:37:51 +02:00
Rafael Kitover
bad9538ed4 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-12 02:02:22 +00:00
Rafael Kitover
8e83209121 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-06 02:02:22 +00:00
Rafael Kitover
13c558ac9f Disable wireless link type
Always disable wireless link type as it has never worked.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-04 03:17:35 +00:00
Fabrice de Gans
3eb9fbdb7e [snap] Fix snapcraft build for core20 2022-09-03 19:01:17 -04:00
Rafael Kitover
e140ba816c installdeps: remove wxgtk2 for Arch on failure
The wxgtk2 package being installed may prevent the installation of the
newer wxwidgets-gtk3 package, remove it on pacman failure and try again.

See:

https://archlinux.org/news/wxwidgets-32-update-may-need-manual-intervention/

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-09-03 09:34:05 +00:00
Squall Leonhart
355c8efeb4 change invite code
resolves expired code error
2022-09-02 17:57:38 -04:00
Squall Leonhart
7d606f7065 fix it better 2022-09-02 17:47:42 -04:00
Squall Leonhart
ec90072c28 Fix discord link 2022-09-02 17:47:42 -04:00
Rafael Kitover
0fd1daae54 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-27 02:02:26 +00:00
Rafael Kitover
913db72d12 build: check that -mtune=znver3 is supported
On gcc/clang check that the -mtune=znver3 compiler flag is supported, on
Debian 11 it is not and this breaks everything.

If it is not supported fallback to znver2, znver1, skylake-avx512 then
skylake in that order.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-26 17:12:09 +00:00
Rafael Kitover
2da9696a50 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-26 02:02:22 +00:00
Rafael Kitover
b1c7476f2c build: update finding vcpkg wxWidgets for 3.2
Use a glob instead of hardcoding '31' in lib name.

Fix #992.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-26 00:59:38 +00:00
Rafael Kitover
cf57af4a83 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-25 02:02:21 +00:00
Rafael Kitover
e0ae114f2e translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-24 02:02:25 +00:00
Rafael Kitover
6b8b6b6450 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-23 02:02:24 +00:00
Rafael Kitover
7f1d49d3d0 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-21 23:23:23 +00:00
Rafael Kitover
9bda107d3c build: update dev msg for translations .pot update
In the warning for detected translations source .pot changes, state that
the .pot will be automatically pushed to Transifex, instead of asking
the developer to do that, as they may not have access or the utilities.

The Transifex pull job has been updated to do this.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-18 15:00:40 +00:00
Rafael Kitover
dd10b8075f translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-18 14:53:25 +00:00
Rafael Kitover
2d5fdf8e79 translations: rebuild source .pot
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-18 14:46:00 +00:00
Rafael Kitover
f68492cbbf build: fix deps from/to translations source .pot
Make the wxvbam.pot output a top-level build target and the check and
warning message for developers a POST_BUILD command for it.

Broken by 60caad86.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-18 14:31:19 +00:00
Rafael Kitover
639003a8b6 Show pixel filter name not number on cycle
Save the wxChoice* for the pixel filter name selection list in the XRC
and use it to display the filter name in the status message on pixel
filter cycle instead of the filter number.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-18 13:52:13 +00:00
Rafael Kitover
a3b2a35395 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-18 11:49:19 +00:00
Rafael Kitover
60caad8666 build: improve translations.zip creation
Make translations.zip a dependency of the app and remove it as a
dependency of other commands/targets that do not use it as a source.

Silence the very spammy output of the zip program.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-10 15:29:20 +00:00
Rafael Kitover
a87a6a2cc1 refactor: add static GetX11Display() in panel.cpp
Add static GetX11Display() function to get the app X11 Display* instead
of making the GDK/GTK calls in two places.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-10 13:31:22 +00:00
Rafael Kitover
236cffb42b Make another adjustment to glXQueryExtensions
Use GDK/GTK to get the X display instead of glXGetCurrentDisplay().

For #985.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-09 22:27:07 +00:00
Rafael Kitover
643ec0f7b6 Pass DefaultScreen(display) to glXQueryExtensions
Pass DefaultScreen(display) as the screen number to
glXQueryExtensionsString(display, screen), this may work more reliably
for some configurations than always assuming screen 0.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-09 14:45:11 +00:00
Rafael Kitover
395ed0eb2a build: fix tests build on Linux by doctest update
Update doctest.h because the old version causes build failures on Linux.

Also move it from third_party/include/doctest to third_party/include.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-09 14:18:40 +00:00
Fabrice de Gans
50a1391232 Simplify Hat handling
* Parse the hat bitfield directly rather than going through an
  intermediate enum state.
* Clean up some of the sdljoy code to use less vertical space.
2022-08-09 11:00:34 +00:00
Fabrice de Gans
a56ea0225a Revamp wxJoyEvent to simplify handling of joystick events
Previously, wxJoyEvent surfaced the internal state of the joystick
changes, forcing consumers of this class to convert the values to the
mod and key values used in the rest of the code base. This streamlines
the wxJoyEvent API so the events sent to the consumers can be used
as-is. In particular, this allows us to remove manual generation of
"ghost" events in GameArea.

Breaking change: This has the side effect of disabling setting
diagonals from a joystick HAT as a discrete control. However, this only
ever worked with game controllers not compatible with the newer SDL
GameController API, since it handles HATs as 4 discrete buttons. For
compatibility purposes, these have been moved 1/8 turn
counter-clockwise - i.e. NE is now N.

Issue: #745
2022-08-09 11:00:34 +00:00
laqieer
60d7ead565 Fix menu state after playing a movie
Fix the state of the File -> Play -> Start/Stop menu after playing a
movie by calling systemStopGamePlayback() when the playback stops.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-08 04:01:45 +00:00
laqieer
d2fee771fd Add VBA Movie Version 2
Add new format for recording VBA Movies that records inputs since the
time of the last input instead of the beginning of the movie.

Keep the extension `.vmv` the same, the format is determined from the
header of the file.

Make this the new default format for recording VBA Movies.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-08 04:01:45 +00:00
Rafael Kitover
5008ffbacf Stop using MINGW64 windres rc compiler for CLANG64
On MSYS2, stop using the MINGW64 windres.exe Windows resource file
compiler instead of the CLANG64 provided one, because the CLANG64
windres.exe works correctly now, while using the MINGW64 windres.exe no
longer works.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-07 21:13:52 +00:00
Rafael Kitover
e29032d48a Switch to nonstd::optional due to mac build issues
Switch usage of std::optional to nonstd::optional for now because of an
error from the Mac builder script, I cannot reproduce the problem yet
but will try to fix it later, it may not be fixable when targeting 10.7.

The header is from:

https://github.com/martinmoene/optional-lite
.

Usage is about the same, to include:

`#include "nonstd/optional.hpp"`

Then use nonstd::optional and nonstd::nullopt instead of the std::
counterparts.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-08-06 12:59:10 +00:00
noabody
fb99a07625 error typedef Status fix for #904 2022-08-06 12:19:45 +03:00
Fabrice de Gans
51473a7c53 Refactor game controls bindings
This introduces abstractions for a game key (`wxGameKey`), a game
control (`wxGameControl`) and a common global handler for in-game
user input processing (`wxGameControlState`).
User configuration is changed from a vector to a map of `wxGameControl`
to a set of `wxUserInput`, which simplifies input configuration updates.

User input processing for in-game controls is now unified between
keyboard and joypad input, and is much faster in general since access
to game control state is now always logarithmic rather than linear.
This comes at the expense of slightly slower user input configuration
updates. However, in the worst case scenario, this is still done in
O(log(n)).

This removes all uses of `wxJoyKeyBinding`. However, some uses of the
key, mod, joy triplets remain and will be cleaned up in follow-up PRs.

Issue: #745
2022-08-06 12:18:35 +03:00
Fabrice de Gans
3f2d3c139d Remove manual joystick polling
Previously, a manual polling of every joystick was performed every 25ms,
resulting in many CPU resources being wasted. This seems to have been
put in place to deal with issues in SDL where joysticks connected after
SDL was initialized did not fire SDL events properly. From manual
testing, this issue seems to have been fixed.

This also fixes a bug in handling of legacy joystick hats, where an
incorrect conversion for the event value was performed.

Finally, this fixes minor typoes and renames
`wxSDLJoyState::ProcessEvent()` to `wxSDLJoyState::ProcessSDLEvent()` to
suppress a warning about a method override.
2022-08-06 12:17:35 +03:00
Rafael Kitover
1cfe275012 doc: add Discord/IRC links to README.md
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-07-25 07:12:24 +00:00
Fabrice de Gans
4aebd0b802 Introduce wxUserInput class
This introduces a new abstraction for any user input. The long-term goal
is to replace every usage of "custom" {key, mod, joy} triplets in the
code base with this new class.

This class implements comparison operators, allowing for faster access
in a set or as a key in a map, compared to the vectors currently used.

Issue: #745
2022-07-12 18:20:09 +00:00
Colton G. Rushton
d7abc27438 doc: remove travis and appveyor from README.md
We are using GitHub actions now.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-07-06 23:34:33 +00:00
Deen O'Connor
76bf554161 installdeps: use correct package name for libsdl2
The actual package name for libsdl2 is libsdl2-2.0-0 not libsdl2-2.0 in
Debian/Ubuntu and probably others, and this only worked by accident
due to apt doing a regex search for packages.

Get the correct package for the latest version of libsdl2 from
apt-cache.

Also fix the other lib package searches via apt-cache to return the
latest version.

Resolve #882.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-07-04 19:32:09 +00:00
Fabrice de Gans-Riberi
f132e15511 Abstract player_index into wxJoystick
* Add wxJoystick to abstract what was previously referred to as
  |player_index|. This is a first step towards a larger refactor of
  input handling.
* Remove "SDL" from types that are not directly SDL-related, namely
  "wxSDLJoyEvent", "wxSDLControl".
* Rename "wxSDLJoy" into "wxJoyPoller". This clarifies the use of this
  class.

Issue: #745
2022-07-04 13:58:28 +03:00
Rafael Kitover
37dc95b930 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-06-16 21:02:11 +00:00
Rafael Kitover
941eef918b translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-06-15 21:02:08 +00:00
Rafael Kitover
94627c1e8e build: link pcre2 with vcpkg wxwidgets
wxregex uses pcre2, link it when using static vcpkg wxwidgets.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-06-15 20:52:29 +00:00
Rafael Kitover
3e224bab40 build: enable ccache for MSVC
ccache supports MSVC now, so don't disable it for MSVC builds.

Remove the global RULE_LAUNCH_COMPILE property because it breaks
resource compilation on MSVC and just use CMAKE_CXX_COMPILER_LAUNCHER
etc..

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-06-15 01:00:13 +00:00
Squall Leonhart
72d772189a Add before creating request to feature.yml
and encourage searching
2022-06-05 02:10:54 -04:00
Zach Bacon
a413eb048c switch from wxmsw3.1 to wxWidgets 3.0 and pkg-config to pkgconf
Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2022-06-05 01:22:24 -04:00
Zach Bacon
fed8c3697e Yeah... one last tweak to get submodules pulled
Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2022-06-05 01:08:34 -04:00
Zach Bacon
3abf084f2f last tweak to the CI build system
at least till clang is fixed for windows targets

Signed-off-by: Zach Bacon <zachbacon@vba-m.com>
2022-06-05 00:57:20 -04:00
Zach Bacon
05e58ba0a7 update the workflow script 2022-06-05 00:49:02 -04:00
Rafael Kitover
c9994c284a translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-06-03 21:02:14 +00:00
Rafael Kitover
595a9e49c0 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-05-23 21:02:05 +00:00
Rafael Kitover
732524a77b translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-05-21 21:02:10 +00:00
Rafael Kitover
f7ce25f496 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-05-14 21:02:10 +00:00
Zach Bacon
61d494af4e Merge pull request #951 from Squall-Leonhart/patch-1
encourage users to search for existing issues in bug report template
2022-05-14 09:49:56 -04:00
Squall Leonhart
17038c27d1 Update bug_report.yml
encourage users to search for existing issues
2022-05-14 23:46:05 +10:00
Rafael Kitover
75f0a061be translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-05-04 21:02:23 +00:00
Rafael Kitover
27a0d41ad8 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-05-01 21:02:05 +00:00
Rafael Kitover
4f9d161c02 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-26 21:02:11 +00:00
Rafael Kitover
571d42d2fa translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-20 21:02:07 +00:00
Rafael Kitover
1bd2f049cb cmake: default VBAM_STATIC=ON for MinGW/MSYS2
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-19 04:07:30 +03:00
Rafael Kitover
b28982a89a installdeps: support UCRT64 on MSYS2
Same as MINGW64, works fine.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-19 03:58:01 +03:00
Rafael Kitover
d91e5db524 cmake: fix static linking winpthread on MINGW
Include linker flags to link winpthread statically on MINGW when static
build is on.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-13 21:26:27 +00:00
Rafael Kitover
cbd7d7d2d1 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-09 21:02:01 +00:00
Rafael Kitover
570596266f translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-05 21:02:08 +00:00
Rafael Kitover
cf39d9bbd1 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-04-04 21:02:11 +00:00
Rafael Kitover
d014ebd2b2 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-27 21:02:06 +00:00
Rafael Kitover
8483fde365 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-26 21:02:08 +00:00
Rafael Kitover
ad7dbf253c translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-25 21:02:34 +00:00
Rafael Kitover
461c4a7bd4 translations: transifex pull
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-24 21:01:40 +00:00
Rafael Kitover
1fc449b2c7 installdeps: don't link mac brew ffmpeg
Stop linking brew ffmpeg, it links itself by default.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-20 18:10:37 +00:00
Rafael Kitover
1a6f40a79c installdeps: re-enable ffmpeg for mac brew
Thanks to @ZachBacon in 1e0eea3c (recording: fix ffmpeg5 compat, 2022-03-18) the build works with ffmpeg5 from brew.

Update build instructions from installdeps to not disable ffmpeg
anymore.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-20 13:53:32 +00:00
Zach Bacon
1e0eea3c08 recording: fix ffmpeg5 compat
Include avcodec.h and change AVCodec* and AVOutputFormat* to const.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-20 12:01:59 +00:00
Rafael Kitover
9a325f086e issues: fix nightly URL in bug_report template
We're at https://nightly.vba-m.com now.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-19 07:46:27 +00:00
Rafael Kitover
2810f4b228 installdeps: update for mac brew
Replace wxmac obsolete package with wxwidgets.

Use brew install -f (--force) to install all deps.

Unlink and relink gettext, wxwidgets and ffmpeg for every invocation.

Add -DENABLE_FFMPEG=FALSE to cmake invocation instructions because brew
has ffmpeg 5 and we cannot build with it yet.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-18 19:19:23 +00:00
Rafael Kitover
8caea3ae6c installdeps: add -DCMAKE_BUILD_TYPE=Release
Add -DCMAKE_BUILD_TYPE=Release to cmake invocation in build instructions
in installdeps.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-18 19:18:08 +00:00
Rafael Kitover
8c1ebf4d59 builder: update automake 1.15.1 -> 1.16.5
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-18 18:57:58 +00:00
Rafael Kitover
715c66b52c builder: update gettext 0.19.8.1 -> 0.21
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-18 18:51:35 +00:00
Rafael Kitover
dedfb615d5 build: use GLOB to detect wx dep lib suffixes
Use file(GLOB ${lib_name}*.lib) to detect the appropriate suffixes for
wx dependency libs, because the suffix keeps changing, sometimes there
is a 'd' added for debug builds and sometimes it changes to not adding
the suffix, this will make the code more robust and lead to fewer build
failures.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-18 14:47:50 +00:00
Rafael Kitover
ec434a7c2f build: rm vcpkg build_prefix* in vcpkg wx setup
Stop setting the build_prefix* variables as they are no longer used and
relying on build trees being available would break /installed caches
etc..

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-18 14:37:08 +00:00
Rafael Kitover
a6affd3807 build: remove d suffix from lzmad.lib for vcpkg
The debug build of lzma.lib is no longer called lzmad.lib in vcpkg,
remove the 'd' suffix.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-17 21:16:43 +00:00
Rafael Kitover
7f4b5b6f93 Transifex pull.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-03-17 19:03:19 +00:00
Zach Bacon
287bb5f3a2 Merge pull request #931 from Squall-Leonhart/master
Updates the Feature Request form from MD to YML
2022-03-10 05:16:52 -05:00
Squall Leonhart
50f64b0e8b we don't use plugins
so remove reference
2022-03-09 14:41:53 +11:00
Squall Leonhart
e7924caca0 cleanups 2022-03-09 14:41:28 +11:00
Squall Leonhart
f16d1d0725 convert feature request into a yml
copying @DerekTurtleRoe homework
2022-03-09 14:17:04 +11:00
Zach Bacon
8ea020d373 Merge pull request #929 from Squall-Leonhart/master
fix x86 builds crashing when /Gs set by Optimizations, turns on full optimizations for x86
2022-03-08 06:49:22 -05:00
Squall Leonhart
7726d26f9c Enable full optimizations and fix x86 builds
a bool isn't a BOOL and wglGetExtensionsStringEXT returns a const char*
2022-03-08 13:23:54 +11:00
Zach Bacon
252b65b13c Merge pull request #927 from Squall-Leonhart/master
Adding Forum link to config.yml, fixes title and a typo in feature.md
2022-03-07 10:26:07 -05:00
Squall Leonhart
56ffb12758 typo fixed 2022-03-08 02:20:58 +11:00
Squall Leonhart
66c224e122 change title template to [Feature request] 2022-03-08 02:18:45 +11:00
Squall Leonhart
dc4d431d7a Merge branch 'visualboyadvance-m:master' into master 2022-03-08 02:14:45 +11:00
Squall Leonhart
09eb6628e8 Update config.yml 2022-03-08 02:06:36 +11:00
Squall Leonhart
9b84396adb Update config.yml 2022-03-08 02:05:51 +11:00
Zach Bacon
bb1d44ae0a Merge pull request #925 from Squall-Leonhart/master
Updating to YML Issue form for Bug, adding Feature request form, link to IRC and disbling blank issues.
2022-03-07 09:01:22 -05:00
Squall Leonhart
df991bae0a remove required flag for "What game were you playing"
Some issues occur before a rom is even in use
2022-03-08 00:47:47 +11:00
Squall Leonhart
a00e4345d0 remove required flag for Error Messages
Not all issues reporte will have an error message.
2022-03-08 00:46:09 +11:00
Squall Leonhart
be7b1ef1d2 updating rom details
clarifying how to obtain information for rom and save types of gba titles
2022-03-08 00:44:57 +11:00
Squall Leonhart
f7633ca274 move the SDL block to the top
so that people don't waste their time filling out the form only to find out we don't take sdl related controller issues.
2022-03-08 00:39:17 +11:00
Squall Leonhart
03d962dfea clarification on filter, and capital letter.
some more small cleanup
2022-03-08 00:20:51 +11:00
Squall Leonhart
c1c4daf5e3 further template changes
just cleaning up
2022-03-08 00:20:51 +11:00
Squall Leonhart
a9e594a38a add some missing tidbits
from the present issue template
2022-03-08 00:20:51 +11:00
Squall Leonhart
18a84e5cad Update feature.md 2022-03-08 00:20:51 +11:00
Squall Leonhart
bd1adc87e0 Update feature.md 2022-03-08 00:20:51 +11:00
Squall Leonhart
2d6457c0f4 Update feature.md 2022-03-08 00:20:51 +11:00
Squall Leonhart
85e991a0e8 Update feature.md 2022-03-08 00:20:51 +11:00
Squall Leonhart
265342135d Update bug_report.yml 2022-03-08 00:20:51 +11:00
Squall Leonhart
d729ac3ff2 Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
8688d9f8e7 Update feature.md 2022-03-08 00:20:50 +11:00
Squall Leonhart
256008dffc Create config.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
a1f2ac8caf Delete ISSUE_TEMPLATE.md 2022-03-08 00:20:50 +11:00
Squall Leonhart
32503fd03a Create feature.md 2022-03-08 00:20:50 +11:00
Squall Leonhart
fd3029c858 Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
27213d9626 Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
b198c6b549 Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
5961c1480b Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
961b27f21d Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
738b6406b8 Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
5583effa89 Update bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
ef8efd3187 Update and rename bug_report.md to bug_report.yml 2022-03-08 00:20:50 +11:00
Squall Leonhart
6c9c53a119 Update issue templates 2022-03-08 00:20:50 +11:00
Squall Leonhart
12ec072b25 add colorization hack support to Wx
Revert "add colorization hack support to Wx"

This reverts commit c676333c7157698657b774bdf8e068824e0fc43e.
2022-03-08 00:20:49 +11:00
Rafael Kitover
cdeb1027cc Transifex pull.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-02-07 12:19:59 +00:00
Rafael Kitover
796dfe78f9 Fix Wx OpenGL and ABI checks for MSYS2 CLANG64.
Probably fixes this in other environments as well, or breaks it.

Move the wxWidgets_LIBRARIES paths conversion to the already existing
normalize_wx_paths() function that was using a different method that no
longer works. This converts the variable to the right format before the
tests run, fixing the Wx OpenGL test.

For the ABI checks, wrap the function pointers for the minhook
trampoline API in reinterpret_cast<LPVOID>(&fp), why this is necessary I
don't know, and it may break on other compilers. The trampoline is used
to catch message boxes opened by Wx for fatal errors.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-02-05 01:00:25 +00:00
Rafael Kitover
87e41300f1 Speedup wx-config search on MSYS2.
Search for wx-config-static for static builds first, and wx-config
otherwise, before trying any config and version suffixes.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-02-04 04:45:07 +00:00
Rafael Kitover
7853718627 Add winmm to SDL2 libs for WIN32.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-02-04 04:44:14 +00:00
Rafael Kitover
a7eeb17645 Use gcc binutils for rc compiler on MSYS2 CLANG64.
Update installdeps and cmake to use windres from gcc binutils from
MINGW64 on MSYS2 CLANG64, because llvm-rc doesn't work sometimes.

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-02-04 04:18:36 +00:00
Rafael Kitover
347df44497 Add ccache to pkg list in installdeps for MSYS2.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-02-04 04:16:26 +00:00
564 changed files with 111301 additions and 261560 deletions

View File

@@ -1,63 +0,0 @@
<!---
BEFORE REPORTING AN ISSUE PLEASE TRY THE NIGHTLY FROM:
http://win.vba-m.com/nightly
AND DO A FACTORY RESET!
On Linux build master from source or use the edge snap.
-->
<!--- Please fill out this form and delete any sections you are not using. -->
### Expected behavior
### Actual behavior
### Steps to reproduce the behavior
<!--- Crash bugs
If this is a crash bug, and you have the time and inclination, please provide a
symblic backtrace.
Instructions for doing so are
[here](https://github.com/visualboyadvance-m/visualboyadvance-m/blob/master/README.md#reporting-crash-bugs).
-->
### ROM details
Which games are affected by the issue (please state if GBA or GB game):
Which games, if any, are NOT affected by the issue (please state if GBA or GB game):
Include screenshots of ROM Information (File > ROM Information):
If you are using a BIOS file, please say which one.
### Option details
Video driver (simple, opengl):
Sound driver (directsound, xaudio, openal, SDL):
### Build details
Operating System (Windows, Mac, Linux (state distribution), etc.):
If using Linux, specify if using xorg or Wayland:
Version of code (pre-built binary version, or commit ref, or just "master"):
<!--- Hardware details:
If your joystick or gamepad isn't working in Linux, please try to troubleshoot
using the information on this page:
https://wiki.archlinux.org/index.php/Gamepad **BEFORE** filing an issue. We use
SDL for joystick support, any problems will generally be an issue with SDL and
**NOT** the emulator.
If relevant, the joystick you are using and the drivers you are using for it:
-->

116
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,116 @@
name: Bug Report
description: If you experience a bug in the Emulator, please open an issue here and fill out the template.
title: "[Bug]: "
labels: ["bug", "triage"]
assignees:
-
body:
- type: markdown
attributes:
value: "## BEFORE REPORTING AN ISSUE"
- type: markdown
attributes:
value: |
Please try the nightly build from: https://nightly.vba-m.com and factory resetting the emulator from the Help menu.
On Linux build master from source or use the edge snap.
And last but not least, search for existing reports via the filters bar on the issues page.
- type: markdown
attributes:
value: "## If your joystick or gamepad isn't working in Linux"
- type: markdown
attributes:
value: |
Please try to troubleshoot using the information on this page:h ttps://wiki.archlinux.org/index.php/Gamepad **BEFORE** filing an issue.
We use SDL for joystick support, any problems will generally be an issue with SDL and **NOT** the emulator.
If relevant, the joystick you are using and the drivers you are using for it:
- type: textarea
id: what-should-happen
attributes:
label: Expected behavior?
description: How was the emulator supposed to behave
placeholder: Tell us what you expect to see!; use screenshots if necessary.
value:
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: Actual behavior?
description: Describe the issue you encountered.
placeholder: Tell us what you see!; use screenshots if necessary.
value:
validations:
required: true
- type: textarea
id: repro
attributes:
label: Steps to reproduce the problem
description: "How do you trigger this bug? Please walk us through it step by step."
value: |
1.
2.
3.
4.
5.
...
validations:
required: true
- type: textarea
id: error-messages
attributes:
label: Error messages?
description: Was there an error message?
placeholder: List any exception messages here!; use screenshots if necessary.
value: |
If this is a crash bug, and you have the time and inclination, please provide a symbolic backtrace.
Instructions for doing so are [here](https://github.com/visualboyadvance-m/visualboyadvance-m/blob/master/README.md#reporting-crash-bugs).
validations:
required: false
- type: textarea
id: Rom_Details
attributes:
label: What game were you playing
description: "What is the specific rom that you encountered an issue with"
value: |
<Some of this information can be provided with a screenshot of Rom Information, SAVE TYPE for GBA titles can be obtained from Options > Game Boy Advance > Config>
Title:
GB, GBC or GBA:
ROM CODE:
BIOS Used?: (Share crc hash)
SAVE TYPE: (Attach Battery or Savestate here)
Clean, Intro'd or Hacked?:(Attach Patch here)
validations:
required: false
- type: textarea
id: Settings
attributes:
label: What settings are you using?
description: "Please list them"
value: |
Video driver (simple, opengl):
Sound driver (directsound, xaudio, openal, SDL):
Scale Filter Used?:
validations:
required: true
- type: textarea
id: SysInfo
attributes:
label: Specifications and Build details
description: "List your system information, you can obtain this from MSINFO32 and the emulators Titlebar."
value: |
VBA-M: (include commit version number and whether you are using the 32-bit or 64-bit version)
OS: (include version and OS build number using WinVer if on Windows):
If using Linux, specify if using xorg or Wayland:
CPU:
GPU:
RAM:
validations:
required: true
- type: checkboxes
id: Copyright_Compliance
attributes:
label: Copyright Compliance
description: Please do not attach any files that infringe on the copyright of Nintendo or its partners.
options:
- label: There are no infringing files attached to this bug report.
required: true

9
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,9 @@
blank_issues_enabled: false
contact_links:
- name: VBA-M Forum
url: https://board.vba-m.com/
about: For general questions and support please join our forum or our
- name: VBA-M IRC Channel
url: https://web.libera.chat/#vba-m
about: For realtime discussion and support

46
.github/ISSUE_TEMPLATE/feature.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
name: Feature request
description: >-
If you would like a new feature in Visual Boy Advance - M, please
open an issue here and fill out the template.
title: '[Feature request]: '
labels:
- enhancement
assignees:
- null
body:
- type: markdown
attributes:
value: "## BEFORE CREATING A FEATURE REQUEST"
- type: markdown
attributes:
value: |
Please try a nightly build from: https://nightly.vba-m.com to see if your idea has already been implemented.
On Linux build master from source or use the edge snap.
And last but not least, search for existing requests via the filters bar on the issues page.
- type: textarea
id: feature-request
attributes:
label: Request box
description: What feature would you like to see added?
placeholder: Tell us what you would like to see added to Visual Boy Advance - M!
value: null
validations:
required: true
- type: textarea
id: reason-why
attributes:
label: Reason box
description: Provide reasoning for the new feature
placeholder: Tell us why you'd like to see this feature added
value: null
validations:
required: true
- type: textarea
id: Examples
attributes:
label: Examples
description: Provide examples of this feature
placeholder: Provide examples or screenshots of this feature in other software
value: null
validations:
required: true

27
.github/workflows/macos-build.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: macOS Latest Build
on: [push, pull_request]
#on: workflow_dispatch
jobs:
build:
strategy:
matrix:
cmake_build: ['-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_BUILD_TYPE=Debug']
cmake_options: ['', '-DENABLE_LINK=OFF', '-DENABLE_SDL=ON']
runs-on: macos-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
with:
submodules: recursive
- name: Install nix
uses: cachix/install-nix-action@v22
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Configure
run: >-
nix-shell --command 'cmake -B build -G Ninja ${{ matrix.cmake_build }} -DENABLE_LTO=OFF ${{ matrix.cmake_options }}'
- name: Build
run: >-
nix-shell --command 'ninja -C build'

View File

@@ -1,40 +1,37 @@
name: MSYS2 Build
on: [push, pull_request]
jobs:
build:
runs-on: windows-latest
env:
MSYSTEM: CLANG64
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v2
run: >-
git config --global core.autocrlf true
- uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
install: >-
mingw-w64-clang-x86_64-toolchain
mingw-w64-clang-x86_64-pkg-config
mingw-w64-clang-x86_64-ffmpeg
mingw-w64-clang-x86_64-FAudio
mingw-w64-clang-x86_64-cmake
mingw-w64-clang-x86_64-ninja
mingw-w64-clang-x86_64-wxmsw3.1
mingw-w64-clang-x86_64-sfml
mingw-w64-clang-x86_64-SDL2
zip
- name: Configure
run: >-
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DVBAM_STATIC=ON -DENABLE_SSP=ON -DENABLE_ONLINEUPDATES=OFF
- name: Build
run: ninja -C build
- name: Install
run: ninja -C build install
name: MSYS2 Build
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
cmake_build: ['-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_BUILD_TYPE=Debug']
cmake_options: ['', '-DENABLE_LINK=OFF', '-DENABLE_SDL=ON']
runs-on: windows-latest
env:
MSYSTEM: CLANG64
defaults:
run:
shell: msys2 {0}
steps:
- name: Checkout the code
uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup msys2
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
update: true
- name: Install deps
run: >-
bash installdeps
- name: Configure
run: >-
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug ${{ matrix.cmake_build }} ${{ matrix.cmake_options }}
- name: Build
run: ninja -C build
- name: Install
run: ninja -C build install

30
.github/workflows/ubuntu-build.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Ubuntu Latest Build
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
cmake_compiler: ['-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++', '-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++']
cmake_build: ['-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_BUILD_TYPE=Debug']
cmake_options: ['', '-DENABLE_LINK=OFF', '-DENABLE_SDL=ON']
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
with:
submodules: recursive
- name: Install Dependencies
run: >-
bash installdeps; if [ "${{ matrix.compiler }}" = clang ]; then sudo apt -y install clang; fi
- name: Configure
run: >-
cmake -B build -G Ninja ${{ matrix.cmake_compiler }} ${{ matrix.cmake_build }} ${{ matrix.cmake_options }}
- name: Build
run: ninja -C build
- name: Install
run: sudo ninja -C build install

View File

@@ -0,0 +1,36 @@
name: Visual Studio Build
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
msvc_arch: ['x64', 'x64_x86']
cmake_generator: ['Ninja']
# cmake_generator: ['Ninja', '"Visual Studio 17 2022"']
cmake_build: ['-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_BUILD_TYPE=Debug']
cmake_options: ['', '-DENABLE_LINK=OFF', '-DENABLE_SDL=ON']
runs-on: windows-latest
steps:
- name: Checkout the code
uses: actions/checkout@v2
with:
submodules: recursive
- name: Prepare Visual Studio environment
uses: ilammy/msvc-dev-cmd@v1.12.0
with:
arch: ${{ matrix.msvc_arch }}
- name: Configure (x64)
if: matrix.msvc_arch == 'x64'
run: >-
cmake -B build -G ${{ matrix.cmake_generator }} -DVCPKG_TARGET_TRIPLET=x64-windows-static ${{ matrix.cmake_build }} ${{ matrix.cmake_options }}
- name: Configure (x86)
if: matrix.msvc_arch == 'x64_x86'
run: >-
cmake -B build -G ${{ matrix.cmake_generator }} -DVCPKG_TARGET_TRIPLET=x86-windows-static ${{ matrix.cmake_build }} ${{ matrix.cmake_options }}
- name: Build
run: cmake --build build

6
.gitignore vendored
View File

@@ -5,7 +5,11 @@
*.so
*.dll
*.exe
.vscode
.vscode/
# clangd files
compile_commands.json
.cache/
# vim swap files
*.sw?

View File

@@ -56,7 +56,19 @@ include:
# PlayStation Vita
- project: 'libretro-infrastructure/ci-templates'
file: '/vita-static.yml'
# Nintendo GameCube
- project: 'libretro-infrastructure/ci-templates'
file: '/ngc-static.yml'
# Nintendo Wii
- project: 'libretro-infrastructure/ci-templates'
file: '/wii-static.yml'
# Nintendo WiiU
- project: 'libretro-infrastructure/ci-templates'
file: '/wiiu-static.yml'
# Nintendo Switch
- project: 'libretro-infrastructure/ci-templates'
file: '/libnx-static.yml'
@@ -164,6 +176,24 @@ libretro-build-vita:
- .libretro-vita-static-retroarch-master
- .core-defs
# Nintendo GameCube
libretro-build-ngc:
extends:
- .libretro-ngc-static-retroarch-master
- .core-defs
# Nintendo Wii
libretro-build-wii:
extends:
- .libretro-wii-static-retroarch-master
- .core-defs
# Nintendo WiiU
libretro-build-wiiu:
extends:
- .libretro-wiiu-static-retroarch-master
- .core-defs
# Nintendo Switch
libretro-build-libnx-aarch64:
extends:

11
.tx/config Normal file → Executable file
View File

@@ -1,9 +1,10 @@
[main]
host = https://www.transifex.com
[vba-m.wxvbam]
file_filter = po/wxvbam/<lang>.po
source_file = po/wxvbam/wxvbam.pot
source_lang = en
type = PO
[o:bgk:p:vba-m:r:wxvbam]
file_filter = po/wxvbam/<lang>.po
source_file = po/wxvbam/wxvbam.pot
type = PO
source_lang = en
minimum_perc = 0

View File

@@ -4,6 +4,185 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [2.1.9] - 2024-02-03
=======================
* 84b0a3e3 - Remove SDL sound driver [rkitover]
* 2ad7dd1a - Fix wav audio recording [40356555+Aikku93]
* 23ef8ef0 - Dialog appearance improvements + link warning [zachbacon]
* a0452701 - build: don't fseeko64()/ftello64() on musl libc [rkitover]
* 9e9fe812 - visualboyadvance-m.metainfo.xml: add screenshots to the metainfo [zachbacon]
## [2.1.8] - 2023-12-13
========================
* beab0881 - Store the PC register at the appropriate offset [steelskin]
* bf2452aa - Resize GameArea after MainFrame initialization [steelskin]
* 71ca0fb2 - Properly hide the status bar at startup [steelskin]
* 7e1afcd3 - Fix reading joystick hat config values [rkitover]
* 32581966 - Link: Fix menu not refreshing correctly [74248064+nuive]
## [2.1.7] - 11.09.2023
=========================
* aca206a7 - Launch on xwayland under Wayland if no EGL [rkitover]
* 93a24bee - Disable mirroring for ROMs > 32MB [rkitover]
* 0f4ec575 - [Build] Fix the NO_LINK build [steelskin]
* 803ab352 - [GB] Save MBC7 EEPROM data to `gbRam` [steelskin]
* 24b6ac5a - [GBA] Implement missing Thumb instruction [steelskin]
* 14a4b6f8 - [dialogs] Move JoypadConfig to its own class. [steelskin]
## [2.1.6] - 09.07.2023
=========================
* 7561ca97 - Fix Discord streaming for OpenGL [danialhorton]
* e26f8073 - [bios] Fix lz77 and add BIOS_SndDriverVsyncOn [steelskin]
* d1f65000 - Refactor accelerator / global shortcuts handling [steelskin]
* fda429fc - [GBA] Do not draw BG tiles from outside of BG VRAM [steelskin]
* 5aa3ea92 - Properly initialize wxAcceleratorTable [steelskin]
* 0e29be87 - Support multiple RAM sizes for MBC7 [steelskin]
* 75b79d91 - Change MBC7 reported RAM size to 512 bytes [steelskin]
* 36e88faf - Fix dsound looping when moving/resizing window [rkitover]
* 019fcda9 - Sanitize and improve the GB header parsing (#1109) [Steelskin]
* 7005b928 - Sanitize allocations in the Game Boy emulator (#1105) [Steelskin]
* 3cef52b7 - Fix pause/next-frame [rkitover]
* d3f8cc17 - Option to suspend the X11 screensaver when running [2306079+multiSnow]
* df819598 - builder: update macOS build to 10.10, Wx 3.2.2.1 [rkitover]
* 1ab46f70 - Update SIOCNT when the link driver is disconnected [steelskin]
* 1d7e8ae4 - build: fix build with new OpenAL [rkitover]
* a9284b3d - workaround for Stuart Little 2 crashing when set to none [danialhorton]
* 166299cd - Implements Read/Writes for HUC3 [danialhorton]
* 640ce453 - Change SOUND_CLOCK_TICKS to 280896 cycles - ~1074 samples per frame [reallibretroretroarch]
* f1d3f631 - Fix automatic dynamic frame skipping [steelskin]
* d756f671 - translations: fix some source strings [stanley.udr.kid]
* 91873254 - Add INI file versioning [steelskin]
* 7d9cb2b5 - Default GBA LCD filter to off. [rkitover]
* be1e5ca1 - Check for wx < 3.2.2 for EGL move fix backport [rkitover]
* 1fb18b32 - Rename appdata to metainfo [polynomial-c]
* ca7ae336 - Fix regression in bios, port DMA fix from libretro [danialhorton]
* b34448c9 - Fix record/play dialogs for native recordings [danialhorton]
* 6307348c - build: support MSVC arm64 cross build on x86 [rkitover]
* 87bdc93e - Revert "translations: use %% instead of percent" [rkitover]
* ab4ae96e - Clarify/set condition: wayland && !wayland_egl [rkitover]
* 8e4acfc9 - Fix build w/wxUSE_GLCANVAS_EGL=0, on Fedora [rkitover]
* 3c41b68d - Fix the Windows ARM64 build [steelskin]
* 22578d02 - Increase MAX_CART_SIZE from 32MiB to 128MiB [rkitover]
## [2.1.5] - 2022-12-15
=======================
* ea2a929f - Backport 800d6ed69b from wx to fix Wayland EGL pos [rkitover]
* c40a1417 - Write vsync toggle msg to debug log not OSD [rkitover]
* 5d2dd01e - Call Layout() after DrawingPanel OnSize event [rkitover]
* da686a48 - Reinit panel on vsync toggle. [rkitover]
* ec27885c - Support EGL VSync on Wayland. [rkitover]
* c27d384a - Enable GL on Wayland for wx 3.2+, no vsync. [rkitover]
* c249115b - build: set -mtune=generic [rkitover]
* 297d7c06 - [hidpi] Use wxWidgets 3.2 on Windows [steelskin]
* 0d86432a - [hidpi] Implement full HiDPI support [steelskin]
* 69d24fb5 - [build][msvc] Fix debug information and set hidpi support [steelskin]
* 90fc3e12 - Default CTRL+I to change interframe blender [rkitover]
* a57d81e1 - Show name of interframe blender not num in OSD [rkitover]
* 13c558ac - Disable wireless link type [rkitover]
* 639003a8 - Show pixel filter name not number on cycle [rkitover]
* 236cffb4 - Make another adjustment to glXQueryExtensions [rkitover]
* 643ec0f7 - Pass DefaultScreen(display) to glXQueryExtensions [rkitover]
* 60d7ead5 - Fix menu state after playing a movie [laqieer]
* d2fee771 - Add VBA Movie Version 2 [laqieer]
* 3f2d3c13 - Remove manual joystick polling [steelskin]
* 7726d26f - Enable full optimizations and fix x86 builds [danialhorton]
* 73223445 - MSVC opt /fp:fast /Oi, intrinsic sqrt() w/ XBRZ. [rkitover]
* 972f1513 - Enable GB colorization hack support in GUI. [danialhorton]
* 1741fa32 - Fix autosaveloadcheat and rename pref [danialhorton]
* a31a7a30 - in Wx, the Option is Enable MMX, make the variable also enableMMX and set its default to on. [danialhorton]
* 983ea451 - Flash : Erased memory is FFh-filled [negativeExponent]
* 18e387d1 - Fix Flash chip's erase operation: erased memory is FFh-filled, not zero-filled. [laqieer]
* c05056ab - HuC3: Update [negativeExponent]
* 93084990 - HuC3: Refactoring to avoid breaking savestates [negativeExponent]
* 05a046e7 - HuC3: Enable battery save, update RTC support [negativeExponent]
* 70477dcd - GBA:Fix serial emulation if compiled with NO_LINK [negativeExponent]
* 15bcad13 - GB:Fix serial emulation when compiled with NO_LINK [negativeExponent]
* 025f3079 - GBA:Fix a few memory read/write issues [negativeExponent]
* 210e79bb - Add descriptions for the 'Interframe Blending' and 'LCD Color Filter' options [jrb22x]
* 8a3456f8 - Default to not change battery on state load. [rkitover]
* b50ff858 - add a missing break in half word reads [danialhorton]
* 064fa7b0 - Fix SDL audio delay [Clownacy]
* 7db3c817 - Fixed SDL audio using the wrong audio specification [Clownacy]
* cb0933bf - Stop changing plane ptrs in rec. audio frames. [rkitover]
* 80634683 - Force a panel update when configuring bilinear. [briansrls]
* 6a714281 - Differentiate between SDL joy index/instance_id. [rkitover]
* 11693d83 - Clean up GB MBC30 check. [rkitover]
* 020daad8 - Fix joy accels when emulation is paused. [rkitover]
* def5d3e4 - Stop timer when game is loaded again. [rkitover]
* e0816b0e - Fix weird input/buttons memory leak. [edenisfa]
* 7031c1d1 - [LINUX,WINDOWS] Key/Joy background input. [edenisfa]
* 84f3e8ce - Allow joystick background input. [edenisfa]
* 40741580 - Add GUI cmd line option for config file. (#724) [Steelskin]
* c169420f - Turbo/throttle config and DirectSound fixes. [rkitover]
* 378c9493 - Fix joystick config when game is loaded. [rkitover]
* 95213a6d - GB: Only use mapperLastTime to see if RTC data was loaded [negativeExponent]
* 86fcffef - GB: Add support for 4MB MBC30 [negativeExponent]
* 2f9933ae - GBA BIOS: ArcTan/ArcTan2 fixes for HLE bios [negativeExponent]
* d9732f68 - Fix clock cycle count for MUL, MLA instructions... (https://github.com/libretro/vba-next/commit/b91f39c787cc99ace97546cb94985f3b658c8b57) - backport Fix clock cycle count for some arm/thumb instructions (https://github.com/libretro/vba-next/commit/5243b2d8064dd2145888ced7cbfe127594ecf6db) - backport Fix base cycle count for MUL, MLA series (https://github.com/libretro/vba-next/commit/b91f39c787cc99ace97546cb94985f3b658c8b57) [negativeExponent]
* c07d5b65 - Fix vram 16/32 bit unaligned reads(backport https://github.com/libretro/vba-next/commit/7f18771165dd4a6d71a598c51d91668920572eaa) [negativeExponent]
* 18c2ea61 - Further fixing Multi Buffer formatting. [briansrls]
* 1e569300 - Addressing audio plugin crash [briansrls]
* 9c314a15 - Use proper string `"wglGetExtensionsStringEXT"`. [edenisfa]
* 3ba05295 - Improve BIOS Math tests score from 425 to 625. [edenisfa]
* 6f2e320d - Improve clock cycle count for THUMB operations. [edenisfa]
* 9e537a8f - Improve cycle count for MUL, MLA. [edenisfa]
* 306f92f5 - Check game kbd input with wxGetKeyState() again. [rkitover]
* 6b257d52 - Avoid override of variable `throttle` for turbo. [edenisfa]
* bd2483ca - Allow changing connection type without restart. [edenisfa]
* d379a076 - Decrease mouse sensitivity for menu hiding. [rkitover]
* 0c5ee994 - Fix PNG capture screen. [edenisfa]
* 1347026d - Turbo config refactor followup. [rkitover]
* 1bced474 - Codesign fix for mac. [rkitover]
* 07064c87 - [Windows,MacOS] Auto-updater refactoring. (#639) [denisfa]
* 09e8da43 - Joystick refactor pt. Deux: Support Joysticks. [rkitover]
* 504ca08b - Hide menubar + minor UI refactor. [rkitover]
* 2868c1b7 - Fix changing aspect ratio option. [rkitover]
* 045e95ab - GB: Support 4MiB MBC30 ROM bank select. [rkitover]
* 0b14e9f8 - [WINDOWS] Add function to open unicode files. (#644) [denisfa]
* 8e3978b3 - Speedup/Turbo/Throttle fixes. [rkitover]
* 166cf446 - Disable menu LCD filter unless playing GB or GBA. [edenisfa]
* 06001069 - Init systemColorMaps after output module init. [edenisfa]
* cd029ae6 - Fix video recording with frame skip enabled. [edenisfa]
* 008aecde - [LINUX] Fix display of `RGB` values on viewers. [edenisfa]
* 834d1537 - Fix accel shortcuts when using some menu options. [edenisfa]
* 994726dd - Do not pause while opening configuration windows. [edenisfa]
* 54335dc6 - [WINDOWS] Fix weird WX errors messages. [edenisfa]
* 7bac34ed - Remove duplicate variable `winFlashSize`. [edenisfa]
* 8d62a790 - Change default options for GB. [edenisfa]
* 99b66e13 - Expose LCD filter for GBA and GB color saturation. [edenisfa]
* c789020e - Fix `Save` button on OAM Viewer for GB and GBA. [edenisfa]
* dcaa1b9a - Fix `Save` button on Tile Viewer for GB and GBA. [edenisfa]
* d05e8fc1 - Make AGBPrint output to our Logging. [edenisfa]
* abb82341 - Allow binding specific server IP. (#633) [rkitover]
* 6c64db07 - cmake: Windows codesigning refactor. [rkitover]
* 4f1a351d - Try to configure vsync for multiple options. [edenisfa]
* ed8a9af2 - Use proper functions and checks for OpenGL VSYNC. [edenisfa]
* 6092082e - Fix Save Failed error for Super Monkey Ball Jr. [54053706+negativeExponent]
* f1099a21 - Check return value of soundInit(). [rkitover]
* 410ede54 - Check for null pointer in soundReset(). [alexjnewt]
* 9d1d707c - Limit ROM size to 32 MiB. [negativeExponent]
* fd319d21 - GB: Check header for a valid ROM file. [negativeExponent]
* 513af13d - Replace `libpng` code for `stb_image` one. [edenisfa]
* 8f48c1f0 - Fix weird `wxWidgets>=3.0` error message. [edenisfa]
* 2f065382 - Enable XAudio2 for Windows vcpkg build. [rkitover]
* a3203770 - Fix: a issue with loading e-Reader dot code (#608) [sony.pcv.s520]
* 83614290 - Turn on winsparkle update checking support. [rkitover]
* 4aab08c4 - Set link timeout default to 500ms, fix prev. dflt. [rkitover]
* 136c094f - Add option to set link network port. [rkitover]
* f69febfd - Add `.wav` support for sound recording. [edenisfa]
* 6a8a9e62 - Fix integer overflow in cheatsImportGSACodeFile length check. [zack.ref]
* b50d4845 - GBA: Fix crash when new size is larger than rom size after soft-patching [negativeExponent]
* 9e1a63af - support for patches in BPS format [ArtiiP]
* 72d0725b - Allow game window to resize on-the-fly when enabling/disabling borders [negativeExponent]
* 225e4dc9 - Remove top border black line when using filters. [edenisfa]
* 0535d5c7 - Optimize CRC32. [mudlord]
* 4bc9bb84 - Implement joystick rumble. #522 [rkitover]
* 384f4487 - Fix key accel overriding menus and dialogs. [edenisfa]
* af0de1c4 - xbrz: fix inline asm check [rkitover]
## [2.1.4]
=======================
* c93e017d - builder: minor changes to support mac 32 bit (4 days ago)

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +1,6 @@
{
"configurations": [
{
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [
"msvc_x64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x64-windows -DENABLE_SDL=TRUE"
}, {
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "Release",
"inheritEnvironments": [
"msvc_x64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x64-windows -DENABLE_SDL=TRUE"
}, {
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [
"msvc_x86"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x86-windows -DENABLE_SDL=TRUE"
}, {
"name": "x86-Release",
"generator": "Ninja",
"configurationType": "Release",
"inheritEnvironments": [
"msvc_x86"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x86-windows -DENABLE_SDL=TRUE"
}, {
"name": "x64-static-Debug",
"generator": "Ninja",
"configurationType": "Debug",
@@ -60,6 +20,16 @@
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x64-windows-static -DENABLE_SDL=TRUE"
}, {
"name": "x64-static-RelWithDebInfo",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [
"msvc_x64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x64-windows-static -DENABLE_SDL=TRUE"
}, {
"name": "x86-static-Debug",
"generator": "Ninja",
@@ -80,6 +50,46 @@
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x86-windows-static -DENABLE_SDL=TRUE"
}, {
"name": "x86-static-RelWithDebInfo",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [
"msvc_x86"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=x86-windows-static -DENABLE_SDL=TRUE"
}, {
"name": "arm64-static-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [
"msvc_arm64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=arm64-windows-static -DENABLE_SDL=TRUE"
}, {
"name": "arm64-static-Release",
"generator": "Ninja",
"configurationType": "Release",
"inheritEnvironments": [
"msvc_arm64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=arm64-windows-static -DENABLE_SDL=TRUE"
}, {
"name": "arm64-static-RelWithDebInfo",
"generator": "Ninja",
"configurationType": "RelWithDebInfo",
"inheritEnvironments": [
"msvc_arm64"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "-DVCPKG_TARGET_TRIPLET=arm64-windows-static -DENABLE_SDL=TRUE"
}
]
}

View File

@@ -73,8 +73,61 @@ https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
the description of your work should be in the **commit message NOT the pull
request description**.
Make sure your git history is clean and logical, edit when necessary with
`rebase -i`.
The title line must be no more than 50 characters and the description must be
wrapped at 72 characters. Most commit message editor interfaces will help you
with this. The title line must not end with a period.
Write everything in the imperative mood, e.g. change, fix, **NOT** changes,
changed, fixed, fixes etc..
A commit message must always have a title and a description, the description
must be independent of the title line, if necessary repeat the information in
the title line in the description.
Make sure the git history in your branch is clean and logical, edit when
necessary with `rebase -i`.
Use one commit per logical change if necessary, most work can be squashed into
one commit when you are done. It is not necessary to have separate commits
per-file if they are one logical change. We are less strict about this than
other projects, fewer is better.
The commit title line should be prefixed with an area, unless it involves the
wxWidgets GUI app, in which case it should **NOT** have a prefix.
The text after the area prefix should not be capitalized.
Please use one of these area prefixes otherwise:
- doc: documentation, README.md etc.
- build: cmake, installdeps, preprocessor compatibility defines, etc.
- gb-core: the GameBoy emulator core
- gba-core: the GameBoy Advance emulator core
- libretro: the libretro core glue and build
- sdl-app: anything for the SDL app
- translations: anything related to translations
. Add other areas here if needed.
If a commit fixes a regression, use a title line such as:
```console
Fix regression <PROBLEM> in <SHORT-SHA>
```
, you can get the short sha from `git log --oneline -100` or similar.
The commit description for a regression must refer to the breaking change in
reference format, which you can get from e.g. `git log --format=reference -20`.
You can refer to github issues using `#<ISSUE-NUMBER>` freely in the description
text.
If a commit fixes an issue, add a line at the end of the description such as:
```console
Fix #<ISSUE-NUMBER>.
```
.
#### Collaboration on a Branch

View File

@@ -6,6 +6,7 @@
- [Building](#building)
- [Building a Libretro core](#building-a-libretro-core)
- [Visual Studio Support](#visual-studio-support)
- [Visual Studio Code Support](#visual-studio-code-support)
- [Dependencies](#dependencies)
- [Cross compiling for 32 bit on a 64 bit host](#cross-compiling-for-32-bit-on-a-64-bit-host)
- [Cross Compiling for Win32](#cross-compiling-for-win32)
@@ -18,22 +19,30 @@
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
[![Join the chat at https://gitter.im/visualboyadvance-m/Lobby](https://badges.gitter.im/visualboyadvance-m/Lobby.svg)](https://gitter.im/visualboyadvance-m/Lobby)
[![travis](https://travis-ci.org/visualboyadvance-m/visualboyadvance-m.svg?branch=master)](https://travis-ci.org/visualboyadvance-m/visualboyadvance-m)
[![appveyor](https://ci.appveyor.com/api/projects/status/5ckx25vct1q1ovfc?svg=true)](https://ci.appveyor.com/project/ZachBacon65337/visualboyadvance-m-2ys5r)
Our bridged Discord server is [Here](https://discord.gg/EpfxEuGMKH).
We are also on *`#vba-m`* on [Libera IRC](https://libera.chat/) which has a [Web
Chat](https://web.libera.chat/).
[![Get it from flathub](https://dl.flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/com.vba_m.visualboyadvance-m)
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/visualboyadvance-m)
***Want to know where you can install visualboyadvance-m in your linux distribution?***
[![Packaging status](https://repology.org/badge/vertical-allrepos/visualboyadvance-m.svg)](https://repology.org/project/visualboyadvance-m/versions)
# Visual Boy Advance - M
Game Boy and Game Boy Advance Emulator
The forums are [here](https://board.vba-m.com/).
The forums are [here](https://board.visualboyadvance-m.org/).
Windows and Mac builds are in the [releases tab](https://github.com/visualboyadvance-m/visualboyadvance-m/releases).
Nightly builds for Windows and macOS are at [https://nightly.vba-m.com/](https://nightly.vba-m.com/).
Nightly builds for Windows and macOS are at [https://nightly.visualboyadvance-m.org/](https://nightly.visualboyadvance-m.org/).
**PLESE TEST THE NIGHTLY OR MASTER WITH A FACTORY RESET BEFORE REPORTING
**PLEASE TEST THE NIGHTLY OR MASTER WITH A FACTORY RESET BEFORE REPORTING
ISSUES**
Your distribution may have packages available as well, search for
@@ -106,6 +115,24 @@ cmake .. -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=Debug -G N
ninja
```
## Visual Studio Code Support
Make sure the
[C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)
and [CMake
Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools)
extensions are installed.
Add the following to your `settings.json`:
```json
{
"cmake.configureOnOpen": true,
"cmake.preferredGenerators": [ "Ninja" ]
}
```
.
## Dependencies
If your OS is not supported, you will need the following:
@@ -121,10 +148,10 @@ And the following development libraries:
- [zlib](https://zlib.net/) (required)
- [mesa](https://mesa3d.org/) (if using X11 or any OpenGL otherwise)
- [ffmpeg](https://ffmpeg.org/) (optional, at least version `4.0.4`, for game recording)
- [gettext](https://www.gnu.org/software/gettext/) and gettext-tools (optional, with ENABLE_NLS)
- [gettext](https://www.gnu.org/software/gettext/) and gettext-tools
- [SDL2](https://www.libsdl.org/) (required)
- [SFML](https://www.sfml-dev.org/) (optional, for link)
- [OpenAL](https://www.openal.org/) or [openal-soft](https://kcat.strangesoft.net/openal.html) (optional, a sound interface)
- [OpenAL](https://www.openal.org/) or [openal-soft](https://kcat.strangesoft.net/openal.html) (required, a sound interface)
- [wxWidgets](https://wxwidgets.org/) (required for GUI, 2.8 and non-stl builds are no longer supported)
On Linux and similar, you also need the version of GTK your wxWidgets is linked
@@ -142,7 +169,7 @@ This is supported on Fedora, Arch, Solus and MSYS2.
`./installdeps` takes one optional parameter for cross-compiling target, which
may be `win32` which is an alias for `mingw-w64-i686` to target 32 bit Windows,
or `mingw-gw64-x86_64` for 64 bit Windows targets.
or `mingw-w64-x86_64` for 64 bit Windows targets.
The target is implicit on MSys2 depending on which MINGW shell you started (the
value of `$MSYSTEM`.)
@@ -178,7 +205,6 @@ Here is the complete list:
| ENABLE_SDL | Build the SDL port | OFF |
| ENABLE_WX | Build the wxWidgets port | ON |
| ENABLE_DEBUGGER | Enable the debugger | ON |
| ENABLE_NLS | Enable translations | ON |
| ENABLE_ASM_CORE | Enable x86 ASM CPU cores (**BUGGY AND DANGEROUS**) | OFF |
| ENABLE_ASM | Enable the following two ASM options | ON for 32 bit builds |
| ENABLE_ASM_SCALERS | Enable x86 ASM graphic filters | ON for 32 bit builds |
@@ -192,7 +218,6 @@ Here is the complete list:
| ENABLE_DIRECT3D | Direct3D rendering for wxWidgets (Windows, **NOT IMPLEMENTED!!!**) | ON |
| ENABLE_XAUDIO2 | Enable xaudio2 sound output for wxWidgets (Windows only) | ON |
| ENABLE_OPENAL | Enable OpenAL for the wxWidgets port | AUTO |
| ENABLE_SSP | Enable gcc stack protector support (gcc only) | OFF |
| ENABLE_ASAN | Enable libasan sanitizers (by default address, only in debug mode) | OFF |
| UPSTREAM_RELEASE | Do some release tasks, like codesigning, making zip and gpg sigs. | OFF |
| BUILD_TESTING | Build the tests and enable ctest support. | ON |
@@ -200,9 +225,7 @@ Here is the complete list:
| SDL2_STATIC | Try to link static SDL2 libraries | OFF |
| SFML_STATIC_LIBRARIES | Try to link static SFML libraries | OFF |
| FFMPEG_STATIC | Try to link static ffmpeg libraries | OFF |
| SSP_STATIC | Try to link static gcc stack protector library (gcc only) | OFF except Win32 |
| OPENAL_STATIC | Try to link static OpenAL libraries | OFF |
| SSP_STATIC | Link gcc stack protecter libssp statically (gcc, with ENABLE_SSP) | OFF |
| TRANSLATIONS_ONLY | Build only the translations.zip and nothing else | OFF |
Note for distro packagers, we use the CMake module

52
cmake-variants.yaml Normal file
View File

@@ -0,0 +1,52 @@
buildType:
default: debug
choices:
debug:
short: Debug
long: Emit debug information
buildType: Debug
release:
short: Release
long: Optimize generated code
buildType: Release
linkage:
default: static
choices:
static:
short: Static
long: Create static libraries
linkage: static
shared:
short: Shared
long: Create shared libraries/DLLs
linkage: shared
useLink:
default: withlink
choices:
withlink:
short: WithLink
long: Enable the Link feature
settings:
ENABLE_LINK: ON
nolink:
short: NoLink
long: Disable the Link feature
settings:
ENABLE_LINK: OFF
useDebugger:
default: withdebugger
choices:
withdebugger:
short: WithDebugger
long: Enable the Debugger feature
settings:
ENABLE_DEBUGGER: ON
nodebugger:
short: NoDebugger
long: Disable the Debugger feature
settings:
ENABLE_DEBUGGER: OFF
ENABLE_SDL: OFF

View File

@@ -21,19 +21,25 @@ elseif(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
set(BITS 64)
endif()
if(VCPKG_TARGET_TRIPLET MATCHES "^[aA][rR][mM]64")
set(CMAKE_SYSTEM_PROCESSOR ARM64)
elseif(VCPKG_TARGET_TRIPLET MATCHES "^[aA][rR][mM]-")
set(CMAKE_SYSTEM_PROCESSOR ARM)
endif()
# Turn asm on by default on 32bit x86 and set WINARCH for windows stuff.
if(CMAKE_SYSTEM_PROCESSOR MATCHES "[xX]86|i[3-9]86|[aA][mM][dD]64")
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit
set(ASM_DEFAULT ON)
set(X86_32 ON)
set(X86 ON)
set(WINARCH x86)
set(WINARCH x86)
set(ARCH_NAME x86_32)
elseif(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
set(AMD64 ON)
set(X64 ON)
set(X86_64 ON)
set(WINARCH x64)
set(WINARCH x64)
set(ARCH_NAME x86_64)
endif()
@@ -47,7 +53,13 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "[xX]86|i[3-9]86|[aA][mM][dD]64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "[aA][aA][rR][cC][hH]|[aA][rR][mM]")
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit
set(ARCH_NAME arm32)
set(WINARCH arm)
elseif(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
set(ARCH_NAME arm64)
set(WINARCH arm64)
endif()
if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "[aA][aA][rR][cC][hH]|[aA][rR][mM]")
set(CMAKE_CROSSCOMPILING TRUE)
endif()
endif()

View File

@@ -1,54 +0,0 @@
#=============================================================================
# Copyright 2010 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# support for the nasm assembler
set(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS nasm asm)
if(NOT CMAKE_ASM_NASM_OBJECT_FORMAT)
if(WIN32)
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
SET(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
else()
SET(CMAKE_ASM_NASM_OBJECT_FORMAT win32)
endif()
elseif(APPLE)
EXECUTE_PROCESS(COMMAND ${CMAKE_ASM_NASM_COMPILER} -v COMMAND awk "{print \$3}" OUTPUT_VARIABLE NASM_VERSION)
IF(NASM_VERSION VERSION_LESS 2.0)
IF(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
MESSAGE(FATAL_ERROR "Your nasm is too old to support AMD64, please install nasm from Homebrew or MacPorts.")
ENDIF()
SET(CMAKE_ASM_NAMS_OBJECT_FORMAT macho)
ELSE()
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
SET(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
else()
SET(CMAKE_ASM_NASM_OBJECT_FORMAT macho32)
endif()
ENDIF()
else()
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
SET(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
else()
SET(CMAKE_ASM_NASM_OBJECT_FORMAT elf32)
endif()
endif()
endif()
set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <DEFINES> <FLAGS> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>")
# Load the generic ASMInformation file:
set(ASM_DIALECT "_NASM")
include(CMakeASMInformation)
set(ASM_DIALECT)

View File

@@ -1,27 +0,0 @@
#=============================================================================
# Copyright 2010 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Find the nasm assembler. yasm (http://www.tortall.net/projects/yasm/) is nasm compatible
SET(CMAKE_ASM_NASM_COMPILER_INIT nasm yasm)
IF(NOT CMAKE_ASM_NASM_COMPILER)
FIND_PROGRAM(CMAKE_ASM_NASM_COMPILER nasm
"$ENV{ProgramFiles}/NASM")
ENDIF(NOT CMAKE_ASM_NASM_COMPILER)
# Load the generic DetermineASM compiler file with the DIALECT set properly:
SET(ASM_DIALECT "_NASM")
INCLUDE(CMakeDetermineASMCompiler)
SET(ASM_DIALECT)

View File

@@ -1,23 +0,0 @@
#=============================================================================
# Copyright 2010 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# This file is used by EnableLanguage in cmGlobalGenerator to
# determine that the selected ASM_NASM "compiler" works.
# For assembler this can only check whether the compiler has been found,
# because otherwise there would have to be a separate assembler source file
# for each assembler on every architecture.
SET(ASM_DIALECT "_NASM")
INCLUDE(CMakeTestASMCompiler)
SET(ASM_DIALECT)

View File

@@ -15,7 +15,6 @@
# - AVUTIL
# - POSTPROC
# - SWSCALE
# - SWRESAMPLE
# the following variables will be defined
# <component>_FOUND - System has <component>
# <component>_INCLUDE_DIRS - Include directory necessary for using the <component> headers
@@ -70,20 +69,19 @@ macro(find_component _component _pkgconfig _library _header)
find_path(${_component}_INCLUDE_DIRS ${_header}
HINTS
${PC_LIB${_component}_INCLUDEDIR}
${PC_LIB${_component}_INCLUDE_DIRS}
${PC_${_component}_INCLUDEDIR}
${PC_${_component}_INCLUDE_DIRS}
PATH_SUFFIXES
ffmpeg
)
find_library(${_component}_LIBRARIES NAMES ${_library}
HINTS
${PC_LIB${_component}_LIBDIR}
${PC_LIB${_component}_LIBRARY_DIRS}
${PC_${_component}_LIBDIR}
${PC_${_component}_LIBRARY_DIRS}
)
set(${_component}_DEFINITIONS ${PC_${_component}_CFLAGS_OTHER} CACHE STRING "The ${_component} CFLAGS.")
set(${_component}_LDFLAGS ${PC_${_component}_LDFLAGS} CACHE STRING "The ${_component} LDFLAGS.")
set(${_component}_VERSION ${PC_${_component}_VERSION} CACHE STRING "The ${_component} version number.")
set_component_found(${_component})
@@ -114,9 +112,8 @@ if (NOT FFMPEG_LIBRARIES)
foreach (_component ${FFmpeg_FIND_COMPONENTS})
if (${_component}_FOUND)
# message(STATUS "Required component ${_component} present.")
list(APPEND FFMPEG_LIBRARIES ${${_component}_LIBRARIES})
list(APPEND FFMPEG_DEFINITIONS ${${_component}_DEFINITIONS})
list(APPEND FFMPEG_LDFLAGS ${${_component}_LDFLAGS})
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${${_component}_LIBRARIES})
set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} ${${_component}_DEFINITIONS})
list(APPEND FFMPEG_INCLUDE_DIRS ${${_component}_INCLUDE_DIRS})
else ()
# message(STATUS "Required component ${_component} missing.")
@@ -130,12 +127,10 @@ if (NOT FFMPEG_LIBRARIES)
# cache the vars.
set(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS} CACHE STRING "The FFmpeg include directories." FORCE)
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} CACHE STRING "The FFmpeg libraries." FORCE)
set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} CACHE STRING "The FFmpeg CFLAGS." FORCE)
set(FFMPEG_LDFLAGS ${FFMPEG_LDFLAGS} CACHE STRING "The FFmpeg LDFLAGS." FORCE)
set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} CACHE STRING "The FFmpeg libraries." FORCE)
set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} CACHE STRING "The FFmpeg cflags." FORCE)
mark_as_advanced(FFMPEG_INCLUDE_DIRS
FFMPEG_LDFLAGS
FFMPEG_LIBRARIES
FFMPEG_DEFINITIONS)
@@ -146,18 +141,9 @@ foreach (_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWSCALE)
set_component_found(${_component})
endforeach ()
# message(STATUS "FFmpeg_FIND_COMPONENTS: ${FFmpeg_FIND_COMPONENTS}")
# message(STATUS "FFMPEG_LIBRARIES: ${FFMPEG_LIBRARIES}")
# message(STATUS "FFMPEG_LDFLAGS: ${FFMPEG_LDFLAGS}")
# message(STATUS "FFMPEG_INCLUDE_DIRS: ${FFMPEG_INCLUDE_DIRS}")
# Compile the list of required vars
set(_FFmpeg_REQUIRED_VARS FFMPEG_LIBRARIES FFMPEG_INCLUDE_DIRS)
foreach (_component ${FFmpeg_FIND_COMPONENTS})
# message(STATUS "${_component}_LIBRARIES: ${${_component}_LIBRARIES}")
# message(STATUS "${_component}_LDFLAGS: ${${_component}_LDFLAGS}")
# message(STATUS "${_component}_INCLUDE_DIRS: ${${_component}_INCLUDE_DIRS}")
list(APPEND _FFmpeg_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS)
endforeach ()

View File

@@ -1,226 +0,0 @@
# This module defines
# SDL2_LIBRARY, the name of the library to link against
# SDL2_FOUND, if false, do not try to link to SDL2
# SDL2_INCLUDE_DIR, where to find SDL.h
#
# If you have pkg-config, these extra variables are also defined:
# SDL2_DEFINITIONS, extra CFLAGS
# SDL2_EXTRA_LIBS, extra link libs
# SDL2_LINKER_FLAGS, extra link flags
#
# The latter two are automatically added to SDL2_LIBRARY
#
# To use them, add code such as:
#
# # SET(SDL2_STATIC ON) # if you want to link SDL2 statically
# FIND_PACKAGE(SDL2 REQUIRED)
# ADD_DEFINITIONS(${SDL2_DEFINITIONS})
# TARGET_LINK_LIBRARIES(your-executable-target ${SDL2_LIBRARY} ...)
#
# This module responds to the the flag:
# SDL2_BUILDING_LIBRARY
# If this is defined, then no SDL2main will be linked in because
# only applications need main().
# Otherwise, it is assumed you are building an application and this
# module will attempt to locate and set the the proper link flags
# as part of the returned SDL2_LIBRARY variable.
#
# If you want to link SDL2 statically, set SDL2_STATIC to ON.
#
# Don't forget to include SDLmain.h and SDLmain.m your project for the
# OS X framework based version. (Other versions link to -lSDL2main which
# this module will try to find on your behalf.) Also for OS X, this
# module will automatically add the -framework Cocoa on your behalf.
#
#
# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your configuration
# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library
# (SDL2.dll, libsdl2.so, SDL2.framework, etc).
# Set SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again.
# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value
# as appropriate. These values are used to generate the final SDL2_LIBRARY
# variable, but when these values are unset, SDL2_LIBRARY does not get created.
#
#
# $SDL2DIR is an environment variable that would
# correspond to the ./configure --prefix=$SDL2DIR
# used in building SDL2.
# l.e.galup 9-20-02
#
# Modified by Eric Wing.
# Added code to assist with automated building by using environmental variables
# and providing a more controlled/consistent search behavior.
# Added new modifications to recognize OS X frameworks and
# additional Unix paths (FreeBSD, etc).
# Also corrected the header search path to follow "proper" SDL guidelines.
# Added a search for SDL2main which is needed by some platforms.
# Added a search for threads which is needed by some platforms.
# Added needed compile switches for MinGW.
#
# On OSX, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of
# SDL2_LIBRARY to override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.
#
# Note that the header path has changed from SDL3/SDL.h to just SDL.h
# This needed to change because "proper" SDL convention
# is #include "SDL.h", not <SDL2/SDL.h>. This is done for portability
# reasons because not all systems place things in SDL2/ (see FreeBSD).
#=============================================================================
# Copyright 2003-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
SET(SDL2_SEARCH_PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local # Mac Homebrew and local installs
/usr
/sw # Fink
/opt/local # MacPorts
/opt/csw # OpenCSW (Solaris)
/opt
${SDL2_PATH}/include
${SDL2_PATH}/lib
)
FIND_PATH(SDL2_INCLUDE_DIR SDL.h
HINTS $ENV{SDL2DIR}
PATH_SUFFIXES SDL2
PATHS ${SDL2_SEARCH_PATHS}
)
SET(CURRENT_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
if(SDL2_STATIC)
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a)
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
endif()
unset(lib_suffix)
if(MSVC AND CMAKE_BUILD_TYPE MATCHES "^(Debug|RelWithDebInfo)$")
set(lib_suffix d)
endif()
FIND_LIBRARY(SDL2_LIBRARY_TEMP
NAMES SDL2${lib_suffix}
HINTS $ENV{SDL2DIR}
PATH_SUFFIXES lib64 lib lib/x64 lib/x86
PATHS ${SDL2_SEARCH_PATHS}
)
if(NOT (SDL2_BUILDING_LIBRARY OR ${SDL2_INCLUDE_DIR} MATCHES ".framework"))
# Non-OS X framework versions expect you to also dynamically link to
# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
# seem to provide SDL2main for compatibility even though they don't
# necessarily need it.
find_library(SDL2MAIN_LIBRARY
NAMES SDL2main${lib_suffix}
HINTS $ENV{SDL2DIR}
PATH_SUFFIXES lib64 lib lib/x64 lib/x86
PATHS ${SDL2_SEARCH_PATHS}
)
endif()
SET(CMAKE_FIND_LIBRARY_SUFFIXES ${CURRENT_FIND_LIBRARY_SUFFIXES})
UNSET(CURRENT_FIND_LIBRARY_SUFFIXES)
# SDL2 may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
IF(NOT APPLE)
FIND_PACKAGE(Threads)
ENDIF(NOT APPLE)
# MinGW needs an additional link flag, -mwindows (to make a GUI app)
# but we only add it when not making a Debug build.
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -mwindows
IF(MINGW)
SET(MINGW32_LIBRARY -lmingw32 CACHE STRING "MinGW library")
IF(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
SET(MINGW32_LIBRARY ${MINGW32_LIBRARY} -mwindows)
ENDIF()
ENDIF(MINGW)
IF(SDL2_LIBRARY_TEMP)
# For SDL2main
if(SDL2MAIN_LIBRARY AND NOT WIN32)
SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP})
endif()
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# CMake doesn't display the -framework Cocoa string in the UI even
# though it actually is there if I modify a pre-used variable.
# I think it has something to do with the CACHE STRING.
# So I use a temporary variable until the end so I can set the
# "real" variable in one-shot.
IF(APPLE)
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
ENDIF(APPLE)
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
IF(NOT APPLE)
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
ENDIF(NOT APPLE)
# For MinGW library
IF(MINGW)
SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP} -lversion -limm32)
ENDIF(MINGW)
# Add some stuff from pkg-config, if available
IF(NOT PKG_CONFIG_EXECUTABLE)
FIND_PACKAGE(PkgConfig QUIET)
ENDIF(NOT PKG_CONFIG_EXECUTABLE)
IF(PKG_CONFIG_EXECUTABLE)
# get any definitions
EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --cflags-only-other sdl2 OUTPUT_VARIABLE SDL2_DEFINITIONS ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
SET(SDL2_DEFINITIONS ${SDL2_DEFINITIONS} CACHE STRING "Extra CFLAGS for SDL2 from pkg-config")
# get any extra stuff needed for linking
IF(NOT SDL2_STATIC)
EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --libs-only-other sdl2 OUTPUT_VARIABLE SDL2_LINKER_FLAGS_RAW ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --libs-only-l sdl2 OUTPUT_VARIABLE SDL2_EXTRA_LIBS_RAW ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
ELSE(NOT SDL2_STATIC)
EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --static --libs-only-other sdl2 OUTPUT_VARIABLE SDL2_LINKER_FLAGS_RAW ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --static --libs-only-l sdl2 OUTPUT_VARIABLE SDL2_EXTRA_LIBS_RAW ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
ENDIF(NOT SDL2_STATIC)
STRING(REGEX REPLACE "[^ ]+SDL2[^ ]*" "" SDL2_EXTRA_LIBS_RAW2 "${SDL2_EXTRA_LIBS_RAW}")
STRING(REGEX REPLACE " +" ";" SDL2_EXTRA_LIBS "${SDL2_EXTRA_LIBS_RAW2}")
STRING(REGEX REPLACE " +" ";" SDL2_LINKER_FLAGS "${SDL2_LINKER_FLAGS_RAW}")
SET(SDL2_LINKER_FLAGS ${SDL2_LINKER_FLAGS} CACHE STRING "Linker flags for linking SDL2")
SET(SDL2_EXTRA_LIBS ${SDL2_EXTRA_LIBS} CACHE STRING "Extra libraries for linking SDL2")
SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${SDL2_EXTRA_LIBS} ${SDL2_LINKER_FLAGS})
ENDIF(PKG_CONFIG_EXECUTABLE)
# Set the final string here so the GUI reflects the final state.
SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found")
# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "")
ENDIF(SDL2_LIBRARY_TEMP)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)

View File

@@ -57,7 +57,7 @@
# define the SFML_STATIC macro if static build was chosen
if(SFML_STATIC_LIBRARIES)
add_definitions(-DSFML_STATIC)
add_compile_definitions(SFML_STATIC)
endif()
# define the list of search paths for headers and libraries
@@ -89,9 +89,9 @@ if(SFML_FIND_VERSION AND SFML_INCLUDE_DIR)
set(SFML_CONFIG_HPP_INPUT "${SFML_INCLUDE_DIR}/SFML/Config.hpp")
endif()
FILE(READ "${SFML_CONFIG_HPP_INPUT}" SFML_CONFIG_HPP_CONTENTS)
STRING(REGEX REPLACE ".*#define SFML_VERSION_MAJOR ([0-9]+).*" "\\1" SFML_VERSION_MAJOR "${SFML_CONFIG_HPP_CONTENTS}")
STRING(REGEX REPLACE ".*#define SFML_VERSION_MINOR ([0-9]+).*" "\\1" SFML_VERSION_MINOR "${SFML_CONFIG_HPP_CONTENTS}")
STRING(REGEX REPLACE ".*#define SFML_VERSION_PATCH ([0-9]+).*" "\\1" SFML_VERSION_PATCH "${SFML_CONFIG_HPP_CONTENTS}")
STRING(REGEX REPLACE ".*#define *SFML_VERSION_MAJOR *([0-9]+).*" "\\1" SFML_VERSION_MAJOR "${SFML_CONFIG_HPP_CONTENTS}")
STRING(REGEX REPLACE ".*#define *SFML_VERSION_MINOR *([0-9]+).*" "\\1" SFML_VERSION_MINOR "${SFML_CONFIG_HPP_CONTENTS}")
STRING(REGEX REPLACE ".*#define *SFML_VERSION_PATCH *([0-9]+).*" "\\1" SFML_VERSION_PATCH "${SFML_CONFIG_HPP_CONTENTS}")
if (NOT "${SFML_VERSION_PATCH}" MATCHES "^[0-9]+$")
set(SFML_VERSION_PATCH 0)
endif()

View File

@@ -1,76 +0,0 @@
# FindSSP.cmake
#
# Find libssp necessary when using gcc with e.g. -fstack-protector=strong
#
# See: http://wiki.osdev.org/Stack_Smashing_Protector
#
# To use:
#
# put a copy into your <project_root>/cmake/
#
# In your main CMakeLists.txt do something like this:
#
# if(WIN32)
# set(SSP_STATIC ON)
# endif()
#
# find_package(SSP)
#
# if(SSP_LIBRARY)
# set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} ${SSP_LIBRARY}")
# set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} ${SSP_LIBRARY}")
# endif()
# only do this when compiling with gcc/g++
if(NOT CMAKE_COMPILER_IS_GNUCXX)
return()
endif()
function(FindSSP)
if(NOT CMAKE_CXX_COMPILER AND CMAKE_C_COMPILER)
set(CMAKE_CXX_COMPILER ${CMAKE_C_COMPILER})
endif()
foreach(arg ${CMAKE_CXX_COMPILER_ARG1} ${CMAKE_CXX_COMPILER_ARG2} ${CMAKE_CXX_COMPILER_ARG3} ${CMAKE_CXX_COMPILER_ARG4} ${CMAKE_CXX_COMPILER_ARG5} ${CMAKE_CXX_COMPILER_ARG6} ${CMAKE_CXX_COMPILER_ARG7} ${CMAKE_CXX_COMPILER_ARG8} ${CMAKE_CXX_COMPILER_ARG9})
string(STRIP ${arg} arg)
set(gcc_args "${gcc_args};${arg}")
endforeach()
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${gcc_args} --print-prog-name=gcc OUTPUT_VARIABLE GCC_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
if(WIN32 AND NOT MSYS)
execute_process(COMMAND where.exe ${GCC_EXECUTABLE} OUTPUT_VARIABLE GCC_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
execute_process(COMMAND sh -c "command -v ${GCC_EXECUTABLE}" OUTPUT_VARIABLE GCC_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
get_filename_component(GCC_DIRNAME "${GCC_EXECUTABLE}" DIRECTORY)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${gcc_args} --print-libgcc-file-name OUTPUT_VARIABLE LIBGCC_FILE OUTPUT_STRIP_TRAILING_WHITESPACE)
get_filename_component(LIBGCC_DIRNAME "${LIBGCC_FILE}" DIRECTORY)
set(SSP_SEARCH_PATHS ${GCC_DIRNAME} ${LIBGCC_DIRNAME})
if(SSP_STATIC)
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a)
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
endif()
find_library(SSP_LIBRARY
NAMES ssp libssp
HINTS ${SSP_SEARCH_PATHS}
PATH_SUFFIXES lib64 lib lib/x64 lib/x86
)
set(SSP_LIBRARY PARENT_SCOPE)
endfunction()
FindSSP()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SSP REQUIRED_VARS SSP_LIBRARY)

View File

@@ -7,23 +7,6 @@
#
# Returns the refspec and sha hash of the current head revision
#
# git_describe(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe on the source tree, and adjusting
# the output so that it tests false if an error occurs.
#
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe --exact-match on the source tree,
# and adjusting the output so that it tests false if there was no exact
# matching tag.
#
# git_local_changes(<var>)
#
# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
# Uses the return code of "git diff-index --quiet HEAD --".
# Does not regard untracked files.
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
@@ -85,84 +68,3 @@ function(get_git_head_revision _refspecvar _hashvar)
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
endfunction()
function(git_describe _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
get_git_head_revision(refspec hash)
if(NOT GIT_FOUND)
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
return()
endif()
if(NOT hash)
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
return()
endif()
# TODO sanitize
#if((${ARGN}" MATCHES "&&") OR
# (ARGN MATCHES "||") OR
# (ARGN MATCHES "\\;"))
# message("Please report the following error to the project!")
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
#endif()
#message(STATUS "Arguments to execute_process: ${ARGN}")
execute_process(COMMAND
"${GIT_EXECUTABLE}"
describe
${hash}
${ARGN}
WORKING_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE
res
OUTPUT_VARIABLE
out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res EQUAL 0)
set(out "${out}-${res}-NOTFOUND")
endif()
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
function(git_get_exact_tag _var)
git_describe(out --exact-match ${ARGN})
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
function(git_local_changes _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
get_git_head_revision(refspec hash)
if(NOT GIT_FOUND)
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
return()
endif()
if(NOT hash)
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
return()
endif()
execute_process(COMMAND
"${GIT_EXECUTABLE}"
diff-index --quiet HEAD --
WORKING_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE
res
OUTPUT_VARIABLE
out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(res EQUAL 0)
set(${_var} "CLEAN" PARENT_SCOPE)
else()
set(${_var} "DIRTY" PARENT_SCOPE)
endif()
endfunction()

View File

@@ -3,10 +3,9 @@ function(git_version version revision version_release)
set(${revision} "" CACHE STRING "Latest Git Tag Revision" FORCE)
set(${version_release} 0 CACHE STRING "Is this a versioned release without revision" FORCE)
find_package(Git)
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
# get latest version from tag history
execute_process(COMMAND "${GIT_EXECUTABLE}" tag "--format=%(align:width=20)%(refname:short)%(end)%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end)" --sort=-creatordate OUTPUT_VARIABLE tags OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
execute_process(COMMAND "${GIT_EXECUTABLE}" tag "--format=%(align:width=20)%(refname:short)%(end)%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end)" --sort=-v:refname OUTPUT_VARIABLE tags OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
# if no tags (e.g. shallow clone) do nothing
if(tags STREQUAL "")

View File

@@ -1,23 +1,34 @@
function(host_compile src dst_cmd)
if(CMAKE_CROSSCOMPILING)
unset(link_flags)
set(dst "${dst_cmd}")
if(CMAKE_HOST_WIN32)
set(dst "${dst_cmd}.exe")
if(CMAKE_COMPILER_IS_GNUCXX)
set(link_flags -Wl,--subsystem,console)
endif()
else()
set(dst ${dst_cmd})
endif()
# assume cc foo.c -o foo # will work on most hosts
add_custom_command(
OUTPUT ${dst}
COMMAND cc ${src} -o ${dst} ${link_flags}
DEPENDS ${src}
)
if(MSVC)
set(msvc_compile_script ${CMAKE_SOURCE_DIR}/cmake/MSVC_x86_Host_Compile.cmake)
add_custom_command(
OUTPUT ${dst}
DEPENDS ${src} ${msvc_compile_script}
COMMAND ${CMAKE_COMMAND} -D "src=${src}" -D "dst=${dst}" -P ${msvc_compile_script}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
else()
set(dst ${dst_cmd})
# Assume: cc foo.c -o foo # will work on most hosts
add_custom_command(
OUTPUT ${dst}
DEPENDS ${src}
COMMAND cc ${src} -o ${dst} ${link_flags}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
endif()
else()
get_filename_component(dst ${dst_cmd} NAME)

View File

@@ -1,44 +0,0 @@
function(use_llvm_toolchain)
if(CMAKE_C_COMPILER_ID STREQUAL Clang)
set(compiler "${CMAKE_C_COMPILER}")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(compiler "${CMAKE_CXX_COMPILER}")
else()
return()
endif()
foreach(tool ar ranlib ld nm objdump as)
execute_process(
COMMAND "${compiler}" -print-prog-name=llvm-${tool}
OUTPUT_VARIABLE prog_path
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# for FreeBSD
if(NOT prog_path MATCHES "^/")
get_filename_component(
abs_path ${prog_path} ABSOLUTE
BASE_DIR /usr/local/llvm-devel/bin
)
if(EXISTS ${abs_path})
set(prog_path ${abs_path})
endif()
endif()
if(prog_path MATCHES "^/")
if(tool STREQUAL ld)
set(tool linker)
elseif(tool STREQUAL as)
set(tool asm_compiler)
endif()
string(TOUPPER ${tool} utool)
set(CMAKE_${utool} "${prog_path}" PARENT_SCOPE)
set(CMAKE_${utool} "${prog_path}" CACHE FILEPATH "${tool}" FORCE)
endif()
endforeach()
endfunction()
use_llvm_toolchain()

View File

@@ -0,0 +1,24 @@
# This is a hack to be run with cmake -P to compile a source C program passed
# in `src` to the `dst` executable using the host MSVC x86 toolchain.
find_program(cl_path NAME cl.exe HINTS ENV PATH)
string(REGEX REPLACE "[^/]+/cl\\.exe$" "x86/cl.exe" cl_path "${cl_path}")
set(orig_lib "$ENV{LIB}")
set(new_lib)
foreach(lib $ENV{LIB})
string(REGEX REPLACE "[^\\]+$" "x86" lib "${lib}")
list(APPEND new_lib "${lib}")
endforeach()
set(ENV{LIB} "${new_lib}")
execute_process(
COMMAND ${cl_path} /nologo ${src} /Fe:${dst}
OUTPUT_QUIET
)
set(ENV{LIB} "${orig_lib}")

View File

@@ -62,6 +62,8 @@ IF(EXISTS /usr/local/bin/brew AND $ENV{PATH} MATCHES "(^|:)/usr/local/bin/?(:|$)
LINK_DIRECTORIES("/usr/local/lib")
SET(CMAKE_PROGRAM_PATH /usr/local/bin ${CMAKE_PROGRAM_PATH})
set(ZLIB_ROOT /usr/local/opt/zlib)
ELSEIF(EXISTS /opt/local/bin/port AND $ENV{PATH} MATCHES "(^|:)/opt/local/bin/?(:|$)")
MESSAGE("-- Configuring for MacPorts")

View File

@@ -10,8 +10,6 @@ if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git")
message(FATAL_ERROR "releases can only be done from a git clone")
endif()
find_package(Git)
if(NOT GIT_FOUND)
message(FATAL_ERROR "git is required to make a release")
endif()
@@ -186,10 +184,12 @@ Ignore the following cmake error.
endwhile()
# Convert to UNIX line endings on Windows, just copy the file otherwise.
if(CMAKE_HOST_SYSTEM MATCHES Windows OR ((NOT DEFINED CMAKE_HOST_SYSTEM) AND WIN32))
if(NOT DEFINED POWERSHELL)
message(FATAL_ERROR "Powershell is required to convert line endings on Windows.")
endif()
execute_process(
COMMAND powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command [=[
COMMAND ${POWERSHELL} -NoLogo -NoProfile -ExecutionPolicy Bypass -Command [=[
$text = [IO.File]::ReadAllText("CHANGELOG.md.work") -replace "`r`n", "`n"
[IO.File]::WriteAllText("CHANGELOG.md", $text)
]=]

141
cmake/Options.cmake Normal file
View File

@@ -0,0 +1,141 @@
option(BUILD_TESTING "Build testing" ON)
option(BUILD_SHARED_LIBS "Build dynamic libraries" OFF)
option(TRANSLATIONS_ONLY "Build only the translations.zip" OFF)
if(TRANSLATIONS_ONLY)
set(BUILD_DEFAULT OFF)
else()
set(BUILD_DEFAULT ON)
endif()
option(ENABLE_SDL "Build the SDL port" ${BUILD_DEFAULT})
option(ENABLE_WX "Build the wxWidgets port" ${BUILD_DEFAULT})
option(ENABLE_DEBUGGER "Enable the debugger" ON)
option(ENABLE_ASAN "Enable -fsanitize=address by default. Requires debug build with GCC/Clang" OFF)
# Static linking
set(VBAM_STATIC_DEFAULT OFF)
if(VCPKG_TARGET_TRIPLET MATCHES -static OR CMAKE_TOOLCHAIN_FILE MATCHES "mxe|-static")
set(VBAM_STATIC_DEFAULT ON)
elseif(MINGW OR (NOT "$ENV{MSYSTEM_PREFIX}" STREQUAL ""))
# Default to static builds on MinGW and all MSYS2 envs.
set(VBAM_STATIC_DEFAULT ON)
endif()
option(VBAM_STATIC "Try to link all libraries statically" ${VBAM_STATIC_DEFAULT})
if(VBAM_STATIC)
set(SDL2_STATIC ON)
set(SFML_STATIC_LIBRARIES ON)
set(FFMPEG_STATIC ON)
set(OPENAL_STATIC ON)
set_property(GLOBAL PROPERTY LINK_SEARCH_START_STATIC ON)
set_property(GLOBAL PROPERTY LINK_SEARCH_END_STATIC ON)
if(MSVC)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib)
else()
list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .a)
endif()
endif()
option(ENABLE_ASM "Enable x86 ASM related options" OFF)
# The ARM ASM core seems to be very buggy, see #98 and #54. Default to it being
# OFF for the time being, until it is either fixed or replaced.
option(ENABLE_ASM_CORE "Enable x86 ASM CPU cores (EXPERIMENTAL)" OFF)
set(ASM_SCALERS_DEFAULT ${ENABLE_ASM})
set(MMX_DEFAULT ${ENABLE_ASM})
option(ENABLE_ASM_SCALERS "Enable x86 ASM graphic filters" ${ASM_SCALERS_DEFAULT})
include(CMakeDependentOption)
cmake_dependent_option(ENABLE_MMX "Enable MMX" ${MMX_DEFAULT} "ENABLE_ASM_SCALERS" OFF)
option(ENABLE_LIRC "Enable LIRC support" OFF)
# Link / SFML
find_package(SFML 2.4 COMPONENTS network system)
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
if(SFML_STATIC_LIBRARIES AND SFML_NETWORK_LIBRARY_STATIC_DEBUG AND SFML_SYSTEM_LIBRARY_STATIC_DEBUG)
set(SFML_LIBRARIES ${SFML_NETWORK_LIBRARY_STATIC_DEBUG} ${SFML_SYSTEM_LIBRARY_STATIC_DEBUG})
elseif(SFML_NETWORK_LIBRARY_DYNAMIC_DEBUG AND SFML_SYSTEM_LIBRARY_DYNAMIC_DEBUG)
set(SFML_LIBRARIES ${SFML_NETWORK_LIBRARY_DYNAMIC_DEBUG} ${SFML_SYSTEM_LIBRARY_DYNAMIC_DEBUG})
endif()
endif()
set(ENABLE_LINK_DEFAULT OFF)
if(SFML_FOUND)
set(ENABLE_LINK_DEFAULT ON)
endif()
option(ENABLE_LINK "Enable GBA linking functionality" ${ENABLE_LINK_DEFAULT})
# FFMpeg
set(FFMPEG_DEFAULT OFF)
set(FFMPEG_COMPONENTS AVCODEC AVFORMAT SWSCALE AVUTIL SWRESAMPLE)
set(FFMPEG_COMPONENT_VERSIONS AVCODEC>=58.18.100 AVFORMAT>=58.12.100 SWSCALE>=5.1.100 AVUTIL>=56.14.100 SWRESAMPLE>=3.1.100)
if(NOT DEFINED ENABLE_FFMPEG OR ENABLE_FFMPEG)
set(FFMPEG_DEFAULT ON)
find_package(FFmpeg COMPONENTS ${FFMPEG_COMPONENTS})
# check versions, but only if pkgconfig is available
if(FFMPEG_FOUND AND PKG_CONFIG_FOUND AND NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
foreach(component ${FFMPEG_COMPONENT_VERSIONS})
string(REPLACE ">=" ";" parts ${component})
list(GET parts 0 name)
list(GET parts 1 version)
if((NOT DEFINED ${name}_VERSION) OR ${name}_VERSION VERSION_LESS ${version})
set(FFMPEG_FOUND OFF)
endif()
endforeach()
endif()
if(NOT FFMPEG_FOUND)
set(FFMPEG_DEFAULT OFF)
endif()
endif()
option(ENABLE_FFMPEG "Enable ffmpeg A/V recording" ${FFMPEG_DEFAULT})
# Online Updates
set(ONLINEUPDATES_DEFAULT OFF)
if(DEFINED(UPSTREAM_RELEASE) AND UPSTREAM_RELEASE)
set(ONLINEUPDATES_DEFAULT ON)
endif()
option(ENABLE_ONLINEUPDATES "Enable online update checks" ${ONLINEUPDATES_DEFAULT})
option(HTTPS "Use https URL for winsparkle" ON)
# We generally don't want LTO when debugging because it makes linking slow
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(LTO_DEFAULT OFF)
else()
set(LTO_DEFAULT ON)
endif()
option(ENABLE_LTO "Compile with Link Time Optimization" ${LTO_DEFAULT})
option(ENABLE_GBA_LOGGING "Enable extended GBA logging" ON)
# Add support for Homebrew, MacPorts and Fink on macOS
option(DISABLE_MACOS_PACKAGE_MANAGERS "Set to TRUE to disable support for macOS Homebrew, MacPorts and Fink." FALSE)
if(APPLE AND NOT DISABLE_MACOS_PACKAGE_MANAGERS)
include(MacPackageManagers)
endif()
option(UPSTREAM_RELEASE "do some optimizations and release automation tasks" OFF)
if(WIN32)
# not yet implemented
option(ENABLE_DIRECT3D "Enable Direct3D rendering for the wxWidgets port" OFF)
set(XAUDIO2_DEFAULT ON)
if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
# TODO: We should update the XAudio headers to build with clang-cl. See
# https://github.com/visualboyadvance-m/visualboyadvance-m/issues/1021
set(XAUDIO2_DEFAULT OFF)
endif()
option(ENABLE_XAUDIO2 "Enable xaudio2 sound output for the wxWidgets port" ${XAUDIO2_DEFAULT})
endif()
option(ENABLE_FAUDIO "Enable FAudio sound output for the wxWidgets port" OFF)
option(ZIP_SUFFIX [=[suffix for release zip files, e.g. "-somebranch".zip]=] OFF)

View File

@@ -1,16 +0,0 @@
function(make_path_run_wrapper cmd target)
get_filename_component(name "${target}" NAME)
get_filename_component(cmd_resolved "${cmd}" REALPATH)
get_filename_component(base_name "${cmd_resolved}" NAME)
get_filename_component(dir_name "${cmd_resolved}" DIRECTORY)
set(source "${target}.c")
configure_file(src/gcc-wrap.c.in "${source}")
include(HostCompile)
host_compile("${source}" "${target}")
add_custom_target(generate_${name} DEPENDS "${CMAKE_BINARY_DIR}/${name}")
add_dependencies(generate generate_${name})
endfunction()

View File

@@ -0,0 +1,13 @@
# Remove StrawberryPerl from the PATH environment variable due to various build
# pollution.
unset(new_path)
foreach(p $ENV{PATH})
if(NOT p MATCHES "(^|\\\\)[Ss]trawberry\\\\([Pp]erl|[Cc])\\\\(.*\\\\)?[Bb]in$")
list(APPEND new_path ${p})
endif()
endforeach()
set(ENV{PATH} "${new_path}")
# vim:sw=4 et sts=4 ts=8:

View File

@@ -1,35 +1,55 @@
if(POLICY CMP0012)
cmake_policy(SET CMP0012 NEW) # Saner if() behavior.
endif()
if(NOT DEFINED VCPKG_TARGET_TRIPLET)
return()
endif()
function(vcpkg_seconds)
if(CMAKE_HOST_SYSTEM MATCHES Windows OR ((NOT DEFINED CMAKE_HOST_SYSTEM) AND WIN32))
execute_process(
COMMAND cmd /c echo %TIME:~0,8%
OUTPUT_VARIABLE time
)
else()
execute_process(
COMMAND date +'%H:%M:%S'
OUTPUT_VARIABLE time
)
if(NOT WIN32)
return()
endif()
string(SUBSTRING "${time}" 0 2 hours)
string(SUBSTRING "${time}" 3 2 minutes)
string(SUBSTRING "${time}" 6 2 secs)
# Check if we are in an MSVC environment.
find_program(cl_exe_path NAME cl.exe HINTS ENV PATH)
math(EXPR seconds "(${hours} * 60 * 60) + (${minutes} * 60) + ${secs}")
if($ENV{CXX} MATCHES "cl.exe$" OR cl_exe_path)
# Infer the architecture from the LIB folders.
foreach(LIB $ENV{LIB})
if(${LIB} MATCHES "x64$")
set(VBAM_VCPKG_PLATFORM "x64-windows-static")
break()
endif()
if(${LIB} MATCHES "x86$")
set(VBAM_VCPKG_PLATFORM "x86-windows-static")
break()
endif()
if(${LIB} MATCHES "ARM64$")
set(VBAM_VCPKG_PLATFORM "arm64-windows-static")
break()
endif()
endforeach()
set(seconds ${seconds} PARENT_SCOPE)
endfunction()
# If all else fails, try to use a sensible default.
if(NOT DEFINED VBAM_VCPKG_PLATFORM)
set(VBAM_VCPKG_PLATFORM "x64-windows-static")
endif()
unset(cl_exe_path)
elseif (NOT DEFINED CMAKE_CXX_COMPILER)
# No way to infer the compiler.
return()
elseif(${CMAKE_CXX_COMPILER} MATCHES "clang-cl.exe$" OR ${CMAKE_CXX_COMPILER} MATCHES "clang-cl$")
# For stand-alone clang-cl, assume x64.
set(VBAM_VCPKG_PLATFORM "x64-windows-static")
endif()
if (NOT DEFINED VBAM_VCPKG_PLATFORM)
# Probably not an MSVC environment.
return()
endif()
set(VCPKG_TARGET_TRIPLET ${VBAM_VCPKG_PLATFORM} CACHE STRING "Vcpkg target triplet (ex. x64-windows-static)" FORCE)
message(STATUS "Inferred VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}")
endif()
function(vcpkg_check_git_status git_status)
if(NOT git_status EQUAL 0)
# The VS vcpkg component cannot be written to without elevation.
if(NOT git_status EQUAL 0 AND NOT VCPKG_ROOT MATCHES "^C:/Program Files/Microsoft Visual Studio/")
message(FATAL_ERROR "Error updating vcpkg from git, please make sure git for windows is installed correctly, it can be installed from Visual Studio components")
endif()
endfunction()
@@ -86,6 +106,201 @@ function(vcpkg_deps_fixup vcpkg_exe)
endif()
endfunction()
function(vcpkg_is_installed vcpkg_exe pkg_name pkg_ver pkg_triplet powershell outvar)
set(${outvar} FALSE PARENT_SCOPE)
unset(CMAKE_MATCH_1)
string(REGEX REPLACE "-r([0-9]+)\$" "" pkg_ver ${pkg_ver})
set(pkg_rev ${CMAKE_MATCH_1})
string(REPLACE "-" "." pkg_ver ${pkg_ver})
if(NOT DEFINED VCPKG_INSTALLED_COUNT)
if(VCPKG_ROOT MATCHES "^C:/Program Files/Microsoft Visual Studio/")
execute_process(
COMMAND ${powershell}
-executionpolicy bypass -noprofile
-command "import-module '${CMAKE_BINARY_DIR}/vcpkg-binpkg/vcpkg-binpkg.psm1'; vcpkg-list"
OUTPUT_VARIABLE vcpkg_list_text
)
else()
execute_process(
COMMAND ${vcpkg_exe} list
OUTPUT_VARIABLE vcpkg_list_text
ERROR_QUIET
)
endif()
string(REGEX REPLACE "\r?\n" ";" vcpkg_list_raw "${vcpkg_list_text}")
set(VCPKG_INSTALLED_COUNT 0 PARENT_SCOPE)
foreach(pkg ${vcpkg_list_raw})
if(NOT pkg MATCHES "^([^:[]+)[^:]*:([^ ]+) +([0-9][^ ]*) +.*\$")
continue()
endif()
set(inst_pkg_name ${CMAKE_MATCH_1})
set(inst_pkg_ver ${CMAKE_MATCH_3})
set(inst_pkg_triplet ${CMAKE_MATCH_2})
unset(CMAKE_MATCH_1)
string(REGEX REPLACE "#([0-9]+)\$" "" inst_pkg_ver ${inst_pkg_ver})
if(CMAKE_MATCH_1)
set(inst_pkg_rev ${CMAKE_MATCH_1})
else()
set(inst_pkg_rev FALSE)
endif()
string(REPLACE "-" "." inst_pkg_ver ${inst_pkg_ver})
list(APPEND VCPKG_INSTALLED ${inst_pkg_name} ${inst_pkg_ver} ${inst_pkg_rev} ${inst_pkg_triplet})
math(EXPR VCPKG_INSTALLED_COUNT "${VCPKG_INSTALLED_COUNT} + 1")
endforeach()
set(VCPKG_INSTALLED ${VCPKG_INSTALLED} PARENT_SCOPE)
set(VCPKG_INSTALLED_COUNT ${VCPKG_INSTALLED_COUNT} PARENT_SCOPE)
endif()
if(NOT VCPKG_INSTALLED_COUNT GREATER 0)
return()
endif()
math(EXPR idx_max "(${VCPKG_INSTALLED_COUNT} - 1) * 4")
foreach(idx RANGE 0 ${idx_max} 4)
math(EXPR idx_ver "${idx} + 1")
math(EXPR idx_rev "${idx} + 2")
math(EXPR idx_triplet "${idx} + 3")
list(GET VCPKG_INSTALLED ${idx} inst_pkg_name)
list(GET VCPKG_INSTALLED ${idx_ver} inst_pkg_ver)
list(GET VCPKG_INSTALLED ${idx_rev} inst_pkg_rev)
list(GET VCPKG_INSTALLED ${idx_triplet} inst_pkg_triplet)
if(NOT inst_pkg_triplet STREQUAL pkg_triplet)
continue()
endif()
if(inst_pkg_name STREQUAL pkg_name
AND pkg_ver VERSION_LESS inst_pkg_ver
OR (pkg_ver VERSION_EQUAL inst_pkg_ver
AND ((NOT pkg_rev AND NOT inst_pkg_rev)
OR (pkg_rev AND inst_pkg_rev AND (NOT pkg_rev GREATER inst_pkg_rev)))))
set(${outvar} TRUE PARENT_SCOPE)
return()
endif()
endforeach()
endfunction()
function(get_binary_packages vcpkg_exe)
set(binary_packages_installed FALSE PARENT_SCOPE)
unset(triplets)
unset(host_triplet)
# Determine host triplet for vcpkg build dependencies
if(WIN32)
if($ENV{PROCESSOR_ARCHITECTURE} MATCHES "[Aa][Rr][Mm]64")
set(host_triplet "arm64-windows")
elseif($ENV{PROCESSOR_ARCHITECTURE} MATCHES "[Aa][Mm][Dd]64|[Xx]64")
set(host_triplet "x64-windows")
else()
set(host_triplet "x86-windows")
endif()
endif()
if(DEFINED host_triplet)
list(APPEND triplets ${host_triplet})
endif()
list(APPEND triplets ${VCPKG_TARGET_TRIPLET})
foreach(triplet ${triplets})
file(
DOWNLOAD "https://nightly.visualboyadvance-m.org/vcpkg/${triplet}/" "${CMAKE_BINARY_DIR}/binary_package_list_${triplet}.html"
STATUS pkg_list_status
)
list(GET pkg_list_status 1 pkg_list_error)
list(GET pkg_list_status 0 pkg_list_status)
if(NOT pkg_list_status EQUAL 0)
message(STATUS "Failed to download vcpkg binary package list: ${pkg_list_status} - ${pkg_list_error}")
return()
endif()
endforeach()
unset(binary_packages)
foreach(triplet ${triplets})
file(READ "${CMAKE_BINARY_DIR}/binary_package_list_${triplet}.html" raw_html)
string(REGEX MATCHALL "<a href=\"[^\"]+[.]zip\"" links ${raw_html})
foreach(link ${links})
string(REGEX REPLACE "<a href=\"([^\"]+[.]zip)\"" "\\1" pkg ${link})
list(APPEND binary_packages ${pkg})
endforeach()
endforeach()
set(vcpkg_binpkg_dir ${CMAKE_BINARY_DIR}/vcpkg-binpkg)
include(FetchContent)
FetchContent_Declare(
vcpkg_binpkg
URL "https://github.com/rkitover/vcpkg-binpkg-prototype/archive/refs/heads/master.zip"
SOURCE_DIR ${vcpkg_binpkg_dir}
)
FetchContent_GetProperties(vcpkg_binpkg)
if(NOT vcpkg_binpkg_POPULATED)
FetchContent_Populate(vcpkg_binpkg)
endif()
unset(to_install)
foreach(pkg ${binary_packages})
if(NOT pkg MATCHES "([^_]+)_([^_]+)_([^.]+)[.]zip")
continue()
endif()
set(pkg_name ${CMAKE_MATCH_1})
set(pkg_version ${CMAKE_MATCH_2})
set(pkg_triplet ${CMAKE_MATCH_3})
vcpkg_is_installed(${vcpkg_exe} ${pkg_name} ${pkg_version} ${pkg_triplet} ${POWERSHELL} pkg_installed)
if(NOT pkg_installed)
list(APPEND to_install ${pkg})
endif()
endforeach()
if(to_install)
set(bin_pkgs_dir ${CMAKE_BINARY_DIR}/vcpkg-binary-packages)
file(MAKE_DIRECTORY ${bin_pkgs_dir})
foreach(pkg ${to_install})
string(REGEX REPLACE "^[^_]+_[^_]+_([^.]+)[.]zip\$" "\\1" pkg_triplet ${pkg})
message(STATUS "Downloading https://nightly.visualboyadvance-m.org/vcpkg/${pkg_triplet}/${pkg} ...")
file(
DOWNLOAD "https://nightly.visualboyadvance-m.org/vcpkg/${pkg_triplet}/${pkg}" "${bin_pkgs_dir}/${pkg}"
STATUS pkg_download_status
)
list(GET pkg_download_status 1 pkg_download_error)
list(GET pkg_download_status 0 pkg_download_status)
if(NOT pkg_download_status EQUAL 0)
message(STATUS "Failed to download vcpkg binary package '${pkg}': ${pkg_download_status} - ${pkg_download_error}")
return()
endif()
message(STATUS "done.")
endforeach()
# -command "import-module ($env:USERPROFILE + '/source/repos/vcpkg-binpkg-prototype/vcpkg-binpkg.psm1'); vcpkg-instpkg ."
execute_process(
COMMAND ${POWERSHELL}
-executionpolicy bypass -noprofile
-command "import-module '${CMAKE_BINARY_DIR}/vcpkg-binpkg/vcpkg-binpkg.psm1'; vcpkg-instpkg ."
WORKING_DIRECTORY ${bin_pkgs_dir}
)
file(REMOVE_RECURSE ${bin_pkgs_dir})
endif()
set(binary_packages_installed TRUE PARENT_SCOPE)
endfunction()
function(vcpkg_remove_optional_deps vcpkg_exe)
list(LENGTH VCPKG_DEPS_OPTIONAL optionals_list_len)
math(EXPR optionals_list_last "${optionals_list_len} - 1")
@@ -105,17 +320,34 @@ function(vcpkg_remove_optional_deps vcpkg_exe)
endfunction()
function(vcpkg_set_toolchain)
if(NOT DEFINED POWERSHELL)
message(FATAL_ERROR "Powershell is required to use vcpkg binaries.")
endif()
if(NOT DEFINED ENV{VCPKG_ROOT})
get_filename_component(preferred_root ${CMAKE_SOURCE_DIR}/../vcpkg ABSOLUTE)
if(WIN32)
if(DEFINED ENV{CI} OR EXISTS /vcpkg)
set(VCPKG_ROOT /vcpkg)
elseif(EXISTS c:/vcpkg)
set(VCPKG_ROOT c:/vcpkg)
# Prefer the preferred root to the VS default which is more difficult to deal with, if it exists.
elseif(EXISTS ${preferred_root})
set(VCPKG_ROOT ${preferred_root})
else()
find_program(vcpkg_exe_path NAME vcpkg.exe HINTS ENV PATH)
if(vcpkg_exe_path)
get_filename_component(VCPKG_ROOT ${vcpkg_exe_path} DIRECTORY)
get_filename_component(VCPKG_ROOT ${VCPKG_ROOT} ABSOLUTE)
endif()
unset(vcpkg_exe_path)
endif()
endif()
if(NOT DEFINED VCPKG_ROOT)
get_filename_component(VCPKG_ROOT ${CMAKE_SOURCE_DIR}/../vcpkg ABSOLUTE)
set(VCPKG_ROOT ${preferred_root})
endif()
set(ENV{VCPKG_ROOT} ${VCPKG_ROOT})
@@ -188,8 +420,6 @@ function(vcpkg_set_toolchain)
vcpkg_check_git_status(${git_status})
endif()
endif()
vcpkg_check_git_status(${git_status})
endif()
# build latest vcpkg, if needed
@@ -212,9 +442,9 @@ function(vcpkg_set_toolchain)
endforeach()
if(WIN32)
set(vcpkg_exe vcpkg)
set(vcpkg_exe "${VCPKG_ROOT}/vcpkg.exe")
else()
set(vcpkg_exe ./vcpkg)
set(vcpkg_exe "${VCPKG_ROOT}/vcpkg")
endif()
# update portfiles
@@ -223,74 +453,78 @@ function(vcpkg_set_toolchain)
WORKING_DIRECTORY ${VCPKG_ROOT}
)
# Get number of seconds since midnight (might be wrong if am/pm is in effect on Windows.)
vcpkg_seconds()
set(began ${seconds})
get_binary_packages(${vcpkg_exe})
# Limit total installation time to 20 minutes to not overrun CI time limit.
math(EXPR time_limit "${began} + (20 * 60)")
if(NOT binary_packages_installed)
# Get number of seconds since midnight (might be wrong if am/pm is in effect on Windows.)
vcpkg_seconds()
set(began ${seconds})
vcpkg_deps_fixup("${vcpkg_exe}")
# Limit total installation time to 20 minutes to not overrun CI time limit.
math(EXPR time_limit "${began} + (20 * 60)")
# Install core deps.
execute_process(
COMMAND ${vcpkg_exe} install ${VCPKG_DEPS_QUALIFIED}
WORKING_DIRECTORY ${VCPKG_ROOT}
)
vcpkg_deps_fixup("${vcpkg_exe}")
# If ports have been updated, and there is time, rebuild cache one at a time to not overrun the CI time limit.
vcpkg_seconds()
if(seconds LESS time_limit)
vcpkg_get_first_upgrade(${vcpkg_exe})
if(DEFINED first_upgrade)
# If we have to upgrade zlib, remove optional deps first so that
# the build doesn't overrun the CI time limit.
if(first_upgrade STREQUAL "zlib")
vcpkg_remove_optional_deps(${vcpkg_exe})
endif()
execute_process(
COMMAND ${vcpkg_exe} upgrade --no-dry-run "${first_upgrade}:${VCPKG_TARGET_TRIPLET}"
WORKING_DIRECTORY ${VCPKG_ROOT}
)
endif()
endif()
# Install optional deps, within time limit.
list(LENGTH VCPKG_DEPS_OPTIONAL optionals_list_len)
math(EXPR optionals_list_last "${optionals_list_len} - 1")
foreach(i RANGE 0 ${optionals_list_last} 2)
list(GET VCPKG_DEPS_OPTIONAL ${i} dep)
math(EXPR var_idx "${i} + 1")
list(GET VCPKG_DEPS_OPTIONAL ${var_idx} var)
set(val "${${var}}")
# Install core deps.
execute_process(
COMMAND ${vcpkg_exe} install ${VCPKG_DEPS_QUALIFIED}
WORKING_DIRECTORY ${VCPKG_ROOT}
)
# If ports have been updated, and there is time, rebuild cache one at a time to not overrun the CI time limit.
vcpkg_seconds()
if("${val}" OR (seconds LESS time_limit AND ("${val}" OR "${val}" STREQUAL "")))
set(dep_qualified "${dep}:${VCPKG_TARGET_TRIPLET}")
if(seconds LESS time_limit)
vcpkg_get_first_upgrade(${vcpkg_exe})
execute_process(
COMMAND ${vcpkg_exe} install ${dep_qualified}
WORKING_DIRECTORY ${VCPKG_ROOT}
)
if(DEFINED first_upgrade)
# If we have to upgrade zlib, remove optional deps first so that
# the build doesn't overrun the CI time limit.
if(first_upgrade STREQUAL "zlib")
vcpkg_remove_optional_deps(${vcpkg_exe})
endif()
set(${var} ON)
else()
set(${var} OFF)
execute_process(
COMMAND ${vcpkg_exe} upgrade --no-dry-run "${first_upgrade}:${VCPKG_TARGET_TRIPLET}"
WORKING_DIRECTORY ${VCPKG_ROOT}
)
endif()
endif()
endforeach()
# Install optional deps, within time limit.
list(LENGTH VCPKG_DEPS_OPTIONAL optionals_list_len)
math(EXPR optionals_list_last "${optionals_list_len} - 1")
foreach(i RANGE 0 ${optionals_list_last} 2)
list(GET VCPKG_DEPS_OPTIONAL ${i} dep)
math(EXPR var_idx "${i} + 1")
list(GET VCPKG_DEPS_OPTIONAL ${var_idx} var)
set(val "${${var}}")
vcpkg_seconds()
if("${val}" OR (seconds LESS time_limit AND ("${val}" OR "${val}" STREQUAL "")))
set(dep_qualified "${dep}:${VCPKG_TARGET_TRIPLET}")
execute_process(
COMMAND ${vcpkg_exe} install ${dep_qualified}
WORKING_DIRECTORY ${VCPKG_ROOT}
)
set(${var} ON)
else()
set(${var} OFF)
endif()
endforeach()
endif()
if(WIN32 AND VCPKG_TARGET_TRIPLET MATCHES x64 AND CMAKE_GENERATOR MATCHES "Visual Studio")
set(CMAKE_GENERATOR_PLATFORM x64 CACHE STRING "visual studio build architecture" FORCE)
endif()
if(WIN32 AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
if(WIN32 AND NOT CMAKE_GENERATOR MATCHES "Visual Studio" AND NOT DEFINED CMAKE_CXX_COMPILER)
if(VCPKG_TARGET_TRIPLET MATCHES "^x[68][46]-windows-")
# set toolchain to VS for e.g. Ninja or jom
set(CMAKE_C_COMPILER cl CACHE STRING "Microsoft C/C++ Compiler" FORCE)
@@ -307,4 +541,14 @@ endfunction()
vcpkg_set_toolchain()
# Make vcpkg use debug libs for RelWithDebInfo
set(orig_build_type ${CMAKE_BUILD_TYPE})
if(CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo)
set(CMAKE_BUILD_TYPE Debug)
endif()
include(${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
set(CMAKE_BUILD_TYPE ${orig_build_type})
unset(orig_build_type)

View File

@@ -1,44 +0,0 @@
include(VbamFunctions)
function(add_compiler_flags)
foreach(var RELEASE DEBUG RELWITHDEBINFO MINSIZEREL)
set("CMAKE_CXX_FLAGS_${var}" "" CACHE STRING "MUST BE UNSET" FORCE)
set("CMAKE_CXX_FLAGS_${var}" "" PARENT_SCOPE)
set("CMAKE_C_FLAGS_${var}" "" CACHE STRING "MUST BE UNSET" FORCE)
set("CMAKE_C_FLAGS_${var}" "" PARENT_SCOPE)
endforeach()
# Set C and CXX flags if not already set.
foreach(flag ${ARGV})
foreach(var CMAKE_CXX_FLAGS CMAKE_C_FLAGS)
# Remove any duplicates first.
remove_dupes("${${var}}" "${var}")
string(FIND "${${var}}" "${flag}" found)
if(found EQUAL -1)
set("${var}" "${${var}} ${flag}" CACHE STRING "Compiler Flags" FORCE)
set("${var}" "${${var}} ${flag}" PARENT_SCOPE)
endif()
endforeach()
endforeach()
endfunction()
function(add_linker_flags)
# Set linker flags if not already set.
foreach(flag ${ARGV})
foreach(var EXE SHARED MODULE STATIC)
set(var "CMAKE_${var}_LINKER_FLAGS")
# Remove any duplicates first.
remove_dupes("${${var}}" "${var}")
string(FIND "${${var}}" "${flag}" found)
if(found EQUAL -1)
set("${var}" "${${var}} ${flag}" CACHE STRING "Linker Flags" FORCE)
set("${var}" "${${var}} ${flag}" PARENT_SCOPE)
endif()
endforeach()
endforeach()
endfunction()

View File

@@ -0,0 +1,37 @@
if(NOT ENABLE_ASAN)
return()
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
check_cxx_compiler_flag(/fsanitize=address MSVC_ASAN_SUPPORTED)
if(MSVC_ASAN_SUPPORTED)
add_compile_options(/fsanitize=address)
add_compile_definitions(_DISABLE_VECTOR_ANNOTATION _DISABLE_STRING_ANNOTATION)
else()
message(WARNING "ASAN not available for the compiler, disabling.")
set(ENABLE_ASAN OFF)
return()
endif()
else()
# ASAN does not work on non-debug builds for GCC and Clang.
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
message(WARNING "ASAN requires debug build, set -DCMAKE_BUILD_TYPE=Debug, disabling.")
set(ENABLE_ASAN OFF)
return()
endif()
# It is necessary to modify the linker flagas for the compiler check to work.
set(BACKUP_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
set(CMAKE_EXE_LINKER_FLAGS "-fsanitize=address")
check_cxx_compiler_flag(-fsanitize=address ASAN_SUPPORTED)
set(CMAKE_EXE_LINKER_FLAGS ${BACKUP_LINKER_FLAGS})
if(ASAN_SUPPORTED)
add_compile_options(-fsanitize=address)
add_link_options(-fsanitize=address)
else()
message(WARNING "ASAN not available for the compiler, disabling.")
set(ENABLE_ASAN OFF)
return()
endif()
endif()

View File

@@ -0,0 +1,51 @@
if(X86_32 OR X86_64)
add_compile_options(-mfpmath=sse -msse2)
endif()
if(X86_64)
# Require and optimize for Core2 level support, tune for generic.
add_compile_options(-march=core2 -mtune=generic)
elseif(X86_32)
# Optimize for pentium-mmx and tune for generic for older builds.
add_compile_options(-march=pentium-mmx -mtune=generic)
endif()
# Common flags.
add_compile_options(
-pipe
-Wno-unused-command-line-argument
-Wno-deprecated-copy
-Wformat
-Wformat-security
-feliminate-unused-debug-types
-fdiagnostics-color=always
)
# check if ssp flags are supported.
if(CMAKE_BUILD_TYPE STREQUAL Debug)
check_cxx_compiler_flag(-fstack-protector-strong STACK_PROTECTOR_SUPPORTED)
if(STACK_PROTECTOR_SUPPORTED)
add_compile_options(-fstack-protector-strong)
check_cxx_compiler_flag("--param ssp-buffer-size=4" SSP_BUFFER_SIZE_SUPPORTED)
if(SSP_BUFFER_SIZE_SUPPORTED)
add_compile_options(--param ssp-buffer-size=4)
endif()
endif()
endif()
if(NOT ENABLE_ASM) # inline asm is not allowed with -fPIC
add_compile_options(-fPIC)
endif()
if(CMAKE_BUILD_TYPE STREQUAL Debug)
add_compile_options(-ggdb3 -Og -fno-omit-frame-pointer -Wall -Wextra)
else()
add_compile_options(-Ofast -fomit-frame-pointer)
endif()
# for some reason this is necessary
if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
include_directories(/usr/local/include)
endif()

View File

@@ -0,0 +1,28 @@
if (NOT MINGW)
return()
endif()
# this has to run after the toolchain is initialized.
include_directories("${CMAKE_SOURCE_DIR}/dependencies/mingw-include")
include_directories("${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include")
# link libgcc/libstdc++ statically on GCC/mingw
# and adjust link command when making a static binary
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND VBAM_STATIC)
# some dists don't have a static libpthread
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread ")
if(WIN32)
add_custom_command(
TARGET visualboyadvance-m PRE_LINK
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/msys-link-static.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
else()
add_custom_command(
TARGET visualboyadvance-m PRE_LINK
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/link-static.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
endif()
endif()

View File

@@ -0,0 +1,83 @@
# Set the runtime library properly.
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:DEBUG>:Debug>" CACHE INTERNAL "")
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# MSVC-specific flags (not supported by clang-cl).
add_compile_options(/nologo)
if (NOT CMAKE_GENERATOR MATCHES "Ninja")
# Multi-processor compilation does not work well with Ninja.
add_compile_options(/MP)
endif()
endif()
include_directories("${CMAKE_SOURCE_DIR}/dependencies/msvc")
add_compile_definitions(
_FORCENAMELESSUNION
WIN32_LEAN_AND_MEAN
WIN32
_WINDOWS
__STDC_LIMIT_MACROS
__STDC_CONSTANT_MACROS
_CRT_SECURE_NO_WARNINGS
_UNICODE
UNICODE
WINVER=0x0A00
NTDDI_VERSION=0x0A000007
NOMINMAX
)
add_compile_options(
/W4
/GR
/EHsc
)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_definitions(_DEBUG)
add_compile_options(/Ob0 /Od /RTC1)
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND NOT ENABLE_ASAN)
# Use Edit and Continue with MSVC.
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "EditAndContinue" CACHE STRING "" FORCE)
else()
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "ProgramDatabase" CACHE STRING "" FORCE)
endif()
else()
add_compile_options(/MT /Oi /Gy)
add_link_options(/OPT:REF /OPT:ICF)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "ProgramDatabase" CACHE STRING "" FORCE)
if (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
add_compile_options(/O1 /Ob1)
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
add_compile_options(/O2 /Ob1)
else()
add_compile_options(/O2)
endif()
endif()
if(CMAKE_VERSION VERSION_LESS "3.25")
# Backwards-compatible way of setting the /Z option.
if(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT STREQUAL "EditAndContinue")
add_compile_options(/ZI)
elseif(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT STREQUAL "ProgramDatabase")
add_compile_options(/Zi)
elseif(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT STREQUAL "Embedded")
add_compile_options(/Z7)
else()
message(FATAL_ERROR "Unknown value for CMAKE_MSVC_DEBUG_INFORMATION_FORMAT: ${CMAKE_MSVC_DEBUG_INFORMATION_FORMAT}")
endif()
endif()
set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "" FORCE)
# We need to explicitly set all of these to override the CMake defaults.
set(CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS "" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE)

73
cmake/Toolchain.cmake Normal file
View File

@@ -0,0 +1,73 @@
# Compiler stuff
include(CheckCXXCompilerFlag)
include(ProcessorCount)
ProcessorCount(num_cpus)
if (ENABLE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT LTO_SUPPORTED)
if (LTO_SUPPORTED)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
message(WARNING "LTO is not supported by the compiler, diasabling LTO")
set(ENABLE_LTO OFF)
endif()
endif()
# Common compiler settings.
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_definitions(DEBUG)
else()
add_compile_definitions(NDEBUG)
endif()
if(APPLE)
add_compile_definitions(MACHO)
elseif("${CMAKE_SYSTEM}" MATCHES "Linux")
add_compile_definitions(ELF)
endif()
if(X86_64)
add_compile_definitions(__AMD64__ __X86_64__)
endif()
# Enable ASAN if requested and supported.
include(Toolchain-asan)
# MINGW/MSYS-specific settings.
include(Toolchain-mingw)
# Toolchain-specific settings.
if(MSVC)
# This also includes clang-cl.
include(Toolchain-msvc)
else()
include(Toolchain-gcc-clang)
endif()
# Assembler flags.
if(ENABLE_ASM_CORE OR ENABLE_ASM_SCALERS)
if(MSVC)
if(NOT EXISTS ${CMAKE_BINARY_DIR}/nuget.exe)
file(DOWNLOAD "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" ${CMAKE_BINARY_DIR}/nuget.exe)
endif()
execute_process(
COMMAND nuget.exe install nasm2 -OutputDirectory ${CMAKE_BINARY_DIR}/nuget
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
file(GLOB pkg ${CMAKE_BINARY_DIR}/nuget/nasm2*)
list(APPEND CMAKE_PROGRAM_PATH ${pkg}/tools)
endif()
enable_language(ASM_NASM)
set(ASM_ENABLED ON)
endif()
if(ASM_ENABLED)
string(REGEX REPLACE "<FLAGS>" "-I${CMAKE_SOURCE_DIR}/src/filters/hq/asm/ -O1 -w-orphan-labels" CMAKE_ASM_NASM_COMPILE_OBJECT ${CMAKE_ASM_NASM_COMPILE_OBJECT})
endif()

View File

@@ -2,12 +2,6 @@
# Update version in appcast.xml to latest tag.
# Commit web-data.
find_package(Git)
if(NOT GIT_FOUND)
message(FATAL_ERROR "git is required to update the appcast")
endif()
function(update_appcast)
if(UPDATE_APPCAST STREQUAL UNDO)
file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/web-data)
@@ -81,10 +75,12 @@ Ignore the following cmake error.
endwhile()
# Convert to UNIX line endings on Windows, just copy the file otherwise.
if(CMAKE_HOST_SYSTEM MATCHES Windows OR ((NOT DEFINED CMAKE_HOST_SYSTEM) AND WIN32))
if(NOT DEFINED POWERSHELL)
message(FATAL_ERROR "Powershell is required to convert line endings on Windows.")
endif()
execute_process(
COMMAND powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command [=[
COMMAND ${POWERSHELL} -NoLogo -NoProfile -ExecutionPolicy Bypass -Command [=[
$text = [IO.File]::ReadAllText("appcast.xml.work") -replace "`r`n", "`n"
[IO.File]::WriteAllText("appcast.xml", $text)
]=]

View File

@@ -1,103 +0,0 @@
# UseGCCBinUtilsWrappers.cmake
#
# Use gcc binutils wrappers such as gcc-ar, this may be necessary for LTO.
#
# To use:
#
# put a copy into your <project_root>/CMakeScripts/
#
# In your main CMakeLists.txt add the command:
#
# INCLUDE(UseGCCBinUtilsWrappers)
#
# BSD 2-Clause License
#
# Copyright (c) 2016, Rafael Kitover
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# only do this when compiling with gcc/g++
IF(NOT (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUC))
RETURN()
ENDIF()
# first try appending -util to basename of compiler
STRING(REGEX MATCH "\\.(exe|EXE)$" GCC_EXE_SUFFIX ${CMAKE_C_COMPILER})
STRING(REGEX REPLACE "\\.(exe|EXE)$" "" GCC_BASENAME ${CMAKE_C_COMPILER})
SET(GCC_AR "${GCC_BASENAME}-ar${GCC_EXE_SUFFIX}")
SET(GCC_NM "${GCC_BASENAME}-nm${GCC_EXE_SUFFIX}")
SET(GCC_RANLIB "${GCC_BASENAME}-ranlib${GCC_EXE_SUFFIX}")
# if that does not work, try looking for gcc-util in the compiler directory,
# and failing that in the PATH
GET_FILENAME_COMPONENT(GCC_DIRNAME ${CMAKE_C_COMPILER} DIRECTORY)
IF(NOT EXISTS ${GCC_AR})
UNSET(GCC_AR)
FIND_PROGRAM(GCC_AR NAMES gcc-ar gcc-ar.exe GCC-AR.EXE HINTS ${GCC_DIRNAME})
ENDIF()
IF(NOT EXISTS ${GCC_NM})
UNSET(GCC_NM)
FIND_PROGRAM(GCC_NM NAMES gcc-nm gcc-nm.exe GCC-NM.EXE HINTS ${GCC_DIRNAME})
ENDIF()
IF(NOT EXISTS ${GCC_RANLIB})
UNSET(GCC_RANLIB)
FIND_PROGRAM(GCC_RANLIB NAMES gcc-ranlib gcc-ranlib.exe GCC-RANLIB.EXE HINTS ${GCC_DIRNAME})
ENDIF()
INCLUDE(PathRun)
IF(EXISTS ${GCC_AR})
MESSAGE("-- Found gcc-ar: ${GCC_AR}")
SET(target "${CMAKE_BINARY_DIR}/gcc-ar-wrap")
MAKE_PATH_RUN_WRAPPER("${GCC_AR}" "${target}")
SET(CMAKE_AR "${target}")
ENDIF()
IF(EXISTS ${GCC_NM})
MESSAGE("-- Found gcc-nm: ${GCC_NM}")
SET(target "${CMAKE_BINARY_DIR}/gcc-nm-wrap")
MAKE_PATH_RUN_WRAPPER("${GCC_NM}" "${target}")
SET(CMAKE_NM "${target}")
ENDIF()
IF(EXISTS ${GCC_RANLIB})
MESSAGE("-- Found gcc-ranlib: ${GCC_RANLIB}")
SET(target "${CMAKE_BINARY_DIR}/gcc-ranlib-wrap")
MAKE_PATH_RUN_WRAPPER("${GCC_RANLIB}" "${target}")
SET(CMAKE_RANLIB "${target}")
ENDIF()
FOREACH(VAR "GCC_AR" "GCC_NM" "GCC_RANLIB" "GCC_DIRNAME" "GCC_BASENAME" "GCC_EXE_SUFFIX" "target")
UNSET(${VAR})
ENDFOREACH()

View File

@@ -1,43 +1,3 @@
# From: https://stackoverflow.com/a/41416298/262458
function(REMOVE_DUPES ARG_STR OUTPUT)
set(ARG_LIST ${ARG_STR})
separate_arguments(ARG_LIST)
list(REMOVE_DUPLICATES ARG_LIST)
string (REGEX REPLACE "([^\\]|^);" "\\1 " _TMP_STR "${ARG_LIST}")
string (REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") #fixes escaping
set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
endfunction()
# From: https://stackoverflow.com/a/7216542
function(JOIN VALUES GLUE OUTPUT)
string (REGEX REPLACE "([^\\]|^);" "\\1${GLUE}" _TMP_STR "${VALUES}")
string (REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") #fixes escaping
set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
endfunction()
# convert msys paths like /c/foo to windows paths like c:/foo
# for variables set by FindWxWidgets
function(normalize_wx_paths)
if(MSYS)
unset(new_paths)
foreach(p ${wxWidgets_LIBRARY_DIRS})
execute_process(COMMAND cygpath -m "${p}" OUTPUT_VARIABLE p_win OUTPUT_STRIP_TRAILING_WHITESPACE)
list(APPEND new_paths "${p_win}")
endforeach()
set(wxWidgets_LIBRARY_DIRS ${new_paths} PARENT_SCOPE)
string(REGEX REPLACE "((^| )[^/]*)/([a-zA-Z])/" "\\1\\3:/" new_libs "${wxWidgets_LIBRARIES}")
set(wxWidgets_LIBRARIES ${new_libs} PARENT_SCOPE)
endif()
endfunction()
macro(cleanup_wx_vars)
if(wxWidgets_CXX_FLAGS)
list(REMOVE_ITEM wxWidgets_CXX_FLAGS -fpermissive)
endif()
endmacro()
function(cygpath var path)
execute_process(
@@ -78,22 +38,23 @@ function(check_clean_exit var)
endfunction()
function(find_wx_util var util)
if(EXISTS /etc/gentoo-release)
# On win32, including cross builds we prefer the plain utility name
# first from PATH.
if(WIN32 OR EXISTS /etc/gentoo-release)
# On win32, including cross builds we prefer the plain utility
# name first from PATH, with the exception of -static for static
# builds.
#
# On Gentoo /usr/bin/wx-config loads the eselected build, so we want
# to try that first.
# On Gentoo /usr/bin/wx-config loads the eselected build, so we
# want to try that first.
#
# This makes a one element of empty string list.
set(conf_suffixes ";")
set(major_versions ";")
elseif(WIN32)
set(major_versions ";")
endif()
if(VBAM_STATIC)
list(APPEND conf_suffixes static)
if(VBAM_STATIC)
set(conf_suffixes "static;")
else()
set(conf_suffixes ";")
endif()
set(major_versions ";")
endif()
list(APPEND conf_suffixes gtk4u gtk4 gtk3u gtk3 gtk2u gtk2 "")
@@ -151,5 +112,3 @@ function(find_wx_util var util)
set(${var} ${util} PARENT_SCOPE)
endforeach()
endfunction()
# vim:sw=4 sts et:

View File

@@ -1,7 +1,8 @@
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "visualboyadvance-m";
buildInputs = [ ninja cmake gcc nasm gettext pkg-config zip sfml zlib ffmpeg wxGTK31-gtk3 mesa glfw SDL2 gtk3-x11 pcre util-linuxMinimal libselinux libsepol libthai libdatrie xorg.libXdmcp xorg.libXtst libxkbcommon epoxy dbus_libs at-spi2-core ];
# WIP: Trying to get this to work on mac nix.
# buildInputs = [ ninja cmake gcc nasm gettext pkg-config zip sfml zlib ffmpeg wxmac SDL2 pcre ];
buildInputs = if stdenv.isDarwin then
[ ninja cmake gcc nasm gettext pkg-config zip sfml zlib openal ffmpeg wxGTK32 SDL2 pcre pcre2 darwin.apple_sdk.frameworks.IOKit darwin.apple_sdk.frameworks.Carbon darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.QuartzCore darwin.apple_sdk.frameworks.AudioToolbox darwin.apple_sdk.frameworks.OpenGL darwin.apple_sdk.frameworks.OpenAL llvmPackages_latest.clang llvmPackages_latest.bintools ]
else
[ ninja cmake gcc nasm gettext pkg-config zip sfml zlib openal ffmpeg wxGTK32 mesa glfw SDL2 gtk3-x11 pcre pcre2 util-linuxMinimal libselinux libsepol libthai libdatrie xorg.libXdmcp xorg.libXtst libxkbcommon epoxy dbus at-spi2-core ];
}

View File

@@ -8,9 +8,8 @@ Known preprocessor switches:
- SDL: Defined for the SDL version
- GBA_LOGGING: Enables logging for the GBA core
- FINAL_VERSION: Defined for release versions, disables additional GBA logging and completely disables GB logging. Increases the amount of CPU cycles being emulated in one go.
- BKPT_SUPPORT
- VBAM_ENABLE_DEBUGGER: Enable remote debugging support
- MMX: Enable MMX instruction set
- NO_ASM: Use C++ version of hq3x/4x filters
- RGB555: Use 16bit colors with 5bit green instead of 6bit green in hq3x/4x filters (C++ version)
- NO_OGL: Exclude OpenGL code
- NO_D3D: Exclude Direct3D code

View File

@@ -9,7 +9,7 @@
VisualBoyAdvance-M
Nintendo Game Boy & Game Boy Advance Emulator
Project Homepage: http://vba-m.com
Project Homepage: http://visualboyadvance-m.org
This program is distributed under the GNU General Public License
http://www.gnu.org/licenses/gpl.html

View File

@@ -1,46 +0,0 @@
#Do not use this file directly. Always use the top level CMakeLists.txt file
#File extractors so the user doesn't have to extract the rom before playing it
# Source files definition
SET(SRC_FEX
7z_C/7zAlloc.c
7z_C/7zBuf.c
7z_C/7zCrc.c
7z_C/7zCrcOpt.c
7z_C/7zDec.c
7z_C/7zIn.c
7z_C/7zStream.c
7z_C/Bcj2.c
7z_C/Bra86.c
7z_C/Bra.c
7z_C/CpuArch.c
7z_C/Lzma2Dec.c
7z_C/LzmaDec.c
7z_C/Ppmd7.c
7z_C/Ppmd7Dec.c
fex/Binary_Extractor.cpp
fex/blargg_common.cpp
fex/blargg_errors.cpp
fex/Data_Reader.cpp
fex/fex.cpp
fex/File_Extractor.cpp
fex/Gzip_Extractor.cpp
fex/Gzip_Reader.cpp
fex/Rar_Extractor.cpp
fex/Zip7_Extractor.cpp
fex/Zip_Extractor.cpp
fex/Zlib_Inflater.cpp
)
INCLUDE_DIRECTORIES(
.
${ZLIB_INCLUDE_DIRS}
)
ADD_LIBRARY(
fex
STATIC
${SRC_FEX}
)
add_dependencies(fex generate)

View File

@@ -88,7 +88,7 @@ This program may require sudo.
A cross-compile target may be specified as the only parameter, of either m32 which targets the host in 32 bit mode (e.g. x86 on an amd64 host) or win32, MinGW-w64-i686 or MinGW-w64-x86_64. win32 is an alias for MinGW-w64-i686 to target Windows via MinGW. Cross compiling for Windows is only supported on Debian/Ubuntu, Fedora, Arch Linux and MSYS2.
On MSYS2 the MinGW-w64-clang-x86_64 target for CLANG64 and the MinGW-w64-clang-i686 target for CLANG32 are also supported.
On MSYS2 the MinGW-w64-clang-x86_64 target for CLANG64 and the MinGW-w64-clang-i686 target for CLANG32 are also supported, as well as MinGW-w64-ucrt-x86_64 for UCRT64.
On MSYS2 dependencies are installed for 32 or 64 bit native Windows targets based on which shell you started (the value of $MSYSTEM) unless you specify one or the other. You can specify a cross target of m32 or m64 as aliases for the 32 bit or 64 bit MinGW gcc targets respectively. MSYS2 POSIX layer builds are not supported.
@@ -179,6 +179,9 @@ linux_installdeps() {
nixos)
nixos_installdeps
;;
alpine)
alpine_installdeps
;;
*)
error "Don't know how to install deps on your version of Linux"
;;
@@ -253,6 +256,9 @@ check_cross() {
CLANG64)
target='mingw-w64-clang-x86_64'
;;
UCRT64)
target='mingw-w64-ucrt-x86_64'
;;
MSYS)
error 'host builds in MSYS mode are not supported, supply a target or start a MINGW shell'
;;
@@ -278,10 +284,10 @@ check_cross() {
win64)
target='mingw-w64-x86_64'
;;
mingw-w64-x86_64|mingw-w64-i686|mingw-w64-clang-x86_64|mingw-w64-clang-i686)
mingw-w64-x86_64|mingw-w64-i686|mingw-w64-clang-x86_64|mingw-w64-ucrt-x86_64|mingw-w64-clang-i686)
;;
*)
error "target must be one of 'm32', 'win32', 'win64', or one of the MinGW/clang targets supported by MSYS2: mingw-w64-[clang-](x86_64|i686)."
error "target must be one of 'm32', 'win32', 'win64', or one of the MinGW/clang/ucrt targets supported by MSYS2: mingw-w64-[clang|ucrt]-(x86_64|i686)."
;;
esac
;;
@@ -317,25 +323,39 @@ debian_installdeps() {
if [ -z "$target" ]; then
sudo apt-get -qq -y update
sfml_libs=$(apt-cache search libsfml | grep -E 'graphics|window|network' | sed 's/ - .*//')
sfml_libs=
glew_lib=$(apt-cache search libglew | grep '^libglew[0-9]' | sed 's/ - .*//')
for lib in graphics window network; do
sfml_libs="$sfml_libs $(apt-cache search "libsfml-$lib" | sed 's/ - .*//' | sort -r | head -1)"
done
glew_lib=$(apt-cache search libglew | grep '^libglew[0-9]' | sed 's/ - .*//' | sort -r | head -1)
sdl_lib=$(apt-cache search '^libsdl2-2.0' | sed 's/ - .*//' | sort -r | head -1)
# not present in trusty
if [ -n "$ENABLE_FFMPEG" ]; then
libswresample_dev=$(apt-cache search libswresample-dev | awk '{print $1}')
fi
# in newer distros
wx_lib=$(apt-cache search 'libwxgtk3.0-gtk3(-[^[:space:]]+)?$' | grep -v -- -dev | sed 's/ - .*//')
wx_lib_dev=$(apt-cache search 'libwxgtk3.0-gtk3-dev(-[^[:space:]]+)?$' | sed 's/ - .*//')
wx_libs=$(apt-cache search 'libwxgtk[0-9]' | sed 's/ - .*//')
if [ -z "$wx_lib" ] || [ -z "$wx_lib_dev" ]; then
wx_lib=libwxgtk3.0
wx_lib_dev=libwxgtk3.0-dev
fi
# Use -gtk3 variant on older distros.
case "$wx_libs" in
*-gtk3*)
new_wx_libs=
for pkg in $wx_libs; do
case "$pkg" in
*-gtk3*)
new_wx_libs="$new_wx_libs $pkg"
;;
esac
done
wx_libs=$new_wx_libs
;;
esac
pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev libsdl2-dev libsdl2-2.0 libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev libsfml-dev $sfml_libs $glew_lib $wx_lib $wx_lib_dev libgtk2.0-dev libgtk-3-dev ccache zip ninja-build"
pkgs="build-essential g++ nasm cmake ccache gettext zlib1g-dev libgl1-mesa-dev libgettextpo-dev libsdl2-dev $sdl_lib libglu1-mesa-dev libglu1-mesa libgles2-mesa-dev libsfml-dev $sfml_libs $glew_lib $wx_libs libgtk2.0-dev libgtk-3-dev ccache zip ninja-build"
[ -n "$ENABLE_OPENAL" ] && pkgs="$pkgs libopenal-dev"
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs libavcodec-dev libavformat-dev libswscale-dev libavutil-dev $libswresample_dev"
@@ -485,7 +505,7 @@ fedora_installdeps() {
# this is sometimes necessary for rawhide
set -- --exclude='glibc32*'
fi
for pkg in zlib-devel mesa-libGL-devel ffmpeg-devel gettext-devel SDL2-devel SFML-devel openal-soft-devel wxGTK3-devel gtk3-devel; do
for pkg in zlib-devel mesa-libGL-devel ffmpeg-devel gettext-devel SDL2-devel SFML-devel openal-soft-devel wxGTK-devel gtk3-devel; do
case $pkg in
*ffmpeg*)
[ -z "$ENABLE_FFMPEG" ] && continue
@@ -495,15 +515,23 @@ fedora_installdeps() {
;;
esac
pkg_arch=
if [ -n "$amd64" ]; then
pkg_arch=.x86_64
if [ "$target" = m32 ]; then
set -- "$@" "${pkg}.i686"
else
set -- "$@" "${pkg}.x86_64"
pkg_arch=.i686
fi
else
set -- "$@" "$pkg"
fi
# Check which is newer, wxGTK or wxGTK3.
if [ "$pkg" = wxGTK-devel ]; then
pkg=$(dnf -q --releasever=$(rpm -E %fedora) --showduplicates list wxGTK-devel wxGTK3-devel 2>/dev/null | awk '{ print $1 "\t" $2 }' | grep -Ev '^(Installed|Available)' | sort -rVu -k 2,2 | head -1 | awk '{ print $1 }' | sed -E 's/\.[^.]+//')
[ -z "$pkg" ] && pkg=wxGTK3-devel
fi
set -- "$@" "${pkg}${pkg_arch}"
done
# fedora has a bug where all necessary -devel packages are not pulled in for 32 bit direct -devel deps
@@ -873,8 +901,13 @@ archlinux_installdeps() {
if [ -z "$target" -o "$target" = m32 ]; then
if [ -z "$target" -o -z "$amd64" ]; then
# native build
check $pacman --noconfirm --needed -S "$gcc_pkg" $libs
# Native build.
#
# On newer versions wxgtk2 may have to be manually removed.
if ! $pacman --noconfirm --needed -S "$gcc_pkg" $libs; then
$pacman --noconfirm -R wxgtk2
fi
$pacman --noconfirm --needed -S "$gcc_pkg" $libs
else
# try to build 32 bit binaries
@@ -991,7 +1024,7 @@ solus_installdeps() {
check sudo eopkg -y install -c system.devel
check sudo eopkg -y install git ccache ninja
set -- sdl2-devel wxwidgets-devel libgtk-2-devel libgtk-3-devel
set -- sdl2-devel wxwidgets-devel libgtk-2-devel libgtk-3-devel libglu-devel
[ -n "$ENABLE_OPENAL" ] && set -- "$@" openal-soft-devel
@@ -1062,19 +1095,37 @@ gentoo_installdeps() {
wx_slot=$(equery -qC list -p -F '$slot' x11-libs/wxGTK | grep gtk3 | sort -rV | head -1)
ebuilds="\
sys-devel/gcc sys-devel/make dev-util/cmake dev-util/ccache sys-devel/binutils \
media-libs/libsdl2 media-libs/libsfml x11-libs/wxGTK:$wx_slot sys-libs/zlib dev-util/pkgconf \
dev-lang/nasm dev-util/ninja"
sys-devel/gcc \
dev-build/make \
dev-build/cmake \
dev-util/ccache \
sys-devel/binutils \
media-libs/libsdl2 \
media-libs/libsfml \
x11-libs/wxGTK:$wx_slot \
sys-libs/zlib \
dev-util/pkgconf \
dev-lang/nasm \
dev-build/ninja"
[ -n "$ENABLE_OPENAL" ] && ebuilds="$ebuilds media-libs/openal"
[ -n "$ENABLE_FFMPEG" ] && ebuilds="$ebuilds media-video/ffmpeg"
check sudo emerge -vn $ebuilds
check sudo emerge -vna $ebuilds
build_instructions
}
alpine_installdeps() {
installing
check sudo apk add cmake ninja g++ ccache nasm gettext-dev zlib-dev mesa-dev sdl2-dev glu-dev sfml-dev wxwidgets-dev gtk+3.0-dev zip
build_instructions
}
windows_installdeps() {
msys2=1
@@ -1088,10 +1139,10 @@ windows_installdeps() {
case "$target" in
*clang*)
pkgs="lldb"
pkgs="lldb clang"
;;
*)
pkgs="$pkgs gcc gcc-libs gcc-libgfortran"
pkgs="gcc gcc-libs gcc-libgfortran"
;;
esac
@@ -1101,7 +1152,7 @@ windows_installdeps() {
;;
esac
pkgs="$pkgs SDL2 sfml wxWidgets zlib binutils cmake crt-git extra-cmake-modules headers-git make pkgconf tools-git windows-default-manifest libmangle-git ninja gdb"
pkgs="$pkgs SDL2 sfml wxWidgets3.2 zlib binutils cmake crt-git extra-cmake-modules headers-git make pkgconf tools-git windows-default-manifest libmangle-git ninja gdb ccache"
[ -n "$ENABLE_OPENAL" ] && pkgs="$pkgs openal"
[ -n "$ENABLE_FFMPEG" ] && pkgs="$pkgs ffmpeg"
@@ -1111,6 +1162,13 @@ windows_installdeps() {
set -- "$@" "${target}-${p}"
done
case "$target" in
*clang*)
# We use gcc windres for now, llvm-rc is sometimes broken.
set -- "$@" mingw-w64-x86_64-binutils
;;
esac
# install
check pacman --noconfirm --needed -S git make zip "$@"
@@ -1161,7 +1219,7 @@ brew_installdeps() {
check brew -v update
brews="nasm cmake ccache gettext pkg-config sdl2 wxmac ccache ninja"
brews="nasm cmake ccache gettext pkg-config sdl2 wxwidgets ccache ninja"
[ -n "$ENABLE_FFMPEG" ] && brews="$brews ffmpeg"
@@ -1170,15 +1228,16 @@ brew_installdeps() {
brews="$brews sfml"
# fi
set --
for f in $brews; do
if brew info "$f" | grep -Eq '^Not installed$'; then
set -- "$@" "$f"
fi
done
[ $# -gt 0 ] && check brew -v install "$@"
# This is necessary for the GitHub Actions CI:
brew -v install python
brew link --overwrite python
brew link gettext --force
check brew -v install -f $brews
for brew in gettext wxwidgets; do
brew unlink $brew
brew link $brew --force
done
brew -v cleanup
@@ -1223,7 +1282,7 @@ build_instructions() {
$pre_build
mkdir build && cd build
$CMAKE .. $cmake_flags -G Ninja
$CMAKE .. -DCMAKE_BUILD_TYPE=Release $cmake_flags -G Ninja
ninja
$post_build

View File

@@ -1,4 +0,0 @@
IF(ENABLE_WX)
add_subdirectory(wxvbam)
ENDIF(ENABLE_WX)

View File

@@ -1,8 +1,7 @@
if(NOT TRANSLATIONS_ONLY AND NOT ENABLE_WX)
return()
endif()
file(GLOB po_files "${CMAKE_CURRENT_SOURCE_DIR}/*.po")
gettext_create_translations(
wxvbam.pot
${po_files}
)
add_dependencies(translations-zip translations)
gettext_create_translations(wxvbam.pot ${po_files})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3790
po/wxvbam/bg.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More