aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
AgeCommit message (Collapse)Author
2022-10-06NVHOST_CTRl: Implement missing method and fix some stuffs.Fernando Sahmkow
2022-08-15dedicated_room: Initial implementationFearlessTobi
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda
[REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
2022-07-25network: Add initial files and enet dependencyFearlessTobi
2022-07-04CI: fix cachingliushuyu
2022-06-13CMakeLists: Make variable shadowing a compile-time errorMorph
Now that the entire project is free of variable shadowing, we can enforce this as a compile time error to prevent any further introduction of this logic bug.
2022-04-07CMakeLists: Enforce C4505 and C5245Morph
These are similar to Wunused-function on gcc/clang
2022-04-05build: remove -fconceptsAndrea Pappacoda
It was needed on GCC versions not supporting `-std=c++20`, but GCC 10 and newer (required to compile yuzu) don't need it anymore
2022-01-12cmake: make tests optionalAlexandre Bouvier
2021-12-06CMakeLists: Specify /Zm200 when compiling in MSVCMorph
This increases the memory heap size for constructing precompiled headers to 2x the default.
2021-10-28CMakeLists: Document the /GT compile optionMorph
2021-09-15Build System: Build with JCC Erratum MitigationFernando Sahmkow
2021-07-22shader: Initial recompiler workReinUsesLisp
2021-07-06CMakeLists: Treat -Wsign-compare as an error on GCC/ClangMorph
Treats (un)signed comparison mismatches as errors to be consistent with MSVC
2021-07-05Merge pull request #6537 from Morph1984/warningsbunnei
general: Enforce multiple warnings in MSVC
2021-07-03CMakeLists: Enforce C4189Morph
This supplements C4101 by detecting initialized but unreferenced local variables
2021-06-28CMakeLists: Disable all warnings for external headersMorph
This lets us avoid needing to wrap external headers with #pragma warning directives for warnings we treat as errors and avoids generating warnings for external code. Thanks to MerryMage for pointing this out.
2021-06-28CMakeLists: Enforce C4018, C4267, C4305, C4389Morph
2021-05-17CMakeLists: Enforce C4715 on MSVCMorph
This is similar to -Werror=return-type
2021-03-05CMakeLists: Add /utf-8 compile option for MSVCMorph
Ensures that the source and execution character sets are in UTF-8
2021-01-24cmake: Enforce -Warray-bounds and -Wmissing-field-initializers globallyReinUsesLisp
2021-01-15Merge pull request #5352 from ReinUsesLisp/remove-testerLC
cmake: Remove yuzu_tester
2021-01-15cmake: Remove yuzu_testerReinUsesLisp
We never ended up using yuzu_tester. Removing it saves code duplication with yuzu_cmd, and distribution size on prebuilt packages. For unit testing, we can use catch2 from guest code and dump the results to a file. Then execute yuzu from a script on ci if we want this to be automated.
2021-01-15cmake: Enforce -Wunused-function code-base wideReinUsesLisp
2021-01-13cmake: Enforce -Werror=switch and -Werror=unused-variableMorph
2021-01-10cmake: Enforce C4101Morph
This matches GCC's -Wunused-variable
2021-01-09cmake: Enforce C4062, C4265, C4388, and C5038ReinUsesLisp
This should match some warnings we treat as errors on gcc and clang, caching bugs early and reducing the number of instances where we have to edit commits to make CI happy when developing from Windows.
2020-12-30cmake: Enforce -WuninitializedReinUsesLisp
2020-11-27CMakeLists: disable -Winvalid-offsetofcomex
This Clang warning complains when offsetof is used on a non-standard-layout type (i.e. any class using various C++ features), even though it works fine (and is not undefined behavior as of C++17).
2020-10-30CMakeLists: Resolve MSVC build failuresLioncash
Prevents the compiler tripping up about Windows headers.
2020-10-30General: Catch more expressions with no effect on MSVCLioncash
MSVC lets us fine-tune catching expressions with no side-effects a little more.
2020-10-30General: Make ignoring a discarded return value an errorLioncash
Allows our CI to catch more potential bugs. This also removes the [[nodiscard]] attribute of IOFile's Open member function. There are cases where a file may want to be opened, but have the status of it checked at a later time.
2020-08-03CMakeLists: Resolve #4478Lioncash
This switch is enabled by default in all recent versions of GCC and Clang.
2020-08-03ipc: Allow all trivially copyable objects to be passed directly into ↵David
WriteBuffer (#4465) * ipc: Allow all trivially copyable objects to be passed directly into WriteBuffer With the support of C++20, we can use concepts to deduce if a type is an STL container or not. * More agressive concept for stl containers * Add -fconcepts * Move to common namespace * Add Common::IsBaseOf
2020-06-27Build System: Fix GCC & MINGW Build.Fernando Sahmkow
2020-04-16CMakeLists: Make missing declarations a compile-time errorLioncash
Ensures that our code always has its linkage explicit.
2020-04-16CMakeLists: Enable -Wmissing-declarations on Linux buildsLioncash
Allows catching cases where internal linkage isn't specified for helper functions when they should be marked as such.
2020-04-15CMakeLists: Specify -Wextra on linux buildsLioncash
Allows reporting more cases where logic errors may exist, such as implicit fallthrough cases, etc. We currently ignore unused parameters, since we currently have many cases where this is intentional (virtual interfaces). While we're at it, we can also tidy up any existing code that causes warnings. This also uncovered a few bugs as well.
2020-04-15CMakeLists: Make -Wreorder a compile-time errorLioncash
This can result in silent logic bugs within code, and given the amount of times these kind of warnings are caused, they should be flagged at compile-time so no new code is submitted with them.
2020-01-19CMake: Create thin archives on LinuxLéo Lam
This significantly reduces unnecessary disk writes and space usage when building Citra. libcore.a is now only ~1MB rather than several hundred megabytes.
2019-06-10yuzu_tester: Add project subdirectoryZach Hilman
2019-05-14Merge pull request #2460 from lioncash/volatileMat M
CMakeLists: Specify /volatile:iso for MSVC
2019-05-14Merge pull request #2450 from lioncash/warn-levelMat M
CMakeLists: Explicitly specify -Wall for the non-MSVC case
2019-05-09CMakeLists: Specify /volatile:iso for MSVCLioncash
By default, MSVC doesn't use standards-compliant volatile semantics. This makes it behave in a standards-compliant manner, making expectations more uniform across compilers.
2019-05-07src/CMakeLists: Add /Zc:externConstexpr to the MSVC build flagsLioncash
The C++ standard allows constexpr variables declared with the extern keyword to have external linkage. Previously MSVC wasn't abiding by this. This just makes the compiler more standards compliant during builds. Given we currently don't make use of anything that would break by this, this is safe to enable.
2019-05-07src/CMakeLists: Vertically order compilation flagsLioncash
Makes it much nicer to visually scan the options. This also starts the flag descriptions from the same column for the same reason.
2019-05-04CMakeLists: Explicitly specify -Wall for the non-MSVC caseLioncash
Ensures that -Wall is always active as a compilation flag.
2019-04-16CMakeLists: Ensure we specify Unicode as the codepage on WindowsLioncash
Previously we were building with MBCS, which is pretty undesirable. We want the application to be Unicode-aware in general. Currently, we make the command line variant of yuzu use ANSI variants of the non-standard getopt functions that we link in for Windows, given we only have an ANSI option-set. We should really replace getopt with a library that we make all build types of yuzu link in, but this will have to do for the time being.
2019-03-17CMakeLists: Move off of modifying CMAKE_*-related flagsLioncash
Modifying CMAKE_* related flags directly applies those changes to every single CMake target. This includes even the targets we have in the externals directory. So, if we ever increased our warning levels, or enabled particular ones, or enabled any other compilation setting, then this would apply to externals as well, which is often not desirable. This makes our compilation flag setup less error prone by only applying our settings to our targets and leaving the externals alone entirely. This also means we don't end up clobbering any provided flags on the command line either, allowing users to specifically use the flags they want.
2019-03-17CMakeLists: Move compilation flags into the src directoryLioncash
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.