Commit Graph

413 Commits

Author SHA1 Message Date
v1993
648bef235e
On Linux, build SDL2 from externals with HIDAPI support 2021-05-09 18:12:58 +03:00
lat9nq
751cc687bb externals: Update SDL to 107db2d8
In light of 72a49c2bbc, the SDL submodule also needs updated. Updates
to the same commit used by the SDL package in ext-windows-bin.
2021-05-09 01:36:17 -04:00
bunnei
72a49c2bbc
Update SDL2 to SDL2-2.0.15-prerelease.
- Improves native Switch JoyCon/Pro Controller support.
2021-05-08 01:51:24 -07:00
lat9nq
697a2c0018 cmake: Only config Boost during find_package
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.
2021-04-25 21:02:39 -04:00
lat9nq
ad55faaa35 cmake: Download Boost if inadequate local version
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
2021-04-22 14:09:40 -04:00
lat9nq
956b2bd332 cmake: Suppress SDL2 not found warning
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.
2021-04-21 03:00:41 -04:00
lat9nq
ea78f9a2ef cmake: Allow FFmpeg external usage and cleanup
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.
2021-04-21 02:57:22 -04:00
lat9nq
de69a5266f cmake: Use SDL 2.0.14 and fix CMake scope issue
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.
2021-04-17 23:42:57 -04:00
lat9nq
12e58917c0 externals: Add SDL 2.0.12
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.
2021-04-16 19:12:47 -04:00
bunnei
71d4abcfd4 cmake: Remove use of bintray for externals.
- 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.
2021-04-15 23:12:23 -07:00
Markus Wick
5096ed5e0a externals: Search for shared opus installation.
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.
2021-04-08 23:49:32 +02:00
lat9nq
c44ab0f8f6 cmake: Update FFmpeg to 4.3.1
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.
2021-02-09 22:17:22 -05:00
ameerj
d6ebb5c171 cmake: Revert FFmpeg 4.3.1 update for Windows builds
The new 4.3.1 externals build seems to not be compatible with yuzu. This also fixes an oversight when renaming CMake variables.
2021-02-08 23:11:59 -05:00
lat9nq
527188391c CMakeLists: Use bundled FFmpeg as a fallback
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.
2021-02-06 03:17:36 -05:00
lat9nq
8b54e219c9 CMakeLists: Update to FFmpeg 4.3.1 for WIN32
Minimal binaries go brrrrrrr
2021-02-05 22:27:37 -05:00
lat9nq
830612ef9e CMakeLists: Fixes for linux-fresh
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.
2021-02-05 18:06:57 -05:00
lat9nq
1d19eac415 CMake: Port citra-emu/citra FindFFmpeg.cmake
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.
2021-02-05 15:39:19 -05:00
lat9nq
47401016bf CMake: Implement YUZU_USE_BUNDLED_FFMPEG
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.
2021-02-05 14:49:51 -05:00
Valeri
46dda01151
Bump conan SDL2 version to 2.0.14
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.
2021-01-21 21:47:35 +03:00
lat9nq
78be397723 CMakeLists: Disable YUZU_ENABLE_BOXCAT if ENABLE_WEB_SERVICE is disabled
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.
2021-01-07 17:28:15 -05:00
FearlessTobi
c90268127b Update zstd to v1.4.8
Co-Authored-By: Vitor K <29167336+vitor-k@users.noreply.github.com>
2021-01-03 01:58:14 +01:00
ReinUsesLisp
1b9e08ab78 cmake: Always enable Vulkan
Removes the unnecesary burden of maintaining separate #ifdef paths and
allows us sharing generic Vulkan code across APIs.
2020-12-24 21:07:24 -03:00
lat9nq
9b023a56a3 cmake/conan: Conditionally add target Boost::context
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.
2020-12-15 23:47:29 -05:00
lat9nq
292dd642ce cmake: Fix generating CMake configs and linking with Boost
Fixes regression by 761206cf81, 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.
2020-12-13 01:28:51 -05:00
comex
0e122c13ad CMakeLists,network: Create YUZU_UNIX macro to replace __unix__
__unix__ is not predefined on Apple platforms even though they are Unix.
2020-12-06 18:56:40 -05:00
Lioncash
0785796372 externals: Update fmt to 7.1.2
Updates to the latest bugfix release of fmt.
2020-11-08 03:44:07 -05:00
Lioncash
fc6db97a09 core: Remove usage of unicorn
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.
2020-11-03 20:22:05 -05:00
bunnei
7dcf4c0018
Merge pull request #4831 from lioncash/fmt
externals: Update fmt to 7.1.0
2020-10-29 14:44:07 -07:00
ameerj
eb67a45ca8 video_core: NVDEC Implementation
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>
2020-10-26 23:07:36 -04:00
Lioncash
1dd4132eb1 externals: Update fmt to 7.1.0
Keeps the used version of the library up to date.
2020-10-26 18:34:44 -04:00
Morph
09126f3a4a cmake: Update to Qt 5.12.8 2020-09-09 08:50:39 -04:00
Lioncash
1f9ac1541f CMakeLists: Update fmt to 7.0.3
Keeps the library up to date and fixes a few bugs
2020-08-14 09:17:23 -04:00
Lioncash
1c3490a8db General: Tidy up clang-format warnings 2020-08-08 20:08:44 -04:00
Lioncash
2e68282214 CMakeLists: Update boost to 1.73
Keeps the library up to date.
2020-07-27 22:10:01 -04:00
Lioncash
6bb77b06dc CMakeLists: Update catch to 2.13
Keeps the library up to date
2020-07-27 22:09:04 -04:00
Lioncash
5b785232de CMakeLists: Update zstd to 1.4.5
Keeps the library version up to date.
2020-07-27 22:07:34 -04:00
Lioncash
d25265d63a CMakeFiles: Update json to 3.8.0
Keeps the tracked version of the library up to date.
2020-07-27 22:06:11 -04:00
FearlessTobi
347b50ad43 yuzu: Port translation support from Citra
Co-Authored-By: Weiyi Wang <wwylele@gmail.com>
2020-07-18 14:09:11 +02:00
LC
edb2caaae5
Merge pull request #4280 from jbeich/system-libusb
cmake: pass libusb include directory
2020-07-13 22:21:07 -04:00
Lioncash
07632ad825 CMakeLists: Enable usage of C++20 on Linux
This also fixes building on Linux with C++20, so we can enable it across
the board for all OSes that we officially support.
2020-07-12 18:15:29 -04:00
Lioncash
b971b82275 CMakeLists: Correct boost asio disabling define name
Previously the name of the define was missing the BOOST_ prefix.
2020-07-12 17:17:51 -04:00
Lioncash
539675b21a CMakeLists: Disable concepts in boost asio 2020-07-12 15:56:44 -04:00
LC
ed89bcc767
Merge pull request #4290 from lioncash/latest
CMakeLists: Make use of /std:c++latest on MSVC
2020-07-12 12:25:10 -04:00
MerryMage
6744e7ea4a CMakeLists: Do not search for system libusb on macOS 2020-07-11 14:37:34 +01:00
Lioncash
fb0fefc75c CMakeLists: Make use of /std:c++latest on MSVC
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.
2020-07-11 04:45:40 -04:00
bunnei
995067538d
Merge pull request #4221 from jbeich/unused-qt-opengl
cmake: drop dependency on QtOpenGL
2020-07-10 15:18:04 -04:00
bunnei
01a1adfb0c
Merge pull request #4287 from lioncash/fmt7
CMakeLists: Update fmt to 7.0.1
2020-07-10 13:02:21 -04:00
Lioncash
798c1b457d CMakeLists: Update fmt to 7.0.1
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.
2020-07-10 04:51:03 -04:00
Lioncash
d39b457566 CMakeLists: Use lower-case command names
Our convention uses lower-case command names, so this is just a
consistency change.
2020-07-10 01:18:40 -04:00
David Marcec
48aa076049 cmake: Fix libusb builds breaking 2020-07-10 14:02:44 +10:00
Jan Beich
48ff15602e cmake: pass libusb include directory as well
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>
          ^~~~~~~~~~
