| Commit message (Collapse) | Author | Files | Lines |
|
Keeps us up to date with the latest major release.
Also allows compilers that support it to perform compile-time format
string checking.
|
|
Turns out that this is possible. Also addresses my own review comment.
|
|
Delegates libusb external communication to externals/CMakeLists.txt
Ensures an interface library `usb` for every pathway
input_common just links to the `usb` library now
externals/libusb/CMakeLists.txt sets variables to override SDL2's libusb
finding
Other minor cleanup
|
|
Building libusb was also broken on GCC (and maybe Clang) on our
CMakeLists after upgrading to 1.0.24, but it was not being checked
because our 18.04 container had libusb installed on it.
This builds on the MinGW work from earlier and extends it to the rest of
the GNU toolchains. In addition we make use of pkg-config when present
to find libusb. pkg-config is preferrable because we can specify a
minimum required version.
|
|
After updating to 1.0.24, MinGW fails to build libusb as a result of
numerous errors. So we build libusb their way and let them update the
nontrivial stuff.
This only applies to MinGW: the old path is still in use for Linux
toolchains as well as MSVC.
This will dynamically link libusb, since I hit build errors with the old
way we used to resolve the conflict with SDL2.
|
|
CMAKE_DEPENDENT_OPTION takes a value argument, but as a macro function
it will read a variable name as the name and not the value. For
YUZU_USE_BUNDLED_QT, ensure that we are reading the value of MSVC. For
YUZU_ALLOW_SYSTEM_SDL2, CMAKE_DEPENDENT_OPTION is redundant here anyway
as we don't use that path on any toolchain by default.
|
|
If the local version of Qt is older than the minimum version required by
yuzu, download a pre-built binary package from yuzu-emu/ext-linux-bin
and build yuzu with it, instead.
This also requires linking yuzu to the correct libraries after building
it, and copying over the required binaries when building yuzu.
This sets the Qt requirement to 5.12, which is intentionally behind the
versions used by our toolchains since they are not all updated yet to
5.15.
|
|
zstd 1.5.0 brings numerous performance improvements to the library, as
can be seen here: https://github.com/facebook/zstd/releases/tag/v1.5.0
|
|
|
|
In light of 72a49c2bbcce46c24b6d8ee0592989a507dcd68a, the SDL submodule also needs updated. Updates
to the same commit used by the SDL package in ext-windows-bin.
|
|
- Improves native Switch JoyCon/Pro Controller support.
|
|
Without the CONFIG option, find_package will perform Module search. On
at least Linux Mint 20 (I'm unable to reproduce this on CentOS and Arch
Linux), my guess is that this causes CMake to find "dirty" modules that
modify the configuration state despite the Boost version being too
low/absent.
Use CONFIG to put CMake into pure Config mode and avoid Module search.
|
|
Building SDL2 from externals is incompatible with Conan's version of
libiconv, a requirement of Conan's Boost package. Solution is to use the
same Boost package in use by the linux-fresh container. This tells CMake
to download boost_1_75_0.tar.xz from yuzu-emu/ext-linux-bin at CMake's
configuration step, much the same way Qt and FFmpeg are downloaded for
Windows.
Also makes DownloadExternals.cmake cross-platform. Although the CMake
code is not entirely specific to Linux, only Linux has Boost libraries
available at ext-linux-bin, whereas there is no equivalent Boost package
for Windows at ext-windows-bin. caveat emptor
|
|
If SDL2 is not found, the error is handled by falling back to externals.
No need spill the full warning at the find_package if it's going to be
handled later, so add QUIET to it.
|
|
Sets find_package(FFmpeg) to QUIET instead of REQUIRED. This allows
using the FFmpeg external in cases where there is no suitable installed
version of FFmpeg.
Also fixes a bug where multiple CMake configures causes FFmpeg_LIBRARIES
to concatenate on itself, producing cyclical dependencies. Unsets the
variable before building it in the foreach loop.
Fixes FFmpeg_INCLUDE_DIR not including the headers generated at run
time.
|
|
Forces using SDL 2.0.14. Upgrades the SDL external to that version. Adds
a message when switching to the external.
Fixes an error where input_common only links to SDL when SDL2_FOUND is
set, but externals/CMakeLists cannot set that variable to the required
scope. Switch to using ENABLE_SDL2, which we can use since we now
include the SDL source.
|
|
Since Bintray is (soon to be) no more, there needs to be a way to
acquire SDL2. Since 20.04's version is older than our minimum required
version (2.0.12), add it as an external.
|
|
- Bintray will be deprecated on May 1st 2021 (https://bintray.com/)
- We were previously using this for Qt (non-Windows) and SDL.
- I've moved to bundled SDL on Windows.
|
|
We had used conan for opus before, but there was a bug in the AVX detection.
However we still had the Findopus.cmake file within the repository, but not used.
This patch reenables the Findopus helper and prefer the system wide installation of opus.
|
|
Download FFmpeg package version 4.3.1. Uses a file defined within the
package to determine with DLLs to copy.
Also corrects a submodule name.
|
|
The new 4.3.1 externals build seems to not be compatible with yuzu. This also fixes an oversight when renaming CMake variables.
|
|
Sets YUZU_USE_BUNDLED_FFMPEG as a CMake dependent option that is OFF on
Linux and ON for WIN32 targets. If FFmpeg is not found when
YUZU_USE_BUNDLED_FFMPEG is OFF, the bundled module/binaries are used
instead.
Reverts earlier changes to FindFFmpeg a bit, mostly to keep parity with
it's Citra version a bit. Now _FFmpeg_ALL_COMPONENTS lists all
components. We overwrite FFmpeg_LIBRARIES and FFmpeg_INCLUDE_DIR after
using the module.
|
|
Minimal binaries go brrrrrrr
|
|
Tells CMake to look for either nasm or yasm as it is required to build
FFmpeg. Avoids a compile-time error by checking for it during
configuration.
Adds a workaround for Ubuntu Bionic's old version of make not
communicating jobserver details properly.
|
|
Also renames related CMake variables to match both the Find*FFmpeg* and
variables defined within the file. Fixes odd errors produced by the old
FindFFmpeg.
Citra's FindFFmpeg is slightly modified here: adds Citra's copyright at
the beginning, renames FFmpeg_INCLUDES to FFmpeg_INCLUDE_DIR, disables a
few components in _FFmpeg_ALL_COMPONENTS, and adds the missing avutil
component to the comment above.
|
|
For Linux, instructs CMake to use the FFmpeg submodule in externals.
This is HEAVILY based on our usage of the late Unicorn. Minimal change
to MSVC as it uses the yuzu-emu/ext-windows-bin. MinGW now targets the
same ext-windows-bin libraries as MSVC for FFmpeg. Adds FFMPEG_LIBRARIES
to WIN32 and simplifies video_core/CMakeLists.txt a bit.
|
|
Update conan package version used for building.
A couple of new joystick-related functions might pose interest to yuzu's input system. Some sort of LED management have been added, but it doesn't seem to support leds used for player number indication JoyCons/ProCons use.
|
|
Boxcat is a web service but is still enabled if ENABLE_WEB_SERVICE is
disabled during the CMake stage, which causes compilation issues with
either missing headers or missing libraries.
This disables YUZU_ENABLE_BOXCAT regardless of the input if
ENABLE_WEB_SERVICE is disabled.
|
|
Co-Authored-By: Vitor K <29167336+vitor-k@users.noreply.github.com>
|
|
Removes the unnecesary burden of maintaining separate #ifdef paths and
allows us sharing generic Vulkan code across APIs.
|
|
Addresses an issue with the two competing versions of Conan's Boost
package that are currently floating around.
Adds the Boost::context target only if it's recognized by CMake as a
target.
|
|
Fixes regression by 761206cf81b271f7f4dd6a167a120325b760dbf3, causing
yuzu to not build on Linux with any version of Boost except a cached
1.73 Conan version from before about a day ago.
Moves the Boost requirement out of the `REQUIRED_LIBS` psuedo-2D-array
for Conan to instead be manually configured, using Conan as a fallback
solution if the system does not meet our requirements.
Requires any update from the linux-fresh container in order to build.
**DO NOT MERGE** until someone with the MSVC toolchain can verify this
works there, too.
|
|
__unix__ is not predefined on Apple platforms even though they are Unix.
|
|
Updates to the latest bugfix release of fmt.
|
|
Unicorn long-since lost most of its use, due to dynarmic gaining support
for handling most instructions. At this point any further issues
encountered should be used to make dynarmic better.
This also allows us to remove our dependency on Python.
|
|
|
|
* A regression was in 39c8d18 and token verification function was
broken.
* The reason being `httplib` now requires OpenSSL 1.1+ API while
LibreSSL 2.x provided OpenSSL 1.0 compatible API.
* The bundled LibreSSL has been updated to 3.2.2 so it now provides
OpenSSL 1.1 compatible API now.
* Also the path hint has been added so that it will find the correct
path to the CA certs on *nix systems.
* An option is provided so that *nix system distributions/providers can
use their own SSL implementations when compiling Yuzu/Citra to
(hopefully) complies with their maintenance guidelines.
* LURLParse is also removed since `httplib` can handle
`scheme:host:port` string itself now.
|
|
This commit aims to implement the NVDEC (Nvidia Decoder) functionality, with video frame decoding being handled by the FFmpeg library.
The process begins with Ioctl commands being sent to the NVDEC and VIC (Video Image Composer) emulated devices. These allocate the necessary GPU buffers for the frame data, along with providing information on the incoming video data. A Submit command then signals the GPU to process and decode the frame data.
To decode the frame, the respective codec's header must be manually composed from the information provided by NVDEC, then sent with the raw frame data to the ffmpeg library.
Currently, H264 and VP9 are supported, with VP9 having some minor artifacting issues related mainly to the reference frame composition in its uncompressed header.
Async GPU is not properly implemented at the moment.
Co-Authored-By: David <25727384+ogniK5377@users.noreply.github.com>
|
|
Keeps the used version of the library up to date.
|
|
|
|
Keeps the library up to date and fixes a few bugs
|
|
|
|
Keeps the library up to date.
|
|
Keeps the library up to date
|
|
Keeps the library version up to date.
|
|
Keeps the tracked version of the library up to date.
|
|
Co-Authored-By: Weiyi Wang <wwylele@gmail.com>
|
|
This also fixes building on Linux with C++20, so we can enable it across
the board for all OSes that we officially support.
|
|
Previously the name of the define was missing the BOOST_ prefix.
|
|
|
|
|
|
Provides the buildbot with one builder that is always tracking the
latest version of the C++ standard, allowing us to progressively rectify
our code and amend any differences between standards over time instead
of waiting for a complete standard change, potentially breaking a lot of
code all at once.
|
|
Keeps the package up to date with the latest major release of fmt.
This version brings in quite a bit of improvements, such as code size
reduction, etc.
|
|
Our convention uses lower-case command names, so this is just a
consistency change.
|
|
|
|
In file included from src/input_common/gcadapter/gc_adapter.cpp:8:
src/./input_common/gcadapter/gc_adapter.h:11:10: fatal error: 'libusb.h' file not found
#include <libusb.h>
^~~~~~~~~~
|
|
Reference libusb doesn't support DragonFly and FreeBSD because those
ship a different libusb implementation (supports 0.1, 1.0, 2.0 API).
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_alloc_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_alloc_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_has_capability) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_connect_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(usbi_disconnect_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_get_device_list) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_get_device_list) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_unref_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_unref_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_write
>>> referenced by core.c
>>> core.c.o:(usbi_signal_event) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_read
>>> referenced by core.c
>>> core.c.o:(usbi_clear_event) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_wrap_sys_device) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_open) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_backend
>>> referenced by core.c
>>> core.c.o:(libusb_open) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_read
>>> referenced by core.c
>>> core.c.o:(libusb_close) in archive externals/libusb/libusb.a
ld: error: undefined symbol: usbi_write
>>> referenced by core.c
>>> core.c.o:(libusb_close) in archive externals/libusb/libusb.a
ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
c++: error: linker command failed with exit code 1 (use -v to see invocation)
|
|
|
|
Supersedes #4068 see for details.
|
|
CMake Error at src/yuzu/CMakeLists.txt:7 (add_executable):
Target "yuzu" links to target "Qt5::WebEngineCore" but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
|
|
Fix clang formatting
Manual fix for configure_input_player formatting
Add missing lib usb cmake command
|
|
* externals: Revert to libressl, as build is broken with find_package(OpenSLL).
* fixup! externals: Revert to libressl, as build is broken with find_package(OpenSLL).
* fixup! externals: Revert to libressl, as build is broken with find_package(OpenSLL).
|
|
|
|
|
|
|
|
* Remove git submodules that will be loaded through conan
* Move custom Find modules to their own folder
* Use conan for downloading missing external dependencies
* CI: Change the yuzu source folder user to the user that the containers run on
* Attempt to remove dirty mingw build hack
* Install conan on the msvc build
* Only set release build type when using not using multi config generator
* Re-add qt bundled to workaround an issue with conan qt not downloading prebuilt binaries
* Add workaround for submodules that use legacy CMAKE variables
* Re-add USE_BUNDLED_QT on the msvc build bot
|
|
In file included from src/input_common/sdl/sdl_impl.cpp:16:
In file included from /usr/local/include/SDL2/SDL.h:32:
In file included from /usr/local/include/SDL2/SDL_main.h:25:
/usr/local/include/SDL2/SDL_stdinc.h:445:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
case 3: *_p++ = _val; /* fallthrough */
^
/usr/local/include/SDL2/SDL_stdinc.h:445:9: note: insert '[[fallthrough]];' to silence this warning
case 3: *_p++ = _val; /* fallthrough */
^
[[fallthrough]];
/usr/local/include/SDL2/SDL_stdinc.h:445:9: note: insert 'break;' to avoid fall-through
case 3: *_p++ = _val; /* fallthrough */
^
break;
/usr/local/include/SDL2/SDL_stdinc.h:446:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
case 2: *_p++ = _val; /* fallthrough */
^
/usr/local/include/SDL2/SDL_stdinc.h:446:9: note: insert '[[fallthrough]];' to silence this warning
case 2: *_p++ = _val; /* fallthrough */
^
[[fallthrough]];
/usr/local/include/SDL2/SDL_stdinc.h:446:9: note: insert 'break;' to avoid fall-through
case 2: *_p++ = _val; /* fallthrough */
^
break;
/usr/local/include/SDL2/SDL_stdinc.h:447:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
case 1: *_p++ = _val; /* fallthrough */
^
/usr/local/include/SDL2/SDL_stdinc.h:447:9: note: insert '[[fallthrough]];' to silence this warning
case 1: *_p++ = _val; /* fallthrough */
^
[[fallthrough]];
/usr/local/include/SDL2/SDL_stdinc.h:447:9: note: insert 'break;' to avoid fall-through
case 1: *_p++ = _val; /* fallthrough */
^
break;
3 errors generated.
|
|
|
|
|
|
An implementation of the cemuhook motion/touch protocol, this adds the
ability for users to connect several different devices to citra to send
direct motion and touch data to citra.
Co-Authored-By: jroweboy <jroweboy@gmail.com>
|
|
This fixes the early-access builds on Windows (tested on EA 58). Cmake
was previously looking for git-related files that were stripped out of
the early access builds and failing; check if those exist before reading
them.
|
|
Default enabled
|
|
This reverts commit 5cef446f42e698a524c6c3240fedb0031f8e5694.
|
|
* CMake: Get Git submodule dependencies via CMake
* CMakeLists: Fixed unintentional line break
* travis: Bring parity between linux-mingw and linux build script
* CMakeLists: Fixed typo in error message
|
|
VS 2019 is binary compatible with VS 2017, so we can safely use
the prebuilt libraries for VS 2017 with VS 2019. This makes it less
annoying to build yuzu with the most up to date toolchain.
|
|
|
|
Required due to bugfix in boost for changed template resolving rules in GCC 7.3.0 in C++17 mode
|
|
We generally shouldn't be hijacking CMAKE_CXX_FLAGS, etc as a means to
append flags to the targets, since this adds the compilation flags to
everything, including our externals, which can result in weird issues
and makes the build hierarchy fragile.
Instead, we want to just apply these compilation flags to our targets,
and let those managing external libraries to properly specify their
compilation flags.
This also results in us not getting as many warnings, as we don't raise
the warning level on every external target.
|
|
This issue has since been fixed in newer versions of Boost, so we don't
need to worry about this anymore.
|
|
|
|
|
|
|
|
|
|
- Add FPU support
- Fix access to TLS
Fix clang-format.
|
|
This was only ever used by the now-removed memory_util functions. Also,
given we don't plan to support 32-bit architectures, this is just a
leftover from citra at this point.
|
|
|
|
This is more localized to what we want to enforce directory-wise with
the project. CMAKE_SOURCE_DIR indicates the root of the source tree, but
this would cause the wrong behavior if someone included yuzu as part of
a larger buildsystem (for whatever reason). Instead, we want to use the
directory where the "project(yuzu)" command was declared as the root
path reference.
|
|
|
|
|
|
|
|
|
|
|
|
This commit also fixed a broken cmake dependency with unicorn
|
|
Set yuzu project as default StartUp Project in Visual Studio
|
|
|
|
We already have an equivalent in place for the 32-bit ARM architecture, so we
should also have one for the newer 64-bit ARM architecture as well.
|
|
|
|
The rest of the CMake script uses lowercase for commands (which is the
general CMake style), making it more consistent with surrounding code.
|
|
Use of the MSVC14 variable is discouraged in the CMake documentation
(which makes sense, since MSVC_VERSION is the more general appliable
variable).
|
|
|
|
|
|
CMake already sets it to version 17 in all cases
|
|
|
|
|
|
hicolor is the preferred location for applications. See https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout
Same as https://github.com/citra-emu/citra/pull/3007
|
|
Some of us do not have any i386 libraries required to build x86-32 universal libraries.
|
|
Since we use a custom build of unicorn it doesn't make much sense to look for
the system version, unless the user explicitly wants to override this.
|
|
Removes the annoying step when generating sln for MSVC where you have to
click an extra checkbox after the first generate fails by using a
conditional option. The USE_BUNDLED options will be off by default, but
if the enable_lib option is enabled and the toolset is msvc, they are
turned ON.
|
|
Checks to see if clang-format can be found, and if it is, sets up a
custom target that will run against the src dir and auto formats all
files. In MSVC, this is a project, and in Makefiles, its a make target
|
|
* Port citra #3352 to yuzu
This change allows non x86_64 architectures to compile yuzu by skipping the building of dynarmic
* Fixed clang-format errors
* fixes more clang-format errors
|
|
Removes the need to store to separate SRC and HEADER variables, and then
construct the target in most cases.
|
|
Updates qt from 5.7 to 5.10.0, fixing some errors relating to setting the process dpi
|
|
|
|
On MSVC if unicorn isn't found, fallback to bundled unicorn
On everything else, fallback to building unicorn in externals
Also fixes loading unicorn in msvc
|
|
Adds a cmake custom target that will build unicorn on first compile and
uses this in the build scripts as well. Updates Appveyor and Travis
build scripts to work with the new unicorn build, and updates the paths
to all of the different artifacts.
|
|
|
|
|
|
|
|
|
|
When compiling on a case-sensitive filesystem on OSX, cmake doesn't find
the FindUnicorn file, because it looks for Findunicorn.cmake. We should
uses the correct case to avoid this issue.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The mingw builds aren't submitting telemetry because the curl library
they are linked against is configured to use openSSL and openSSL looks
for the certificates in the users home folder. This keeps it from
contacting web services because it can't communicate over SSL.
This commit adds a download in mingw builds that will download a
precompiled curl for mingw linked against winssl and sspi.
|
|
|
|
|
|
|
|
|
|
|
|
Set definition WIN32_LEAN_AND_MEAN to avoid windows.h including a lot of libs that are usually not used.
|
|
This makes the compiler stricter and also enables small optimizations.
|
|
Separates the file into sections and re-orders things to fit in them
|
|
|
|
|
|
|
|
|
|
|
|
This used to be required to support both Qt4 and Qt5, but we dropped Qt4
so it's not needed anymore.
|
|
|
|
|
|
|
|
|
|
More info at http://fmtlib.net/
This commit was based on @jroweboy's work on his spdlog branch, but with
modifications.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Created a new folder in Citra's root called CMakeModules that should
contain cmake functions used by the various CMakeLists.txt.
|
|
This fixes a crash when starting games
|
|
|
|
|
|
Includes both SDL and QT frontends
|
|
|
|
|
|
Citra SDL2 doesn't have a launcher, and citra.desktop tries to execute
citra-qt which is N/A unless built with ENABLE_QT. Limiting installed
files to one of the options also makes it easier to split them into
separate non-conflicting packages downstream.
|
|
|
|
|
|
/usr/bin/ld: ../common/libcommon.a(string_util.cpp.o): undefined reference to symbol 'libiconv_open'
|
|
Most modern Unix environments use 64-bit off_t by default: OpenBSD,
FreeBSD, OS X, and Linux libc implementations such as Musl.
glibc is the lone exception; it can default to 32 bits but this is
configurable by setting _FILE_OFFSET_BITS.
Avoiding the stat64()/fstat64() interfaces is desirable because they
are nonstandard and not implemented on many systems (including
OpenBSD and FreeBSD), and using 64 bits for stat()/fstat() is either
the default or trivial to set up.
|
|
|
|
|
|
|
|
This should reduce build size on windows from roughly 12MB compressed to 7MB
|
|
|
|
In QT 5.7 they added a new check for CXX features which appends a minimum
required standard to the CXX_FLAGS. Because we were writing the flag
directly previously, cmake assumed it needed to add a c++11 flag to the
build. This tells cmake to use c++14 on every build.
|
|
This option makes the generated binary crash with an illegal
instruction when the target CPU doesn’t support the SSE4.1 extension
(see #1968), with no noticeable performance increase compared to a
generic build.
|
|
|
|
|
|
|
|
|
|
This requires bumping up to a minimum of CMake 3.1. The benefit
of using the imported target is that you can switch to the -pthread
compiler flag on request, which may be necessary for some systems if
available.
|
|
|
|
|
|
citra: Remove GLFW, Add SDL2
FindSDL2: Do not CACHE SDL2_* variables if library is not found
EmuWindow_SDL2: Set minimal client area at initialisation time
EmuWindow_SDL2: Corrections
EmuWindow_SDL2: Fix no decorations on startup on OS X
cmake: windows_copy_files
|
|
|
|
|
|
The `option` commands have been moved to the top of the file, so that
the relevant options are registered in the CMake cache even if one of
the required libraries is not found. This solves an ergonomic problem
when using bundled libraries where you have to first download GLFW
before being able to select the option to also download Qt.
|
|
|
|
Using this variable is problematic is the user has several versions of
Qt installed on their system. There is no way to know ahead of time if
the Qt version pointed to by QTDIR matches the toolchain that is being
targeted.
The Qt installation path can still be easily specified if it's not found
by CMake by setting the Qt5_DIR cache variable after the initial
configuration run, so this shouldn't present an usability issue.
|
|
|
|
|
|
|
|
CMAKE_SYSTEM_ARCHICTETURE always returns the *host* not target arch
when using the MSVC generators. (CMake bugs 15170 and 14342.)
|
|
The main advantage of switching to glad from glLoadGen is that, apart
from being actively maintained, it supports a customizable entrypoint
loader function, which makes it possible to also support OpenGL ES.
|
|
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
|
|
|
|
|
|
|
|
Apparently /DEBUG implicitly disables linker optimizations. This
explicitly re-enables them, giving a 40% reduction in binary sizes and
a very slight runtime speed improvement.
|
|
|
|
|
|
Debug was missing compiler flags, causing MSVC to default it to building
with optimizations enabled (making for a not very useful binary for
actual debugging...). Additionally, the variables were re-organized to
remove some redundancy, the old Release build type was removed, and
RelWithDebInfo was renamed to take its place instead.
|
|
Remove unneeded stuff from pre-commit script
The check against an empty commit was not needed (it is only a security for the 1st commit after git init).
It could also possibly pose problems because of the redirection to /dev/null on some windows systems.
newline at EOF & fixed indent
|
|
|
|
It may be necessary to fix the CMake paths manually for an exsting CMake
cache after this change.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`/Oi` is included in `/Ox` already
|
|
|
|
Passing -pthread to GCC as a flag makes it both link to libpthread, and make C standard library routines reentrant. This makes the additional explicit links unnecessary.
Additionally, on OSX, this is the default behavior, and clang will print a message about it being unused if it's present there.
|
|
These are implicitly linked by Xcode, but with this, you can also build it with any other generator, which does not have this behavior.
CoreFoundation is included as a part of Cocoa (which is an umbrella framework), and Cocoa is generally recommended to link against, rather than its individual components (CoreFoundation, Foundation, libobjc, ...).
|
|
This both reduces redundancy in add_executable definitions, and makes it easier to link additional libraries. In particular, extra libraries are needed on OSX - see next commit.
|
|
This enables the /MP compiler flag, which parallelizes builds of by
distributing compilation of individual object files across workes
processes, instead of being limited to per-project parallelism.
Reduces the time for a full compile from 72 s to 45 s on my machine.
|
|
|
|
Hopefully this will make people stop thinking it's a hard dependency.
|
|
While not having a noticeable effect on CPU-bound applications, this
change gives an about 30-50% increase in performance for games using
the GPU.
|
|
|
|
|
|
|
|
The X11 libraries don't need to be specified when doing dynamic linking
|
|
|
|
|
|
Uses QSettings on citra-qt, and inih on citra-cli.
|
|
It only causes issues when someone (who doesn't need it) doesn't have it.
|
|
Several cleanups to the buildsystem:
- Do better factoring of common libs between platforms.
- Add support to building on Windows.
- Remove Qt4 support.
- Re-sort file lists and add missing headers.
|
|
This should fix the GL loading errors that occur in some drivers due to
the use of deprecated functions by GLEW. Side benefits are more accurate
auto-completion (deprecated function and symbols don't exist) and faster
pointer loading (less entrypoints to load). In addition it removes an
external library depency, simplifying the build system a bit and
eliminating one set of binary libraries for Windows.
|
|
|
|
|
|
|
|
|
|
After adding FindGLEW.cmake to externals, the variable call for the GLEW include path needed to be revised.
Append flags on OSX, rather than overwrite them.
I realized that GCC_COMPILE_FLAGS was changed to CMAKE_CXX_FLAGS mistakenly, so both were changed to a more platform-independent name.
|
|
Changes for clarity of comments, removed redundant compiler flags.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|