From b98e64501c1c52e7f6bc9c2004390245433ed960 Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Sat, 25 May 2019 20:47:20 +0200 Subject: [PATCH] Make hooks run in a unity build --- CMakeLists.txt | 6 +++- include/irc.hpp | 1 + src/hooks/CMakeLists.txt | 45 +++++++++++++------------- src/hooks/visual/CMakeLists.txt | 22 +++++++------ src/hooks/visual/SDL_GL_SwapWindow.cpp | 6 ++-- 5 files changed, 44 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c30f8a19..bbb89634 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,8 @@ if (EnableCotire) set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/cotire/CMake") cmake_policy(SET CMP0011 NEW) include(cotire) + file(GLOB_RECURSE ignore_files *.cpp) + set(ignore_files ${ignore_files} CACHE INTERNAL "") endif() if(NOT CMAKE_BUILD_TYPE) @@ -27,6 +29,7 @@ set(Game "tf2" CACHE STRING "Target game") set(GameValues "tf2;hl2dm;dab;tf2c;css;dynamic" CACHE INTERNAL "List of supported game types") set_property(CACHE Game PROPERTY STRINGS ${GameValues}) +set(EnableUnityBuilds 1 CACHE BOOL "Enable Profiler") set(EnableProfiler 0 CACHE BOOL "Enable Profiler") set(EnableVisuals 1 CACHE BOOL "Enable Visuals") set(ExternalDrawing 0 CACHE BOOL "External Visuals") @@ -161,7 +164,8 @@ add_subdirectory(modules) if (EnableCotire) set_target_properties(cathook PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${CMAKE_SOURCE_DIR}/include/common.hpp") - set_target_properties(cathook PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) + set_target_properties(cathook PROPERTIES COTIRE_ADD_UNITY_BUILD true) + set_source_files_properties(${ignore_files} PROPERTIES COTIRE_EXCLUDED true) cotire(cathook) endif() diff --git a/include/irc.hpp b/include/irc.hpp index bbc504ff..756d1238 100644 --- a/include/irc.hpp +++ b/include/irc.hpp @@ -1,3 +1,4 @@ +#pragma once #include "config.h" #if ENABLE_IRC #include diff --git a/src/hooks/CMakeLists.txt b/src/hooks/CMakeLists.txt index 0fe33d44..a992fd75 100755 --- a/src/hooks/CMakeLists.txt +++ b/src/hooks/CMakeLists.txt @@ -1,27 +1,28 @@ -target_sources(cathook PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/CanPacket.cpp" - "${CMAKE_CURRENT_LIST_DIR}/CreateMove.cpp" - "${CMAKE_CURRENT_LIST_DIR}/DispatchUserMessage.cpp" - "${CMAKE_CURRENT_LIST_DIR}/FireGameEvent.cpp" - "${CMAKE_CURRENT_LIST_DIR}/GetFriendPersonaName.cpp" - "${CMAKE_CURRENT_LIST_DIR}/GetUserCmd.cpp" - "${CMAKE_CURRENT_LIST_DIR}/LevelInit.cpp" - "${CMAKE_CURRENT_LIST_DIR}/LevelShutdown.cpp" - "${CMAKE_CURRENT_LIST_DIR}/nographics.cpp" - "${CMAKE_CURRENT_LIST_DIR}/others.cpp" - "${CMAKE_CURRENT_LIST_DIR}/Paint.cpp" - "${CMAKE_CURRENT_LIST_DIR}/PreDataUpdate.cpp" - "${CMAKE_CURRENT_LIST_DIR}/SendNetMsg.cpp" - "${CMAKE_CURRENT_LIST_DIR}/Shutdown.cpp" - "${CMAKE_CURRENT_LIST_DIR}/FireEvent.cpp" - "${CMAKE_CURRENT_LIST_DIR}/FireEventClientSide.cpp" - "${CMAKE_CURRENT_LIST_DIR}/IsPlayingTimeDemo.cpp" - "${CMAKE_CURRENT_LIST_DIR}/HookTools.cpp" - "${CMAKE_CURRENT_LIST_DIR}/SendDatagram.cpp") +set(files "${CMAKE_CURRENT_LIST_DIR}/CanPacket.cpp" + "${CMAKE_CURRENT_LIST_DIR}/CreateMove.cpp" + "${CMAKE_CURRENT_LIST_DIR}/DispatchUserMessage.cpp" + "${CMAKE_CURRENT_LIST_DIR}/FireGameEvent.cpp" + "${CMAKE_CURRENT_LIST_DIR}/GetFriendPersonaName.cpp" + "${CMAKE_CURRENT_LIST_DIR}/GetUserCmd.cpp" + "${CMAKE_CURRENT_LIST_DIR}/LevelInit.cpp" + "${CMAKE_CURRENT_LIST_DIR}/LevelShutdown.cpp" + "${CMAKE_CURRENT_LIST_DIR}/nographics.cpp" + "${CMAKE_CURRENT_LIST_DIR}/others.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Paint.cpp" + "${CMAKE_CURRENT_LIST_DIR}/PreDataUpdate.cpp" + "${CMAKE_CURRENT_LIST_DIR}/SendNetMsg.cpp" + "${CMAKE_CURRENT_LIST_DIR}/Shutdown.cpp" + "${CMAKE_CURRENT_LIST_DIR}/FireEvent.cpp" + "${CMAKE_CURRENT_LIST_DIR}/FireEventClientSide.cpp" + "${CMAKE_CURRENT_LIST_DIR}/IsPlayingTimeDemo.cpp" + "${CMAKE_CURRENT_LIST_DIR}/HookTools.cpp" + "${CMAKE_CURRENT_LIST_DIR}/SendDatagram.cpp") +target_sources(cathook PRIVATE ${files}) +list(REMOVE_ITEM ignore_files ${files}) +set(ignore_files ${ignore_files} CACHE INTERNAL "") if(EnableVisuals) add_subdirectory(visual) -endif() -if(NOT EnableVisuals) +else() add_subdirectory(textmode) endif() diff --git a/src/hooks/visual/CMakeLists.txt b/src/hooks/visual/CMakeLists.txt index 7cc96c5e..6bb7042a 100755 --- a/src/hooks/visual/CMakeLists.txt +++ b/src/hooks/visual/CMakeLists.txt @@ -1,10 +1,12 @@ -target_sources(cathook PRIVATE - "${CMAKE_CURRENT_LIST_DIR}/BeginFrame.cpp" - "${CMAKE_CURRENT_LIST_DIR}/DrawModelExecute.cpp" - "${CMAKE_CURRENT_LIST_DIR}/FrameStageNotify.cpp" - "${CMAKE_CURRENT_LIST_DIR}/OverrideView.cpp" - "${CMAKE_CURRENT_LIST_DIR}/PaintTraverse.cpp" - "${CMAKE_CURRENT_LIST_DIR}/RandomInt.cpp" - "${CMAKE_CURRENT_LIST_DIR}/SDL_GL_SwapWindow.cpp" - "${CMAKE_CURRENT_LIST_DIR}/SDL_PollEvent.cpp" - "${CMAKE_CURRENT_LIST_DIR}/IN_KeyEvent.cpp") \ No newline at end of file +set(files "${CMAKE_CURRENT_LIST_DIR}/BeginFrame.cpp" + "${CMAKE_CURRENT_LIST_DIR}/DrawModelExecute.cpp" + "${CMAKE_CURRENT_LIST_DIR}/FrameStageNotify.cpp" + "${CMAKE_CURRENT_LIST_DIR}/OverrideView.cpp" + "${CMAKE_CURRENT_LIST_DIR}/PaintTraverse.cpp" + "${CMAKE_CURRENT_LIST_DIR}/RandomInt.cpp" + "${CMAKE_CURRENT_LIST_DIR}/SDL_GL_SwapWindow.cpp" + "${CMAKE_CURRENT_LIST_DIR}/SDL_PollEvent.cpp" + "${CMAKE_CURRENT_LIST_DIR}/IN_KeyEvent.cpp") +target_sources(cathook PRIVATE ${files}) +list(REMOVE_ITEM ignore_files ${files}) +set(ignore_files ${ignore_files} CACHE INTERNAL "") diff --git a/src/hooks/visual/SDL_GL_SwapWindow.cpp b/src/hooks/visual/SDL_GL_SwapWindow.cpp index ab754dd7..53cde518 100644 --- a/src/hooks/visual/SDL_GL_SwapWindow.cpp +++ b/src/hooks/visual/SDL_GL_SwapWindow.cpp @@ -11,7 +11,7 @@ #include #include "clip.h" -static bool init{ false }; +static bool swapwindow_init{ false }; static bool init_wminfo{ false }; static SDL_SysWMinfo wminfo{}; @@ -63,14 +63,14 @@ DEFINE_HOOKED_METHOD(SDL_GL_SwapWindow, void, SDL_Window *window) #endif static int prev_width, prev_height; PROF_SECTION(SWAPWINDOW_cathook); - if (not init || draw::width != prev_width || draw::height != prev_height) + if (not swapwindow_init || draw::width != prev_width || draw::height != prev_height) { prev_width = draw::width; prev_height = draw::height; draw::InitGL(); if (zerokernel::Menu::instance) zerokernel::Menu::instance->resize(draw::width, draw::height); - init = true; + swapwindow_init = true; } draw::BeginGL(); DrawCache();