2020-07-09 15:26:54 +00:00
Jan Beich
2af7e40ce6 cmake: unbreak system libusb support
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)
2020-07-07 10:13:18 +00:00
Ameer
f829932ed1 Fix merge conflicts? 2020-07-04 00:59:40 -04:00
Jan Beich
b1b1ed7597 cmake: stop linking against QGL after c6a0ab9792 2020-07-01 22:11:39 +00:00
David Marcec
d5dfe34c49 externals: Track opus as submodule instead of using conan
Supersedes #4068 see for details.
2020-07-01 15:09:33 +10:00
Jan Beich
dda90ce1c2 cmake: depend on WebEngine with system Qt
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?
2020-06-29 23:52:45 +00:00
Ameer
121af3646d Singleton GC Adapter class, remove globals, fix naming convention
Fix clang formatting

Manual fix for configure_input_player formatting

Add missing lib usb cmake command
2020-06-21 21:17:07 -04:00
bunnei
2a3d4cad63
externals: Revert to libressl, as build is broken with find_package(OpenSSL). (#4093)
* 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).
2020-06-16 21:46:19 -04:00
bunnei
104b334e40
Update CMakeLists.txt 2020-05-31 18:35:36 -04:00
bunnei
0ac8848eae
Update CMakeLists.txt 2020-05-31 17:46:25 -04:00
Markus Wick
e8baf07136 Mark the opus version check as broken. 2020-05-09 12:47:59 +02:00
James Rowe
bc30a591ba
Replace externals with Conan (#3735)
* 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
2020-05-08 17:09:29 -04:00
Jan Beich
1a2df0a5f3 cmake: Silence -Werror=implicit-fallthrough in SDL2 headers
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.
2020-04-18 23:26:22 +00:00
Brian Clinkenbeard
13b02a1414 fix CMake build errors for certain SDL2 installations 2020-02-17 13:01:40 -08:00
Brian Clinkenbeard
68043dd233 use config mode for finding SDL2 with CMake 2020-02-10 19:56:33 -08:00
fearlessTobi
ac3690f205 Input: UDP Client to provide motion and touch controls
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>
2020-01-23 20:55:26 +01:00
Jake Merdich
dc70a36b44 Ignore git-related files in cmake for EA tarballs
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.
2019-12-05 22:48:20 -05:00
Zach Hilman
d8bcb1e973 cmake: Add cmake option to build Boxcat backend
Default enabled
2019-09-30 17:26:10 -04:00
Tobias
cae9708a00 Revert "CMake: Get Git submodule dependencies via CMake (#2474)"
This reverts commit 5cef446f42.
2019-06-29 22:19:47 +02:00
Frederic L
5cef446f42 CMake: Get Git submodule dependencies via CMake (#2474)
* 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
2019-06-19 22:26:12 -04:00
Lioncash
a6fb6ccc83 CMakeLists: Handle VS 2019 in a less annoying manner
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.
2019-05-14 19:05:51 -04:00
khang06
945e39471d fix clang-format target when using a path with spaces on windows 2019-04-07 02:10:01 +02:00
bunnei
f08db7295a
Merge pull request #2253 from lioncash/flags
Migrate off directly modifying CMAKE_* compilation-related flags directly
2019-03-23 13:46:53 -04:00
MerryMage
51f609fee7 CMakeLists: Raise minimum Boost requirement to 1.66.0
Required due to bugfix in boost for changed template resolving rules in GCC 7.3.0 in C++17 mode
2019-03-17 23:04:03 +00:00
Lioncash
13bc74e957 CMakeLists: Move compilation flags into the src directory
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.
2019-03-17 01:49:09 -04:00
Lioncash
e5b004e903 CMakeLists: Remove now-unnecessary GCC special-casing
This issue has since been fixed in newer versions of Boost, so we don't
need to worry about this anymore.
2019-03-15 20:49:58 -04:00
ReinUsesLisp
cc94a6d101 cmake: Add Vulkan option 2019-02-12 18:33:02 -03:00
ReinUsesLisp
be4641c43f gl_shader_disk_cache: Invalidate shader cache changes with CMake hash 2019-02-06 22:20:57 -03:00
Zach Hilman
15501477e7 Update Qt MSVC external to 5.12.0 2018-12-31 13:19:23 -05:00
Zach Hilman
ef4c4e239d cmake: Add USE_QT_WEB_ENGINE flag and update build system 2018-12-28 15:32:39 -05:00
Hedges
af42320021 GDBStub improvements:
- Add FPU support
- Fix access to TLS
Fix clang-format.
2018-11-13 15:44:20 +00:00
bunnei
fc9d8afead
Merge pull request #1542 from lioncash/project
CMakeLists: Use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
2018-10-23 18:44:08 -04:00
Lioncash
289adf87ac CMakeLists: Remove EMU_ARCH_BITS definition
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.
2018-10-23 12:24:43 -04:00
Weiyi Wang
d9ca6351dd cmake: mingw also needs _FILE_OFFSET_BITS=64 2018-10-23 15:11:25 +02:00
Lioncash
c8beb665dc CMakeLists: Use PROJECT_SOURCE_DIR instead of CMAKE_SOURCE_DIR
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.
2018-10-20 17:36:31 -04:00
bunnei
b8b90ce6e6
Merge pull request #1332 from FearlessTobi/port-web-backend
Port web_service from Citra
2018-10-06 02:43:09 -04:00
Weiyi Wang
fdb35760a7 string_util: unify UTF8<->UTF16 conversion to codecvt 2018-10-02 16:10:34 +02:00
fearlessTobi
ac06105dfe Review comments -part 4 2018-10-02 15:30:49 +02:00
fearlessTobi
4d139943f2 Port web_service from Citra 2018-10-02 15:30:48 +02:00
spycrab
1008be9b67 CMake: Remove superfluous CMAKE_RUNTIME_OUTPUT_DIRECTORY assignment 2018-09-25 17:55:08 +02:00
fearlessTobi
f90b75cc4c Port citra-emu/citra#4214: "Set citra-qt project as default StartUp Project in Visual Studio" 2018-09-22 12:24:02 +02:00
James Rowe
8606995515
Merge pull request #1225 from tech4me/travis-windows
travis: running mingw build on travis ci
2018-09-20 21:39:15 -06:00
tech4me
a8f54f96fc travis: running mingw build on travis ci
This commit also fixed a broken cmake dependency with unicorn
2018-09-19 14:22:14 -04:00
Frederic Laing
9f2bcdbb76
Update CMakeLists.txt
Set yuzu project as default StartUp Project in Visual Studio
2018-09-12 17:36:10 +02:00
fearlessTobi
78653f7339 Show game compatibility within yuzu 2018-08-29 15:42:53 +02:00
Lioncash
319dbc5843 CMakeLists: Add architecture detection for AArch64
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.
2018-08-14 19:06:55 -04:00
bunnei
eb2633f3ef externals: Update to SDL2-2.0.8. 2018-08-12 02:42:10 -04:00
Lioncash
3d486fffed CMakeLists: lowercase find_library usage
The rest of the CMake script uses lowercase for commands (which is the
general CMake style), making it more consistent with surrounding code.
2018-08-11 19:36:43 -04:00
Lioncash
436acbb630 CMakeLists: Change MSVC14 variable to MSVC_VERSION
Use of the MSVC14 variable is discouraged in the CMake documentation
(which makes sense, since MSVC_VERSION is the more general appliable
variable).
2018-08-11 19:36:21 -04:00
bunnei
f437c11caf audio_core: Implement Sink and SinkStream interfaces with cubeb. 2018-07-30 21:45:24 -04:00
bunnei
0b831dd2ba
Revert "Use Ninja for MSVC AppVeyor builds" (#584) 2018-06-23 03:17:32 -04:00
Michał Janiszewski
79de0f8fe8 Drop /std:c++latest from MSVC command line
CMake already sets it to version 17 in all cases
2018-06-05 22:41:28 +02:00
bunnei
2863e1edb9
Merge pull request #66 from RiverCityRansomware/qtUpdate
Updates CMakeLists to use Qt 5.10.0 instead of Qt 5.7
2018-04-02 16:06:58 -04:00
N00byKing
34b733e70e CMake: Set EMU_ARCH_BITS in CMakeLists.txt 2018-03-21 19:03:20 +01:00
bunnei
4cd2b475cb
Merge pull request #144 from KAMiKAZOW/patch-1
Install Linux icon in hicolor instead of pixmaps
2018-01-26 18:33:51 -05:00
James Rowe
9a005d5239 Fix typo for dependent options 2018-01-25 22:04:04 -07:00
KAMiKAZOW
9e41053ead
Install Linux icon in hicolor instead of pixmaps
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
2018-01-26 04:00:12 +01:00
MerryMage
add8d40f3f CMakeLists: Fix unicorn build for macOS developers with x86_64-only systems
Some of us do not have any i386 libraries required to build x86-32 universal libraries.
2018-01-21 13:59:43 +00:00
MerryMage
bba785d643 CMakeLists: Do not look for system Unicorn by default
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.
2018-01-21 13:58:39 +00:00
James Rowe
1e662e6e9a CMake: Conditionally turn on bundled libs for MSVC
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.
2018-01-20 16:44:48 -07:00
James Rowe
c3e22a2f6c CMake: Add a custom clang format target
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
2018-01-20 15:45:59 -07:00
River City Ransomware
c8a094e164 Port citra #3352 to yuzu (#103)
* 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
2018-01-19 19:36:09 -05:00
Lioncash
e710a1b989 CMakeLists: Derive the source directory grouping from targets themselves
Removes the need to store to separate SRC and HEADER variables, and then
construct the target in most cases.
2018-01-17 21:51:43 -05:00
River City Ransomware
ec204a27dc Update qt
Updates qt from 5.7 to 5.10.0, fixing some errors relating to setting the process dpi
2018-01-17 09:20:53 -05:00
spycrab
33778e4984 CMake: Override PYTHON environment variable for libunicorn 2018-01-16 20:05:05 +01:00
James Rowe
2d7a85f7af Build: Automagically handle unicorn
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
2018-01-16 09:39:07 -07:00
James Rowe
e026b66bbb Build: Add unicorn as a submodule and build it if needed
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.
2018-01-16 01:15:52 -07:00
Simonx22
e9cf161917
rename CITRA to YUZU 2018-01-15 23:05:20 +01:00
bunnei
67c8b671d2
Merge pull request #17 from spycrab/bindir
CMake: Output binaries to bin/
2018-01-15 12:56:58 -05:00
spycrab
8a440faa69 CMake: Output binaries to bin/ 2018-01-15 13:47:38 +01:00
Harry Prevor
554cc9488f fixed build for gcc c++17 / boost.icl incompatibility 2018-01-14 21:48:01 -05:00
Robin Lambertz
e9e511ca04
Fix compilation on case-sensitive OSX
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.
2018-01-14 14:40:26 +01:00
James Rowe
c2d28351c7 Add new icons and fix up the linux paths for install 2018-01-13 15:40:57 -07:00
James Rowe
ebf9a784a9 Massive removal of unused modules 2018-01-12 19:11:03 -07:00
bunnei
941cdae6f0 CMakeLists: Use C++ 17. 2018-01-12 19:37:23 -05:00
bunnei
1b9ed033fc cmake: Use LIBUNICORN_* on Windows. 2018-01-08 20:12:20 -05:00
MerryMage
f10a304ecd fix macos build 2018-01-08 19:20:10 -05:00
bunnei
738845cc0e externals: Use unicorn DLL instead of static lib. 2018-01-04 13:15:29 -05:00
bunnei
3f8b9181b5 unicorn: Use for arm interface on Windows. 2018-01-04 00:13:23 -05:00
James Rowe
9e847b7549 Build: Enable SSL in mingw by linking against WinSSL
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.
2017-09-11 09:10:17 -06:00
DaMan
40505bc4fc Add manifest 2017-09-02 20:08:11 -04:00
bunnei
f44a1e0291 common: Add build timestamp to scm_rev. 2017-08-03 20:10:37 -04:00
MerryMage
a08edd67eb tests: Add tests for vadd 2017-07-23 12:29:51 +01:00
MerryMage
9ca6728217 CMakeLists: Check that all submodules are present 2017-07-16 19:52:05 +01:00
bunnei
33b012e86b web_service: Add CMake flag to enable. 2017-07-11 18:33:41 -04:00
B3n30
6ba089fafb Set global definition WIN32_LEAN_AND_MEAN (#2807)
Set definition WIN32_LEAN_AND_MEAN to avoid windows.h including a lot of libs that are usually not used.
2017-06-24 17:38:16 -07:00
Yuri Kunde Schlesner
2ef7450465 CMake: Set MSVC flags for improved C++ standards conformance
This makes the compiler stricter and also enables small optimizations.
2017-06-17 12:21:26 -07:00
Yuri Kunde Schlesner
9a08160ae5 CMake: Re-organize root CMakeLists.txt file
Separates the file into sections and re-orders things to fit in them
2017-05-27 23:45:55 -07:00
Yuri Kunde Schlesner
c211368734 CMake: Move definitions of externals to the CMakeLists in that directory 2017-05-27 23:33:14 -07:00
Yuri Kunde Schlesner
d736cca848 CMake: Create INTERFACE targets for microprofile and nihstro 2017-05-27 22:34:52 -07:00
Yuri Kunde Schlesner
74afcd5328 CMake: Add SoundTouch include path to target property 2017-05-27 22:09:28 -07:00
Yuri Kunde Schlesner
cb49df156d CMake: Use target properties to add inih include paths 2017-05-27 21:59:02 -07:00
Yuri Kunde Schlesner
776cb91785 CMake: Define an interface target for SDL2 definitions 2017-05-27 21:38:49 -07:00
Yuri Kunde Schlesner
34b6c8bd88 CMake: Remove CITRA_QT_LIBS var
This used to be required to support both Qt4 and Qt5, but we dropped Qt4
so it's not needed anymore.
2017-05-27 20:53:39 -07:00
Yuri Kunde Schlesner
089baa04e8 CMake: Stop using FindOpenGL, which seems to not be required anymore 2017-05-27 20:48:00 -07:00
Yuri Kunde Schlesner
d6ff5c6f75 CMake: Use append instead of set to modify list 2017-05-27 20:44:51 -07:00
Yuri Kunde Schlesner
0f563111a2 CMake: Use IMPORTED target for Boost 2017-05-27 20:44:51 -07:00
Yuri Kunde Schlesner
4660bc1c78 CMake: Use IMPORTED target for libpng 2017-05-27 20:44:51 -07:00
Yuri Kunde Schlesner
a06220682c Add the fmt string formatting library
More info at http://fmtlib.net/

This commit was based on @jroweboy's work on his spdlog branch, but with
modifications.
2017-05-27 14:26:02 -07:00
Fernando Sahmkow
d8af401b2c Fix Microprofile in MinGW (#2530) 2017-02-04 15:36:38 -08:00
Kloen
abc5c134a3 Removed unused and outdated external qhexedit 2017-01-22 18:46:48 +01:00
James Rowe
0a6ca01991 Change deploy to use github releases instead, but only for the citra-nightly repo 2017-01-04 20:53:46 -07:00
James Rowe
b03e7bf28f Add deploy to bintray for builds to master 2016-12-31 13:54:51 -05:00
bunnei
d30d6f81aa Merge pull request #2303 from freiro/citra-qt_missing_sdl2_dll
Copy SDL2.dll when compiling citra-qt with msvc
2016-12-16 11:35:55 -05:00
Yuri Kunde Schlesner
17fccb8c5d Externals: Add Xbyak 2016-12-14 20:06:08 -08:00
Jeffrey Pfau
07ab936f12 CMakeLists: Autodetect clang and only then use libc++ 2016-12-13 09:41:55 -08:00
freiro
031fc3a460 Modularization of copy_msvc_libraries cmake funct
Created a new folder in Citra's root called CMakeModules that should
contain cmake functions used by the various CMakeLists.txt.
2016-12-11 15:36:34 +01:00
Yuri Kunde Schlesner
5a3ed81d9a Merge pull request #2202 from j-selby/man-docs
Add man documentation
2016-12-08 22:02:04 -08:00
James
61687840bc Disable Microprofile on Mingw builds
This fixes a crash when starting games
2016-12-05 13:10:14 +11:00
freiro
35e979f041 Appending PLATFORM_LIBRARIES instead of redefining them 2016-11-30 16:28:21 +01:00
freiro
0c22e52f52 WINVER definition moved to CMake and cleanup 2016-11-30 15:47:09 +01:00
James
e5f8df8088 Add man documentation
Includes both SDL and QT frontends
2016-11-26 13:48:00 +11:00
freiro
9ca3a2d461 Move to SDL2-2.0.5 2016-11-22 09:16:04 +01:00
James Rowe
c3ea6f4ddb Add mingw compile support 2016-11-13 23:50:46 -07:00
Jan Beich
8b833d3a97 build: don't install freedesktop.org metadata for SDL2-only builds
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.
2016-10-27 23:28:30 +00:00
Jan Beich
2240cb2eb0 build: add default install for DragonFly, Solaris, etc. 2016-10-27 23:28:30 +00:00
Jan Beich
52da9de5c4 build: clock_gettime() is in libc on BSDs 2016-10-27 23:28:30 +00:00
Jan Beich
48b6c98d31 build: libc may not provide iconv() on Unix
/usr/bin/ld: ../common/libcommon.a(string_util.cpp.o): undefined reference to symbol 'libiconv_open'
2016-10-27 23:28:30 +00:00
Anthony J. Bentley
26af2b644c common: convert to standard stat()/fstat() interfaces
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.
2016-10-27 23:28:30 +00:00
bunnei
1ea1affe0a dynarmic: Add new submodule. 2016-09-15 17:49:25 -04:00
bunnei
8410e7891c CMakeLists: Set Boost_INCLUDE_DIR. 2016-09-15 17:49:21 -04:00
bunnei
a71d6cc040 Revert "MSVC: Add RelWithDebInfo and removing debugging from Release." 2016-09-01 17:06:34 -04:00
James Rowe
8b685c4308 MSVC: Add RelWithDebInfo and removing debugging from Release.
This should reduce build size on windows from roughly 12MB compressed to 7MB
2016-08-31 20:45:38 -06:00
bunnei
33d17d0b62 qt: Use 5.7 on Windows. 2016-08-15 22:52:15 -04:00
James Rowe
a976c2e3ba CMake: Fix for QT 5.7 overwriting -std=c++1y flag
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.
2016-08-04 17:16:16 -06:00
Emmanuel Gil Peyrot
e09e683720 Remove the -msse4.1 on ¬MSVC.
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.
2016-07-23 17:10:32 +01:00
Lioncash
d5f5aeeab8 CMakeLists: Drop support for Qt 4 2016-06-17 10:48:40 -04:00
MerryMage
87de1ca968 Tests: Run tests on CI 2016-05-19 19:28:08 +01:00
MerryMage
920d2cf41d AudioCore: SDL2 Sink 2016-05-07 11:32:48 +01:00
MerryMage
27ce3b3f51 Externals: Add soundtouch 2016-04-28 13:33:14 +01:00
Sam Spilsbury
df81fa11fc CMakeLists: Use imported version of Threads::Threads
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.
2016-04-24 23:39:25 +08:00
Sam Spilsbury
d051bd3032 CMakeLists: Use CMAKE_THREAD_LIBS_INIT 2016-04-23 11:48:58 +08:00
Lioncash
5ef90464a1 CMakeFiles: Compile as C++14 2016-04-03 15:45:41 -04:00
MerryMage
ba2a54a9dd Dependencies: Remove GLFW, Add SDL2
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
2016-03-02 14:09:02 +00:00
Tony Wasserka
5f567a8229 Enable RTTI on Windows builds. 2015-11-12 16:07:49 +01:00
Yuri Kunde Schlesner
f226365f55 CMake: Silence more MSVC "deprecation" warnings 2015-09-14 17:39:51 -03:00
Yuri Kunde Schlesner
6cec330103 CMake: Make all cache options appear even in case of errors
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.
2015-09-08 20:16:34 -03:00
Yuri Kunde Schlesner
9e52aaa01d CMake: Point binary downloads to new official repo 2015-09-08 19:35:15 -03:00
Yuri Kunde Schlesner
70d0d8890a CMake: Remove support for QTDIR environment variable
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.
2015-09-08 19:35:14 -03:00
Yuri Kunde Schlesner
fdb0f8203e CMake: Don't complain when Boost isn't found in the system. 2015-09-08 19:35:13 -03:00
Yuri Kunde Schlesner
2eec2c156b CMake: Use HINTS option instead of modifying CMAKE_PREFIX_PATH for Qt 2015-09-08 19:35:12 -03:00
Yuri Kunde Schlesner
078969bdd0 CMake: Add option to download Qt and GLFW binaries over HTTP 2015-09-08 19:35:12 -03:00
Yuri Kunde Schlesner
eb26a1941e CMake: Fix architecture detection on MSVC
CMAKE_SYSTEM_ARCHICTETURE always returns the *host* not target arch
when using the MSVC generators. (CMake bugs 15170 and 14342.)
2015-09-08 19:35:11 -03:00
Yuri Kunde Schlesner
a1a5570e97 Replace the previous OpenGL loader with a glad-generated 3.3 one
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.
2015-08-30 08:45:56 -03:00
Yuri Kunde Schlesner
0fcabd2b11 Integrate the MicroProfile profiling library
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
2015-08-24 22:16:28 -03:00
darkf
e053d30bf7 Fix building under MinGW 2015-08-17 22:21:14 -07:00
bunnei
b39c053785 Rename ARCHITECTURE_X64 definition to ARCHITECTURE_x86_64. 2015-08-15 18:03:27 -04:00
bunnei
4d51792285 Common: Ported over Dolphin's code for x86 CPU capability detection. 2015-08-15 17:33:44 -04:00
Yuri Kunde Schlesner
12f78c2ba6 Enable linker optimizations in MSVC Release builds
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.
2015-07-28 14:32:29 -03:00
JSFernandes
256eb24777 Fix permissions in pre-commit hook 2015-07-14 00:58:18 +01:00