Browse Source

nuke: Goodbye PCH, you will not be missed (#2821)

Signed-off-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2821
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Co-committed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
pull/2859/head
Caio Oliveira 2 months ago
committed by crueter
parent
commit
8fa36a7737
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 8
      CMakeLists.txt
  2. 1
      docs/Options.md
  3. 3
      src/CMakeLists.txt
  4. 5
      src/audio_core/CMakeLists.txt
  5. 6
      src/audio_core/precompiled_headers.h
  6. 6
      src/common/CMakeLists.txt
  7. 14
      src/common/common_precompiled_headers.h
  8. 6
      src/common/precompiled_headers.h
  9. 6
      src/core/CMakeLists.txt
  10. 11
      src/core/precompiled_headers.h
  11. 5
      src/dedicated_room/CMakeLists.txt
  12. 6
      src/dedicated_room/precompiled_headers.h
  13. 2
      src/dynarmic/CMakeLists.txt
  14. 12
      src/dynarmic/src/dynarmic/CMakeLists.txt
  15. 5
      src/hid_core/CMakeLists.txt
  16. 6
      src/hid_core/precompiled_headers.h
  17. 5
      src/input_common/CMakeLists.txt
  18. 6
      src/input_common/precompiled_headers.h
  19. 5
      src/network/CMakeLists.txt
  20. 6
      src/network/precompiled_headers.h
  21. 5
      src/shader_recompiler/CMakeLists.txt
  22. 7
      src/shader_recompiler/precompiled_headers.h
  23. 5
      src/tests/CMakeLists.txt
  24. 6
      src/tests/precompiled_headers.h
  25. 5
      src/video_core/CMakeLists.txt
  26. 6
      src/video_core/precompiled_headers.h
  27. 5
      src/web_service/CMakeLists.txt
  28. 6
      src/web_service/precompiled_headers.h
  29. 5
      src/yuzu/CMakeLists.txt
  30. 6
      src/yuzu/precompiled_headers.h
  31. 5
      src/yuzu_cmd/CMakeLists.txt
  32. 6
      src/yuzu_cmd/precompiled_headers.h

8
CMakeLists.txt

@ -212,11 +212,6 @@ cmake_dependent_option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF
option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}")
option(YUZU_USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
if (YUZU_USE_PRECOMPILED_HEADERS)
message(STATUS "Using Precompiled Headers.")
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
endif()
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
if(YUZU_ENABLE_LTO)
include(CheckIPOSupported)
@ -235,9 +230,6 @@ if(USE_CCACHE)
message(STATUS "Found ccache at: ${CCACHE_BINARY}")
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_BINARY})
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_BINARY})
if (YUZU_USE_PRECOMPILED_HEADERS)
message(FATAL_ERROR "Precompiled headers are incompatible with ccache. Re-run CMake with -DYUZU_USE_PRECOMPILED_HEADERS=OFF.")
endif()
else()
message(WARNING "USE_CCACHE enabled, but no executable found at: ${CCACHE_PATH}")
endif()

1
docs/Options.md

@ -22,7 +22,6 @@ Notes:
- `YUZU_USE_BUNDLED_FFMPEG` (ON for non-UNIX) Download (Windows, Android) or build (UNIX) bundled FFmpeg
- `ENABLE_CUBEB` (ON) Enables the cubeb audio backend
- `YUZU_TESTS` (ON) Compile tests - requires Catch2
- `YUZU_USE_PRECOMPILED_HEADERS` (ON for non-UNIX) Use precompiled headers
- `YUZU_DOWNLOAD_ANDROID_VVL` (ON) Download validation layer binary for Android
- `YUZU_ENABLE_LTO` (OFF) Enable link-time optimization
* Not recommended on Windows

3
src/CMakeLists.txt

@ -62,9 +62,6 @@ if (MSVC AND NOT CXX_CLANG)
/Zc:throwingNew
/GT
# Modules
/experimental:module- # Explicitly disable module support due to conflicts with precompiled headers.
# External headers diagnostics
/external:anglebrackets # Treats all headers included by #include <header>, where the header file is enclosed in angle brackets (< >), as external headers
/external:W0 # Sets the default warning level to 0 for external headers, effectively disabling warnings for them.

5
src/audio_core/CMakeLists.txt

@ -56,7 +56,6 @@ add_library(audio_core STATIC
out/audio_out.h
out/audio_out_system.cpp
out/audio_out_system.h
precompiled_headers.h
renderer/audio_device.cpp
renderer/audio_device.h
renderer/audio_renderer.h
@ -266,8 +265,4 @@ if(ANDROID)
target_compile_definitions(audio_core PUBLIC HAVE_OBOE)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(audio_core PRIVATE precompiled_headers.h)
endif()
create_target_directory_groups(audio_core)

6
src/audio_core/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

6
src/common/CMakeLists.txt

@ -36,7 +36,6 @@ add_library(
cityhash.cpp
cityhash.h
common_funcs.h
common_precompiled_headers.h
common_types.h
concepts.h
container_hash.h
@ -102,7 +101,6 @@ add_library(
param_package.h
parent_of_member.h
point.h
precompiled_headers.h
quaternion.h
range_map.h
range_mutex.h
@ -270,8 +268,4 @@ if(ANDROID)
target_link_libraries(common PRIVATE android)
endif()
if(YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(common PRIVATE precompiled_headers.h)
endif()
create_target_directory_groups(common)

14
src/common/common_precompiled_headers.h

@ -1,14 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <algorithm>
#include <array>
#include <chrono>
#include <memory>
#include <fmt/ranges.h>
#include "common/assert.h"
#include "common/common_types.h"

6
src/common/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

6
src/core/CMakeLists.txt

@ -1146,7 +1146,6 @@ add_library(core STATIC
memory/dmnt_cheat_vm.h
perf_stats.cpp
perf_stats.h
precompiled_headers.h
reporter.cpp
reporter.h
tools/freezer.cpp
@ -1272,9 +1271,4 @@ else()
hle/service/ssl/ssl_backend_none.cpp)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(core PRIVATE precompiled_headers.h)
endif()
create_target_directory_groups(core)

11
src/core/precompiled_headers.h

@ -1,11 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <boost/container/flat_map.hpp> // used by service.h which is heavily included
#include <boost/intrusive/rbtree.hpp> // used by k_auto_object.h which is heavily included
#include "common/common_precompiled_headers.h"
#include "core/hle/kernel/k_process.h"

5
src/dedicated_room/CMakeLists.txt

@ -8,7 +8,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
add_library(yuzu-room STATIC EXCLUDE_FROM_ALL
precompiled_headers.h
yuzu_room.cpp
yuzu_room.h
yuzu_room.rc
@ -26,8 +25,4 @@ if (MSVC)
endif()
target_link_libraries(yuzu-room PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(yuzu-room PRIVATE precompiled_headers.h)
endif()
create_target_directory_groups(yuzu-room)

6
src/dedicated_room/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

2
src/dynarmic/CMakeLists.txt

@ -24,8 +24,6 @@ option(DYNARMIC_IGNORE_ASSERTS "Ignore asserts" OFF)
option(DYNARMIC_TESTS_USE_UNICORN "Enable fuzzing tests against unicorn" OFF)
CMAKE_DEPENDENT_OPTION(DYNARMIC_USE_LLVM "Support disassembly of jitted x86_64 code using LLVM" OFF "NOT YUZU_DISABLE_LLVM" OFF)
option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
option(DYNARMIC_INSTALL "Install dynarmic headers and CMake files" OFF)
option(DYNARMIC_USE_BUNDLED_EXTERNALS "Use all bundled externals (useful when e.g. cross-compiling)" OFF)
option(DYNARMIC_ENABLE_LTO "Enable LTO" OFF)

12
src/dynarmic/src/dynarmic/CMakeLists.txt

@ -410,15 +410,3 @@ target_compile_definitions(dynarmic PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
if (DYNARMIC_ENABLE_LTO)
set_property(TARGET dynarmic PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
endif()
if (DYNARMIC_USE_PRECOMPILED_HEADERS)
set(PRECOMPILED_HEADERS "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/ir/ir_emitter.h>")
if ("x86_64" IN_LIST ARCHITECTURE)
list(PREPEND PRECOMPILED_HEADERS "$<$<COMPILE_LANGUAGE:CXX>:<xbyak/xbyak.h$<ANGLE-R>>")
endif()
if ("arm64" IN_LIST ARCHITECTURE)
list(PREPEND PRECOMPILED_HEADERS "$<$<COMPILE_LANGUAGE:CXX>:<oaknut/oaknut.hpp$<ANGLE-R>>")
endif()
target_precompile_headers(dynarmic PRIVATE ${PRECOMPILED_HEADERS})
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
endif()

5
src/hid_core/CMakeLists.txt

@ -134,7 +134,6 @@ add_library(hid_core STATIC
hid_result.h
hid_types.h
hid_util.h
precompiled_headers.h
resource_manager.cpp
resource_manager.h
)
@ -160,7 +159,3 @@ endif()
create_target_directory_groups(hid_core)
target_link_libraries(hid_core PUBLIC core)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(hid_core PRIVATE precompiled_headers.h)
endif()

6
src/hid_core/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/input_common/CMakeLists.txt

@ -35,7 +35,6 @@ add_library(input_common STATIC
input_poller.h
main.cpp
main.h
precompiled_headers.h
)
if (MSVC)
@ -92,10 +91,6 @@ endif()
create_target_directory_groups(input_common)
target_link_libraries(input_common PUBLIC hid_core PRIVATE common Boost::headers)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(input_common PRIVATE precompiled_headers.h)
endif()
if (ANDROID)
target_sources(input_common PRIVATE
drivers/android.cpp

6
src/input_common/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/network/CMakeLists.txt

@ -11,7 +11,6 @@ add_library(network STATIC
network.h
packet.cpp
packet.h
precompiled_headers.h
room.cpp
room.h
room_member.cpp
@ -32,7 +31,3 @@ endif()
if (PLATFORM_SUN)
target_link_libraries(network PRIVATE socket nsl)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(network PRIVATE precompiled_headers.h)
endif()

6
src/network/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/shader_recompiler/CMakeLists.txt

@ -237,7 +237,6 @@ add_library(shader_recompiler STATIC
ir_opt/vendor_workaround_pass.cpp
ir_opt/verification_pass.cpp
object_pool.h
precompiled_headers.h
profile.h
program_header.h
runtime_info.h
@ -266,7 +265,3 @@ else()
endif()
create_target_directory_groups(shader_recompiler)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(shader_recompiler PRIVATE precompiled_headers.h)
endif()

7
src/shader_recompiler/precompiled_headers.h

@ -1,7 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"
#include "frontend/maxwell/translate/impl/impl.h"

5
src/tests/CMakeLists.txt

@ -17,7 +17,6 @@ add_executable(tests
common/unique_function.cpp
core/core_timing.cpp
core/internal_network/network.cpp
precompiled_headers.h
video_core/memory_tracker.cpp
input_common/calibration_configuration_job.cpp
)
@ -28,7 +27,3 @@ target_link_libraries(tests PRIVATE common core input_common video_core)
target_link_libraries(tests PRIVATE ${PLATFORM_LIBRARIES} Catch2::Catch2WithMain Threads::Threads)
add_test(NAME tests COMMAND tests)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(tests PRIVATE precompiled_headers.h)
endif()

6
src/tests/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/video_core/CMakeLists.txt

@ -102,7 +102,6 @@ add_library(video_core STATIC
invalidation_accumulator.h
memory_manager.cpp
memory_manager.h
precompiled_headers.h
present.h
pte_kind.h
query_cache/bank_base.h
@ -395,10 +394,6 @@ if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
target_link_libraries(video_core PRIVATE dynarmic::dynarmic)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(video_core PRIVATE precompiled_headers.h)
endif()
if (ANDROID AND ARCHITECTURE_arm64)
target_link_libraries(video_core PRIVATE adrenotools)
endif()

6
src/video_core/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/web_service/CMakeLists.txt

@ -4,7 +4,6 @@
add_library(web_service STATIC
announce_room_json.cpp
announce_room_json.h
precompiled_headers.h
verify_login.cpp
verify_login.h
verify_user_jwt.cpp
@ -21,7 +20,3 @@ target_link_libraries(web_service PRIVATE common network nlohmann_json::nlohmann
find_package(OpenSSL REQUIRED)
target_link_libraries(web_service PRIVATE OpenSSL::SSL OpenSSL::Crypto)
target_compile_definitions(web_service PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(web_service PRIVATE precompiled_headers.h)
endif()

6
src/web_service/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/yuzu/CMakeLists.txt

@ -198,7 +198,6 @@ add_executable(yuzu
multiplayer/state.cpp
multiplayer/state.h
multiplayer/validation.h
precompiled_headers.h
startup_checks.cpp
startup_checks.h
set_play_time_dialog.cpp
@ -448,10 +447,6 @@ if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
target_link_libraries(yuzu PRIVATE dynarmic::dynarmic)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(yuzu PRIVATE precompiled_headers.h)
endif()
if (YUZU_ROOM)
target_link_libraries(yuzu PRIVATE yuzu-room)
endif()

6
src/yuzu/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"

5
src/yuzu_cmd/CMakeLists.txt

@ -24,7 +24,6 @@ add_executable(yuzu-cmd
emu_window/emu_window_sdl2_null.h
emu_window/emu_window_sdl2_vk.cpp
emu_window/emu_window_sdl2_vk.h
precompiled_headers.h
sdl_config.cpp
sdl_config.h
yuzu.cpp
@ -61,8 +60,4 @@ if (MSVC)
copy_yuzu_SDL_deps(yuzu-cmd)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(yuzu-cmd PRIVATE precompiled_headers.h)
endif()
create_target_directory_groups(yuzu-cmd)

6
src/yuzu_cmd/precompiled_headers.h

@ -1,6 +0,0 @@
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "common/common_precompiled_headers.h"
Loading…
Cancel
Save