From 74d22df42e6055becd39f8773cfdf9e3cd509dda Mon Sep 17 00:00:00 2001 From: redpolline <11156324-redpolline@users.noreply.gitlab.com> Date: Tue, 4 Feb 2025 18:28:11 -0500 Subject: [PATCH] Fix CI to use BAT files only for win build. For consistency have the CI use the same build path as the end-user builds. Use where.exe from wine-10.0. CI's version is a stub. Use one that actually works, until the CI gets updated. Also, fix broken RtlGenRandom by importing ADVAPI32's GetUserNameW(), and calling GetModuleHandleW() / GetProcAddress() for SystemFunction032(). Instead of trying to use a fake import lib. Bonus: Can now use the host system's username as the default for the steam user name instead of "Noob". ("Noob" is still used as the fallback if this call fails, or the host system's username is invalid.) --- .gitlab-ci.yml | 26 +- build_set_protobuf_directories.bat | 11 +- build_win_debug_experimental.bat | 37 +- build_win_debug_experimental_steamclient.bat | 147 ++++++- build_win_debug_lobby_connect.bat | 47 +- build_win_find_interfaces.bat | 39 +- build_win_lobby_connect.bat | 47 +- build_win_release.bat | 41 +- build_win_release_experimental.bat | 36 +- ...d_win_release_experimental_steamclient.bat | 145 ++++++- dll/base.cpp | 31 +- dll/rtlgenrandom.c | 4 - dll/rtlgenrandom.def | 3 - dll/settings_parser.cpp | 34 +- generate_all_deps.bat | 57 +++ generate_build_win.bat | 406 ++++++++++++++++++ generate_build_win_bat.py | 132 ------ 17 files changed, 926 insertions(+), 317 deletions(-) delete mode 100644 dll/rtlgenrandom.c delete mode 100644 dll/rtlgenrandom.def create mode 100644 generate_all_deps.bat create mode 100644 generate_build_win.bat delete mode 100644 generate_build_win_bat.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 98989b5..1a7612e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,27 +59,29 @@ build_windows: image: fedora:35 script: - - dnf -y install wine wget p7zip sed dos2unix python + - dnf -y install wine wget p7zip sed dos2unix python cpio - unix2dos *.txt - unix2dos files_example/*.txt files_example/*/*.txt - sed -i 's/..\\vcpkg\\installed\\/.\\protobuf_/g' build_set_protobuf_directories.bat - wget 'https://gitlab.com/Mr_Goldberg/goldberg_emulator/uploads/48db8f434a193aae872279dc4f5dde6a/sdk_standalone.7z' - wget 'https://gitlab.com/Mr_Goldberg/goldberg_emulator/uploads/0119304e030098b4821d73170fe52084/protobuf_x64-windows-static.7z' - wget 'https://gitlab.com/Mr_Goldberg/goldberg_emulator/uploads/4185a97ab363ddc1859127e59ec68581/protobuf_x86-windows-static.7z' + # Ancient CI version of wine doesn't support the where.exe cmd. (It's a stub.) Use the version from wine-10.0. + - wget 'https://dl.fedoraproject.org/pub/fedora/linux/updates/41/Everything/x86_64/Packages/w/wine-core-10.0-1.fc41.i686.rpm' + - mkdir wine + - echo './usr/lib/wine/i386-windows/where.exe' > extract.txt; rpm2cpio wine-core-10.0-1.fc41.i686.rpm | cpio -ivdE extract.txt; rm -f extract.txt + - /usr/bin/mv -f ./usr/lib/wine/i386-windows/where.exe wine/; rm -rf ./usr/ + - /usr/bin/cp -f wine/where.exe /usr/lib/wine/i386-windows/where.exe; /usr/bin/cp -f wine/where.exe /usr/lib64/wine/x86_64-windows/where.exe - 7za x protobuf_x86-windows-static.7z -oprotobuf_x86-windows-static - 7za x protobuf_x64-windows-static.7z -oprotobuf_x64-windows-static - 7za x sdk_standalone.7z -osdk_standalone - - DLL_FILES="$(ls dll/*.cpp | tr "\n" " " | tr "/" "\\\\")"; sed "s|dll/\*.cpp|$DLL_FILES|g" -i *.bat - - DLL_FILES="$(ls dll/*.proto | tr "\n" " " | tr "/" "\\\\" | sed "s/.proto/.pb.cc/g")"; sed "s|dll/\*.cc|$DLL_FILES|g" -i *.bat - sed "s| /MP12 | /MP4 |g" -i *.bat # CI can't produce PDBs. Throws a bunch of errors, and skips building the PEs. - - sed "s| /DDEBUG\:FULL | |g" -i *.bat - # Turn on echo. - - sed "s|echo off|echo on|g" -i *.bat - - python generate_build_win_bat.py + - touch CI_BUILD.TAG - export WINEDEBUG=-all - - wine cmd /c build_win_release_test.bat - - cp build_win_release_test.bat release/build_win_release_test.bat + - WINEPATH=$PWD/wine wine cmd /c build_win_debug_experimental_steamclient.bat 8 + - WINEPATH=$PWD/wine wine cmd /c build_win_release.bat 8 + artifacts: paths: - release/ @@ -162,9 +164,9 @@ deploy_all: - mv linux release/ - shopt -s extglob - rm -rf .g* - - rm -rf !(release) - - mv release/* ./ - - rm -rf release + - rm -rf !(release|debug) +# - mv release/* ./ +# - rm -rf release - echo $CI_JOB_ID > job_id - tree artifacts: diff --git a/build_set_protobuf_directories.bat b/build_set_protobuf_directories.bat index fb3e63b..8bd16a6 100755 --- a/build_set_protobuf_directories.bat +++ b/build_set_protobuf_directories.bat @@ -1,7 +1,14 @@ @echo off cd /d "%~dp0" -SET PROTOBUF_X86_DIRECTORY=..\vcpkg\installed\x86-windows-static -SET PROTOBUF_X64_DIRECTORY=..\vcpkg\installed\x64-windows-static + +SET TEST_A=%cd% +REM CI doesn't like this var expansion of "%cd%\". +cd ..\vcpkg\installed\x86-windows-static +SET PROTOBUF_X86_DIRECTORY=%cd% +cd %TEST_A% +cd ..\vcpkg\installed\x64-windows-static +SET PROTOBUF_X64_DIRECTORY=%cd% +cd %TEST_A% rem location of protoc in protobuf directories: SET PROTOC_X86_EXE=%PROTOBUF_X86_DIRECTORY%\tools\protobuf\protoc.exe diff --git a/build_win_debug_experimental.bat b/build_win_debug_experimental.bat index 10ebb89..7cbc3c8 100755 --- a/build_win_debug_experimental.bat +++ b/build_win_debug_experimental.bat @@ -1,38 +1,9 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\experimental ( mkdir build\experimental ) -IF NOT EXIST build\experimental\debug ( mkdir build\experimental\debug ) -IF NOT EXIST build\experimental\debug\x86 ( mkdir build\experimental\debug\x86 ) -IF NOT EXIST build\experimental\debug\x64 ( mkdir build\experimental\debug\x64 ) -IF EXIST build\experimental\debug\x86\*.* ( DEL /F /S /Q build\experimental\debug\x86\*.* ) -IF EXIST build\experimental\debug\x64\*.* ( DEL /F /S /Q build\experimental\debug\x64\*.* ) +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) -IF NOT EXIST debug ( mkdir debug ) -IF NOT EXIST debug\experimental ( mkdir debug\experimental ) -IF EXIST debug\experimental\*.* ( DEL /F /S /Q debug\experimental\*.* ) +SET SKIP_EXPERIMENTAL_STEAMCLIENT_BUILD=1 +SET SKIP_STEAMCLIENT_LOADER=1 -call build_set_protobuf_directories.bat - -setlocal -"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto -call build_env_x86.bat -SET OLD_DIR=%cd% -cd build\experimental\debug\x86 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /I%OLD_DIR%/ImGui /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ /DEMU_EXPERIMENTAL_BUILD /DCONTROLLER_SUPPORT /DEMU_OVERLAY /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental\steam_api.pdb /link /OUT:%OLD_DIR%\debug\experimental\steam_api.dll -cl /LD %OLD_DIR%/steamclient.cpp /EHsc /MP12 /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental\steamclient.pdb /link /OUT:%OLD_DIR%\debug\experimental\steamclient.dll -cd %OLD_DIR% -endlocal - -setlocal -"%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto -call build_env_x64.bat -SET OLD_DIR=%cd% -cd build\experimental\debug\x64 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /I%OLD_DIR%/ImGui /I%OLD_DIR%/%PROTOBUF_X64_DIRECTORY%\include\ /DEMU_EXPERIMENTAL_BUILD /DCONTROLLER_SUPPORT /DEMU_OVERLAY /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X64_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental\steam_api64.pdb /link /OUT:%OLD_DIR%\debug\experimental\steam_api64.dll -cl /LD %OLD_DIR%/steamclient.cpp /EHsc /MP12 /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental\steamclient64.pdb /link /OUT:%OLD_DIR%\debug\experimental\steamclient64.dll -cd %OLD_DIR% -endlocal +call build_win_debug_experimental_steamclient.bat diff --git a/build_win_debug_experimental_steamclient.bat b/build_win_debug_experimental_steamclient.bat index 32da89a..85d7f8d 100644 --- a/build_win_debug_experimental_steamclient.bat +++ b/build_win_debug_experimental_steamclient.bat @@ -1,36 +1,141 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\experimental_steamclient ( mkdir build\experimental_steamclient ) -IF NOT EXIST build\experimental_steamclient\debug ( mkdir build\experimental_steamclient\debug ) -IF NOT EXIST build\experimental_steamclient\debug\x86 ( mkdir build\experimental_steamclient\debug\x86 ) -IF NOT EXIST build\experimental_steamclient\debug\x64 ( mkdir build\experimental_steamclient\debug\x64 ) -IF EXIST build\experimental_steamclient\debug\x86\*.* ( DEL /F /S /Q build\experimental_steamclient\debug\x86\*.* ) -IF EXIST build\experimental_steamclient\debug\x64\*.* ( DEL /F /S /Q build\experimental_steamclient\debug\x64\*.* ) +SET OLD_DIR=%cd% + +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) + +IF NOT DEFINED BUILT_ALL_DEPS ( call generate_all_deps.bat ) + +IF EXIST build\experimental\steamclient\debug\x86\*.* ( DEL /F /S /Q build\experimental\steamclient\debug\x86\*.* ) +IF EXIST build\experimental\steamclient\debug\x64\*.* ( DEL /F /S /Q build\experimental\steamclient\debug\x64\*.* ) -IF NOT EXIST debug ( mkdir debug ) -IF NOT EXIST debug\experimental_steamclient ( mkdir debug\experimental_steamclient ) IF EXIST debug\experimental_steamclient\*.* ( DEL /F /S /Q debug\experimental_steamclient\*.* ) -call build_set_protobuf_directories.bat - setlocal + +IF DEFINED SKIP_X86 GOTO LK_X64 + "%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x86.bat -SET OLD_DIR=%cd% -cd build\experimental_steamclient\debug\x86 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /I%OLD_DIR%/ImGui /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ /DSTEAMCLIENT_DLL /DCONTROLLER_SUPPORT /DEMU_EXPERIMENTAL_BUILD /DEMU_OVERLAY /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental_steamclient\steamclient.pdb /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient.dll -cl %OLD_DIR%/steamclient_loader/*.cpp advapi32.lib user32.lib /EHsc /MP12 /Ox /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x32.pdb /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x32.exe + +REM Non-STEAMCLIENT_DLL debug sc_deps. +cd "%OLD_DIR%\build\experimental_steamclient\debug\x86\sc_deps" +cl /c @%CDS_DIR%\DEBUG.BLD @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\SC_DEPS.BLD +IF EXIST %CDS_DIR%\DEBUG_SC_DEPS_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_SC_DEPS_X86.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_SC_DEPS_X86.LKS + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_EXP_STEAMCLIENT_DLL_X86 + +REM Link Non-STEAMCLIENT_DLL debug steam_api.dll. +cd "%OLD_DIR%\build\experimental\debug\x86\" +IF EXIST %CDS_DIR%\DEBUG_STEAMAPI_NON_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMAPI_NON_X86.LKS ) +echo /link /OUT:%OLD_DIR%\debug\experimental\steam_api.dll > %CDS_DIR%\DEBUG_STEAMAPI_NON_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental\steam_api.pdb >> %CDS_DIR%\DEBUG_STEAMAPI_NON_X86.LKS ) +cl /LD @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\PROTOBUF_X86.LKS @%CDS_DIR%\EXPERIMENTAL.BLD @%CDS_DIR%\EXPERIMENTAL.LKS @%CDS_DIR%\DEBUG_ALL_DEPS_X86.LKS @%CDS_DIR%\DEBUG_SC_DEPS_X86.LKS @%CDS_DIR%\DEBUG_STEAMAPI_NON_X86.LKS + +:LK_EXP_STEAMCLIENT_DLL_X86 + +IF DEFINED SKIP_EXPERIMENTAL_STEAMCLIENT_BUILD GOTO LK_STEAMCLIENT_DLL_X86 + +REM Link STEAMCLIENT_DLL debug steamclient.dll +cd "%OLD_DIR%\build\experimental_steamclient\debug\x86" +IF EXIST %CDS_DIR%\DEBUG_STEAMCLIENT_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMCLIENT_X86.LKS ) +echo /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient.dll > %CDS_DIR%\DEBUG_STEAMCLIENT_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental_steamclient\steamclient.pdb >> %CDS_DIR%\DEBUG_STEAMCLIENT_X86.LKS ) +cl /LD @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\PROTOBUF_X86.LKS @%CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS @%CDS_DIR%\DEBUG_ALL_DEPS_X86.LKS @%CDS_DIR%\DEBUG_SC_DEPS_X86.LKS @%CDS_DIR%\DEBUG_STEAMCLIENT_X86.LKS + +:LK_STEAMCLIENT_DLL_X86 + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_STEAMCLIENT_LOADER_X86 + +REM Link Non-STEAMCLIENT_DLL debug steamclient.dll. +cd "%OLD_DIR%\build\experimental\debug\x86\" +IF EXIST %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X86.LKS ) +echo /link /OUT:%OLD_DIR%\debug\experimental\steamclient.dll > %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental\steamclient.pdb >> %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X86.LKS ) +cl /LD @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\STEAMCLIENT.BLD @%CDS_DIR%\DEBUG_STEAMCLIENT_NON_X86.LKS + +:LK_STEAMCLIENT_LOADER_X86 + +IF DEFINED SKIP_STEAMCLIENT_LOADER GOTO LK_X64 + +REM Build steamclient_loader debug x86. +cd "%OLD_DIR%\build\experimental_steamclient\steamclient_loader\debug\x86" +cl /c @%CDS_DIR%\DEBUG.BLD @%CDS_DIR%\STEAMCLIENT_LOADER.BLD +IF EXIST %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X86.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X86.LKS +echo /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x32.exe >> %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x32.pdb >> %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X86.LKS ) +cl @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\STEAMCLIENT_LOADER.LKS @%CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X86.LKS cd %OLD_DIR% + +:LK_X64 + endlocal + setlocal + +IF DEFINED SKIP_X64 GOTO LK_END + +"%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x64.bat -SET OLD_DIR=%cd% -cd build\experimental_steamclient\debug\x64 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /I%OLD_DIR%/ImGui /I%OLD_DIR%/%PROTOBUF_X64_DIRECTORY%\include\ /DSTEAMCLIENT_DLL /DCONTROLLER_SUPPORT /DEMU_EXPERIMENTAL_BUILD /DEMU_OVERLAY /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X64_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental_steamclient\steamclient64.pdb /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient64.dll -cl %OLD_DIR%/steamclient_loader/*.cpp advapi32.lib user32.lib /EHsc /MP12 /Ox /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x64.pdb /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x64.exe + +REM Non-STEAMCLIENT_DLL debug sc_deps. +cd "%OLD_DIR%\build\experimental_steamclient\debug\x64\sc_deps" +cl /c @%CDS_DIR%\DEBUG.BLD @%CDS_DIR%\PROTOBUF_X64.BLD @%CDS_DIR%\SC_DEPS.BLD +IF EXIST %CDS_DIR%\DEBUG_SC_DEPS_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_SC_DEPS_X64.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_SC_DEPS_X64.LKS + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_EXP_STEAMCLIENT_DLL_X64 + +REM Link Non-STEAMCLIENT_DLL debug steam_api64.dll. +cd "%OLD_DIR%\build\experimental\debug\x64\" +IF EXIST %CDS_DIR%\DEBUG_STEAMAPI_NON_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMAPI_NON_X64.LKS ) +echo /link /OUT:%OLD_DIR%\debug\experimental\steam_api64.dll > %CDS_DIR%\DEBUG_STEAMAPI_NON_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental\steam_api64.pdb >> %CDS_DIR%\DEBUG_STEAMAPI_NON_X64.LKS ) +cl /LD @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\PROTOBUF_X64.LKS @%CDS_DIR%\EXPERIMENTAL.BLD @%CDS_DIR%\EXPERIMENTAL.LKS @%CDS_DIR%\DEBUG_ALL_DEPS_X64.LKS @%CDS_DIR%\DEBUG_SC_DEPS_X64.LKS @%CDS_DIR%\DEBUG_STEAMAPI_NON_X64.LKS + +:LK_EXP_STEAMCLIENT_DLL_X64 + +IF DEFINED SKIP_EXPERIMENTAL_STEAMCLIENT_BUILD GOTO LK_STEAMCLIENT_DLL_X64 + +REM Link STEAMCLIENT_DLL debug steamclient64.dll +cd "%OLD_DIR%\build\experimental_steamclient\debug\x64" +IF EXIST %CDS_DIR%\DEBUG_STEAMCLIENT_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMCLIENT_X64.LKS ) +echo /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient64.dll > %CDS_DIR%\DEBUG_STEAMCLIENT_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental_steamclient\steamclient64.pdb >> %CDS_DIR%\DEBUG_STEAMCLIENT_X64.LKS ) +cl /LD @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\PROTOBUF_X64.LKS @%CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS @%CDS_DIR%\DEBUG_ALL_DEPS_X64.LKS @%CDS_DIR%\DEBUG_SC_DEPS_X64.LKS @%CDS_DIR%\DEBUG_STEAMCLIENT_X64.LKS + +:LK_STEAMCLIENT_DLL_X64 + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_STEAMCLIENT_LOADER_X64 + +REM Link Non-STEAMCLIENT_DLL debug steamclient64.dll. +cd "%OLD_DIR%\build\experimental\debug\x64\" +IF EXIST %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X64.LKS ) +echo /link /OUT:%OLD_DIR%\debug\experimental\steamclient64.dll > %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental\steamclient64.pdb >> %CDS_DIR%\DEBUG_STEAMCLIENT_NON_X64.LKS ) +cl /LD @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\STEAMCLIENT.BLD @%CDS_DIR%\DEBUG_STEAMCLIENT_NON_X64.LKS + +:LK_STEAMCLIENT_LOADER_X64 + +IF DEFINED SKIP_STEAMCLIENT_LOADER GOTO LK_END + +REM Build steamclient_loader debug x64. +cd "%OLD_DIR%\build\experimental_steamclient\steamclient_loader\debug\x64" +cl /c @%CDS_DIR%\DEBUG.BLD @%CDS_DIR%\STEAMCLIENT_LOADER.BLD +IF EXIST %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X64.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X64.LKS +echo /link /OUT:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x64.exe >> %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\experimental_steamclient\steamclient_loader_x64.pdb >> %CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X64.LKS ) +cl @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\STEAMCLIENT_LOADER.LKS @%CDS_DIR%\DEBUG_STEAMCLIENT_LOADER_X64.LKS cd %OLD_DIR% + +:LK_END + endlocal + +copy Readme_experimental.txt debug\experimental\Readme.txt +copy steamclient_loader\ColdClientLoader.ini debug\experimental_steamclient\ +copy Readme_experimental_steamclient.txt debug\experimental_steamclient\Readme.txt diff --git a/build_win_debug_lobby_connect.bat b/build_win_debug_lobby_connect.bat index 0ae8792..7ad250e 100644 --- a/build_win_debug_lobby_connect.bat +++ b/build_win_debug_lobby_connect.bat @@ -1,25 +1,46 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\debug ( mkdir build\debug ) -IF NOT EXIST build\debug\lobby_connect ( mkdir build\debug\lobby_connect ) -IF NOT EXIST build\debug\lobby_connect\x86 ( mkdir build\debug\lobby_connect\x86 ) +SET OLD_DIR=%cd% + +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) + +IF NOT DEFINED BUILT_ALL_DEPS ( call generate_all_deps.bat ) + IF EXIST build\debug\lobby_connect\x86\*.* ( DEL /F /S /Q build\debug\lobby_connect\x86\*.* ) +IF EXIST build\debug\lobby_connect\x64\*.* ( DEL /F /S /Q build\debug\lobby_connect\x64\*.* ) -IF NOT EXIST debug ( mkdir debug ) -IF NOT EXIST debug\lobby_connect ( mkdir debug\lobby_connect ) IF EXIST debug\lobby_connect\*.* ( DEL /F /S /Q debug\lobby_connect\*.* ) -call build_set_protobuf_directories.bat - setlocal "%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x86.bat -SET OLD_DIR=%cd% -cd build\debug\lobby_connect\x86 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /DNO_DISK_WRITES /DLOBBY_CONNECT /DEMU_RELEASE_BUILD /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ %OLD_DIR%/lobby_connect.cpp %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Comdlg32.lib /EHsc /MP12 /Ox /DDEBUG:FULL /Zi /Fd:%OLD_DIR%\debug\lobby_connect\lobby_connect.pdb /link /OUT:%OLD_DIR%\debug\lobby_connect\lobby_connect.exe +cd %OLD_DIR%\build\lobby_connect\debug\x86 + +cl /c @%CDS_DIR%\DEBUG.BLD @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\LOBBY_CONNECT.BLD +IF EXIST %CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS +echo /link /OUT:%OLD_DIR%\debug\lobby_connect\lobby_connect_x32.exe >> %CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS +echo /link /IMPLIB:%cd%\lobby_connect_x32.lib >> %CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\lobby_connect\lobby_connect_x32.pdb >> %CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS ) + +cl @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\PROTOBUF_X86.LKS @%CDS_DIR%\LOBBY_CONNECT.LKS @%CDS_DIR%\DEBUG_LOBBY_CONNECT_X86.LKS cd %OLD_DIR% -copy Readme_lobby_connect.txt debug\lobby_connect\Readme.txt endlocal + +setlocal +"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto +call build_env_x64.bat +cd %OLD_DIR%\build\lobby_connect\debug\x64 + +cl /c @%CDS_DIR%\DEBUG.BLD @%CDS_DIR%\PROTOBUF_X64.BLD @%CDS_DIR%\LOBBY_CONNECT.BLD +IF EXIST %CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS +echo /link /OUT:%OLD_DIR%\debug\lobby_connect\lobby_connect_x64.exe >> %CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS +echo /link /IMPLIB:%cd%\lobby_connect_x64.lib >> %CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\debug\lobby_connect\lobby_connect_x64.pdb >> %CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS ) + +cl @%CDS_DIR%\DEBUG.LKS @%CDS_DIR%\PROTOBUF_X64.BLD @%CDS_DIR%\PROTOBUF_X64.LKS @%CDS_DIR%\LOBBY_CONNECT.LKS @%CDS_DIR%\DEBUG_LOBBY_CONNECT_X64.LKS +cd %OLD_DIR% +endlocal +copy Readme_lobby_connect.txt debug\lobby_connect\Readme.txt diff --git a/build_win_find_interfaces.bat b/build_win_find_interfaces.bat index ca77c84..36f834e 100755 --- a/build_win_find_interfaces.bat +++ b/build_win_find_interfaces.bat @@ -1,20 +1,39 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\release ( mkdir build\release ) -IF NOT EXIST build\release\tools ( mkdir build\release\tools ) -IF NOT EXIST build\release\tools\x86 ( mkdir build\release\tools\x86 ) -IF EXIST build\release\tools\x86\*.* ( DEL /F /S /Q build\release\tools\x86\*.* ) +SET OLD_DIR=%cd% + +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) + +IF NOT DEFINED BUILT_ALL_DEPS ( call generate_all_deps.bat ) + +IF EXIST build\release\tools\x86\*.* ( DEL /F /S /Q build\release\tools\x86\*.* ) +IF EXIST build\release\tools\x64\*.* ( DEL /F /S /Q build\release\tools\x64\*.* ) -IF NOT EXIST release\tools ( mkdir release\tools ) IF EXIST release\tools\*.* ( DEL /F /S /Q release\tools\*.* ) setlocal call build_env_x86.bat -SET OLD_DIR=%cd% -cd build\release\tools\x86 -cl %OLD_DIR%/generate_interfaces_file.cpp /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\tools\generate_interfaces_file.exe +cd %OLD_DIR%\build\release\tools\x86 +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\GENERATE_INTERFACES_FILE.BLD +IF EXIST %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X86.LKS ) +where "generate_interfaces_file.obj" > %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X86.LKS +echo /link /OUT:%OLD_DIR%\release\tools\generate_interfaces_file_x32.exe >> %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\tools\generate_interfaces_file_x32.pdb >> %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X86.LKS ) +cl @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\GENERATE_INTERFACES_FILE.LKS @%CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X86.LKS cd %OLD_DIR% -copy Readme_generate_interfaces.txt release\tools\Readme_generate_interfaces.txt endlocal + +setlocal +call build_env_x64.bat +cd %OLD_DIR%\build\release\tools\x64 +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\GENERATE_INTERFACES_FILE.BLD +IF EXIST %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X64.LKS ) +where "generate_interfaces_file.obj" > %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X64.LKS +echo /link /OUT:%OLD_DIR%\release\tools\generate_interfaces_file_x64.exe >> %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\tools\generate_interfaces_file_x64.pdb >> %CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X64.LKS ) +cl @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\GENERATE_INTERFACES_FILE.LKS @%CDS_DIR%\RELEASE_GENERATE_INTERFACES_FILE_X64.LKS +cd %OLD_DIR% +endlocal + +copy Readme_generate_interfaces.txt release\tools\Readme_generate_interfaces.txt diff --git a/build_win_lobby_connect.bat b/build_win_lobby_connect.bat index 046f957..09f194b 100755 --- a/build_win_lobby_connect.bat +++ b/build_win_lobby_connect.bat @@ -1,23 +1,46 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\release ( mkdir build\release ) -IF NOT EXIST build\release\lobby_connect ( mkdir build\release\lobby_connect ) -IF NOT EXIST build\release\lobby_connect\x86 ( mkdir build\release\lobby_connect\x86 ) -IF EXIST build\release\lobby_connect\x86\*.* ( DEL /F /S /Q build\release\lobby_connect\x86\*.* ) +SET OLD_DIR=%cd% + +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) + +IF NOT DEFINED BUILT_ALL_DEPS ( call generate_all_deps.bat ) + +IF EXIST build\release\lobby_connect\x86\*.* ( DEL /F /S /Q build\release\lobby_connect\x86\*.* ) +IF EXIST build\release\lobby_connect\x64\*.* ( DEL /F /S /Q build\release\lobby_connect\x64\*.* ) -IF NOT EXIST release\lobby_connect ( mkdir release\lobby_connect ) IF EXIST release\lobby_connect\*.* ( DEL /F /S /Q release\lobby_connect\*.* ) -call build_set_protobuf_directories.bat setlocal "%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x86.bat -SET OLD_DIR=%cd% -cd build\release\lobby_connect\x86 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /DNO_DISK_WRITES /DLOBBY_CONNECT /DEMU_RELEASE_BUILD /DNDEBUG /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ %OLD_DIR%/lobby_connect.cpp %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Comdlg32.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\lobby_connect\lobby_connect.exe +cd %OLD_DIR%\build\lobby_connect\release\x86 + +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\LOBBY_CONNECT.BLD +IF EXIST %CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS +echo /link /OUT:%OLD_DIR%\release\lobby_connect\lobby_connect_x32.exe >> %CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS +echo /link /IMPLIB:%cd%\lobby_connect_x32.lib >> %CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\lobby_connect\lobby_connect_x32.pdb >> %CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS ) + +cl @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\PROTOBUF_X86.LKS @%CDS_DIR%\LOBBY_CONNECT.LKS @%CDS_DIR%\RELEASE_LOBBY_CONNECT_X86.LKS cd %OLD_DIR% -copy Readme_lobby_connect.txt release\lobby_connect\Readme.txt endlocal + +setlocal +"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto +call build_env_x64.bat +cd %OLD_DIR%\build\lobby_connect\release\x64 + +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\PROTOBUF_X64.BLD @%CDS_DIR%\LOBBY_CONNECT.BLD +IF EXIST %CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS +echo /link /OUT:%OLD_DIR%\release\lobby_connect\lobby_connect_x64.exe >> %CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS +echo /link /IMPLIB:%cd%\lobby_connect_x64.lib >> %CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\lobby_connect\lobby_connect_x64.pdb >> %CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS ) + +cl @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\PROTOBUF_X64.BLD @%CDS_DIR%\PROTOBUF_X64.LKS @%CDS_DIR%\LOBBY_CONNECT.LKS @%CDS_DIR%\RELEASE_LOBBY_CONNECT_X64.LKS +cd %OLD_DIR% +endlocal +copy Readme_lobby_connect.txt release\lobby_connect\Readme.txt diff --git a/build_win_release.bat b/build_win_release.bat index a89eae0..31e3854 100755 --- a/build_win_release.bat +++ b/build_win_release.bat @@ -1,42 +1,51 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\release ( mkdir build\release ) -IF NOT EXIST build\release\x86 ( mkdir build\release\x86 ) -IF NOT EXIST build\release\x64 ( mkdir build\release\x64 ) +SET OLD_DIR=%cd% + +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) + +IF NOT DEFINED BUILT_ALL_DEPS ( call generate_all_deps.bat ) + IF EXIST build\release\x86\*.* ( DEL /F /S /Q build\release\x86\*.* ) IF EXIST build\release\x64\*.* ( DEL /F /S /Q build\release\x64\*.* ) -IF NOT EXIST release ( mkdir release ) IF EXIST release\steam_settings.EXAMPLE ( DEL /F /S /Q release\steam_settings.EXAMPLE ) IF EXIST release\*.dll ( DEL /F /Q release\*.dll ) IF EXIST release\*.txt ( DEL /F /Q release\*.txt ) -call build_set_protobuf_directories.bat - -SET OLD_DIR=%cd% - setlocal "%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x86.bat -cd build\release\x86 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /DEMU_RELEASE_BUILD /DNDEBUG /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\steam_api.dll +cd %OLD_DIR%\build\release\x86 + +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\DLL_MAIN_CPP.BLD +IF EXIST %CDS_DIR%\RELEASE_BASE_DLL_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_BASE_DLL_X86.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_BASE_DLL_X86.LKS +echo /link /OUT:%OLD_DIR%\release\steam_api.dll >> %CDS_DIR%\RELEASE_BASE_DLL_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\steam_api.pdb >> %CDS_DIR%\RELEASE_BASE_DLL_X86.LKS ) + +cl /LD @%CDS_DIR%/RELEASE.LKS @%CDS_DIR%/PROTOBUF_X86.LKS @%CDS_DIR%/DLL_MAIN_CPP.LKS @%CDS_DIR%\RELEASE_BASE_DLL_X86.LKS cd %OLD_DIR% endlocal setlocal "%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x64.bat -cd build\release\x64 -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /DEMU_RELEASE_BUILD /DNDEBUG /I%OLD_DIR%/%PROTOBUF_X64_DIRECTORY%\include\ %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc "%OLD_DIR%/%PROTOBUF_X64_LIBRARY%" Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\steam_api64.dll +cd %OLD_DIR%\build\release\x64 + +cl /c @%CDS_DIR%/RELEASE.BLD @%CDS_DIR%/PROTOBUF_X64.BLD @%CDS_DIR%/DLL_MAIN_CPP.BLD +IF EXIST %CDS_DIR%\RELEASE_BASE_DLL_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_BASE_DLL_X64.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_BASE_DLL_X64.LKS +echo /link /OUT:%OLD_DIR%\release\steam_api64.dll >> %CDS_DIR%\RELEASE_BASE_DLL_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\steam_api64.pdb >> %CDS_DIR%\RELEASE_BASE_DLL_X64.LKS ) + +cl /LD @%CDS_DIR%/RELEASE.LKS @%CDS_DIR%/PROTOBUF_X64.LKS @%CDS_DIR%/DLL_MAIN_CPP.LKS @%CDS_DIR%\RELEASE_BASE_DLL_X64.LKS cd %OLD_DIR% + endlocal copy Readme_release.txt release\Readme.txt xcopy /s files_example\* release\ -call build_win_release_experimental.bat call build_win_release_experimental_steamclient.bat call build_win_lobby_connect.bat call build_win_find_interfaces.bat diff --git a/build_win_release_experimental.bat b/build_win_release_experimental.bat index 0e7d6ad..faa8230 100755 --- a/build_win_release_experimental.bat +++ b/build_win_release_experimental.bat @@ -1,37 +1,9 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\experimental ( mkdir build\experimental ) -IF NOT EXIST build\experimental\release ( mkdir build\experimental\release ) -IF NOT EXIST build\experimental\release\x86 ( mkdir build\experimental\release\x86 ) -IF NOT EXIST build\experimental\release\x64 ( mkdir build\experimental\release\x64 ) -IF EXIST build\experimental\release\x86\*.* ( DEL /F /S /Q build\experimental\release\x86\*.* ) -IF EXIST build\experimental\release\x64\*.* ( DEL /F /S /Q build\experimental\release\x64\*.* ) -IF NOT EXIST release\experimental ( mkdir release\experimental ) -IF EXIST release\experimental\*.* ( DEL /F /S /Q release\experimental\*.* ) +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) -call build_set_protobuf_directories.bat +SET SKIP_EXPERIMENTAL_STEAMCLIENT_BUILD=1 +SET SKIP_STEAMCLIENT_LOADER=1 -setlocal -"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto -call build_env_x86.bat -SET OLD_DIR=%cd% -cd "build\experimental\release\x86" -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DCONTROLLER_SUPPORT /DEMU_OVERLAY /DNDEBUG /I%OLD_DIR%/ImGui /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\experimental\steam_api.dll -cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DNDEBUG %OLD_DIR%/steamclient.cpp /EHsc /MP4 /Ox /link /OUT:%OLD_DIR%\release\experimental\steamclient.dll -cd %OLD_DIR% -endlocal - -setlocal -"%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto -call build_env_x64.bat -SET OLD_DIR=%cd% -cd "%OLD_DIR%\build\experimental\release\x64" -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DCONTROLLER_SUPPORT /DEMU_OVERLAY /DNDEBUG /I%OLD_DIR%/ImGui /I%OLD_DIR%/%PROTOBUF_X64_DIRECTORY%\include\ /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X64_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\experimental\steam_api64.dll -cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DNDEBUG %OLD_DIR%/steamclient.cpp /EHsc /MP4 /Ox /link /OUT:%OLD_DIR%\release\experimental\steamclient64.dll -cd %OLD_DIR% -copy Readme_experimental.txt release\experimental\Readme.txt -endlocal +call build_win_release_experimental_steamclient.bat diff --git a/build_win_release_experimental_steamclient.bat b/build_win_release_experimental_steamclient.bat index 5ff6d23..800c195 100644 --- a/build_win_release_experimental_steamclient.bat +++ b/build_win_release_experimental_steamclient.bat @@ -1,38 +1,141 @@ @echo off cd /d "%~dp0" -IF NOT EXIST build ( mkdir build ) -IF NOT EXIST build\experimental ( mkdir build\experimental ) -IF NOT EXIST build\experimental\steamclient ( mkdir build\experimental\steamclient ) -IF NOT EXIST build\experimental\steamclient\release ( mkdir build\experimental\steamclient\release ) -IF NOT EXIST build\experimental\steamclient\release\x86 ( mkdir build\experimental\steamclient\release\x86 ) -IF NOT EXIST build\experimental\steamclient\release\x64 ( mkdir build\experimental\steamclient\release\x64 ) + +SET OLD_DIR=%cd% + +IF NOT "%1" == "" ( SET JOB_COUNT=%~1 ) + +IF NOT DEFINED BUILT_ALL_DEPS ( call generate_all_deps.bat ) + IF EXIST build\experimental\steamclient\release\x86\*.* ( DEL /F /S /Q build\experimental\steamclient\release\x86\*.* ) IF EXIST build\experimental\steamclient\release\x64\*.* ( DEL /F /S /Q build\experimental\steamclient\release\x64\*.* ) -IF NOT EXIST release\experimental_steamclient ( mkdir release\experimental_steamclient ) IF EXIST release\experimental_steamclient\*.* ( DEL /F /S /Q release\experimental_steamclient\*.* ) -call build_set_protobuf_directories.bat - setlocal + +IF DEFINED SKIP_X86 GOTO LK_X64 + "%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x86.bat -SET OLD_DIR=%cd% -cd "build\experimental\steamclient\release\x86" -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DSTEAMCLIENT_DLL /DCONTROLLER_SUPPORT /DEMU_OVERLAY /I%OLD_DIR%/ImGui /DNDEBUG /I%OLD_DIR%/%PROTOBUF_X86_DIRECTORY%\include\ /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X86_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient.dll -cl %OLD_DIR%/steamclient_loader/*.cpp advapi32.lib user32.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient_loader_x32.exe + +REM Non-STEAMCLIENT_DLL release sc_deps. +cd "%OLD_DIR%\build\experimental_steamclient\release\x86\sc_deps" +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\PROTOBUF_X86.BLD @%CDS_DIR%\SC_DEPS.BLD +IF EXIST %CDS_DIR%\RELEASE_SC_DEPS_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_SC_DEPS_X86.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_SC_DEPS_X86.LKS + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_EXP_STEAMCLIENT_DLL_X86 + +REM Link Non-STEAMCLIENT_DLL release steam_api.dll. +cd "%OLD_DIR%\build\experimental\release\x86\" +IF EXIST %CDS_DIR%\RELEASE_STEAMAPI_NON_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMAPI_NON_X86.LKS ) +echo /link /OUT:%OLD_DIR%\release\experimental\steam_api.dll > %CDS_DIR%\RELEASE_STEAMAPI_NON_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental\steam_api.pdb >> %CDS_DIR%\RELEASE_STEAMAPI_NON_X86.LKS ) +cl /LD @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\PROTOBUF_X86.LKS @%CDS_DIR%\EXPERIMENTAL.BLD @%CDS_DIR%\EXPERIMENTAL.LKS @%CDS_DIR%\RELEASE_ALL_DEPS_X86.LKS @%CDS_DIR%\RELEASE_SC_DEPS_X86.LKS @%CDS_DIR%\RELEASE_STEAMAPI_NON_X86.LKS + +:LK_EXP_STEAMCLIENT_DLL_X86 + +IF DEFINED SKIP_EXPERIMENTAL_STEAMCLIENT_BUILD GOTO LK_STEAMCLIENT_DLL_X86 + +REM Link STEAMCLIENT_DLL release steamclient.dll +cd "%OLD_DIR%\build\experimental_steamclient\release\x86" +IF EXIST %CDS_DIR%\RELEASE_STEAMCLIENT_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMCLIENT_X86.LKS ) +echo /link /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient.dll > %CDS_DIR%\RELEASE_STEAMCLIENT_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental_steamclient\steamclient.pdb >> %CDS_DIR%\RELEASE_STEAMCLIENT_X86.LKS ) +cl /LD @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\PROTOBUF_X86.LKS @%CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS @%CDS_DIR%\RELEASE_ALL_DEPS_X86.LKS @%CDS_DIR%\RELEASE_SC_DEPS_X86.LKS @%CDS_DIR%\RELEASE_STEAMCLIENT_X86.LKS + +:LK_STEAMCLIENT_DLL_X86 + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_STEAMCLIENT_LOADER_X86 + +REM Link Non-STEAMCLIENT_DLL release steamclient.dll. +cd "%OLD_DIR%\build\experimental\release\x86\" +IF EXIST %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X86.LKS ) +echo /link /OUT:%OLD_DIR%\release\experimental\steamclient.dll > %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental\steamclient.pdb >> %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X86.LKS ) +cl /LD @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\STEAMCLIENT.BLD @%CDS_DIR%\RELEASE_STEAMCLIENT_NON_X86.LKS + +:LK_STEAMCLIENT_LOADER_X86 + +IF DEFINED SKIP_STEAMCLIENT_LOADER GOTO LK_X64 + +REM Build steamclient_loader release x86. +cd "%OLD_DIR%\build\experimental_steamclient\steamclient_loader\release\x86" +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\STEAMCLIENT_LOADER.BLD +IF EXIST %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X86.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X86.LKS +echo /link /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient_loader_x32.exe >> %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X86.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental_steamclient\steamclient_loader_x32.pdb >> %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X86.LKS ) +cl @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\STEAMCLIENT_LOADER.LKS @%CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X86.LKS cd %OLD_DIR% -copy steamclient_loader\ColdClientLoader.ini release\experimental_steamclient\ + +:LK_X64 + endlocal + setlocal + +IF DEFINED SKIP_X64 GOTO LK_END + "%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto call build_env_x64.bat -SET OLD_DIR=%cd% -cd "build\experimental\steamclient\release\x64" -cl %OLD_DIR%/dll/rtlgenrandom.c %OLD_DIR%/dll/rtlgenrandom.def -cl /LD /DEMU_RELEASE_BUILD /DEMU_EXPERIMENTAL_BUILD /DSTEAMCLIENT_DLL /DCONTROLLER_SUPPORT /DEMU_OVERLAY /I%OLD_DIR%/ImGui /DNDEBUG /I%OLD_DIR%/%PROTOBUF_X64_DIRECTORY%\include\ /I%OLD_DIR%/overlay_experimental %OLD_DIR%/dll/*.cpp %OLD_DIR%/dll/*.cc %OLD_DIR%/detours/*.cpp %OLD_DIR%/controller/gamepad.c %OLD_DIR%/ImGui/*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_dx*.cpp %OLD_DIR%/ImGui/backends/imgui_impl_win32.cpp %OLD_DIR%/ImGui/backends/imgui_impl_vulkan.cpp %OLD_DIR%/ImGui/backends/imgui_impl_opengl3.cpp %OLD_DIR%/ImGui/backends/imgui_win_shader_blobs.cpp %OLD_DIR%/overlay_experimental/*.cpp %OLD_DIR%/overlay_experimental/windows/*.cpp %OLD_DIR%/overlay_experimental/System/*.cpp "%OLD_DIR%/%PROTOBUF_X64_LIBRARY%" opengl32.lib Iphlpapi.lib Ws2_32.lib rtlgenrandom.lib Shell32.lib Winmm.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient64.dll -cl %OLD_DIR%/steamclient_loader/*.cpp advapi32.lib user32.lib /EHsc /MP12 /Ox /link /debug:none /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient_loader_x64.exe + +REM Non-STEAMCLIENT_DLL release sc_deps. +cd "%OLD_DIR%\build\experimental_steamclient\release\x64\sc_deps" +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\PROTOBUF_X64.BLD @%CDS_DIR%\SC_DEPS.BLD +IF EXIST %CDS_DIR%\RELEASE_SC_DEPS_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_SC_DEPS_X64.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_SC_DEPS_X64.LKS + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_EXP_STEAMCLIENT_DLL_X64 + +REM Link Non-STEAMCLIENT_DLL release steam_api64.dll. +cd "%OLD_DIR%\build\experimental\release\x64\" +IF EXIST %CDS_DIR%\RELEASE_STEAMAPI_NON_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMAPI_NON_X64.LKS ) +echo /link /OUT:%OLD_DIR%\release\experimental\steam_api64.dll > %CDS_DIR%\RELEASE_STEAMAPI_NON_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental\steam_api64.pdb >> %CDS_DIR%\RELEASE_STEAMAPI_NON_X64.LKS ) +cl /LD @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\PROTOBUF_X64.LKS @%CDS_DIR%\EXPERIMENTAL.BLD @%CDS_DIR%\EXPERIMENTAL.LKS @%CDS_DIR%\RELEASE_ALL_DEPS_X64.LKS @%CDS_DIR%\RELEASE_SC_DEPS_X64.LKS @%CDS_DIR%\RELEASE_STEAMAPI_NON_X64.LKS + +:LK_EXP_STEAMCLIENT_DLL_X64 + +IF DEFINED SKIP_EXPERIMENTAL_STEAMCLIENT_BUILD GOTO LK_STEAMCLIENT_DLL_X64 + +REM Link STEAMCLIENT_DLL release steamclient64.dll +cd "%OLD_DIR%\build\experimental_steamclient\release\x64" +IF EXIST %CDS_DIR%\RELEASE_STEAMCLIENT_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMCLIENT_X64.LKS ) +echo /link /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient64.dll > %CDS_DIR%\RELEASE_STEAMCLIENT_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental_steamclient\steamclient64.pdb >> %CDS_DIR%\RELEASE_STEAMCLIENT_X64.LKS ) +cl /LD @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\PROTOBUF_X64.LKS @%CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS @%CDS_DIR%\RELEASE_ALL_DEPS_X64.LKS @%CDS_DIR%\RELEASE_SC_DEPS_X64.LKS @%CDS_DIR%\RELEASE_STEAMCLIENT_X64.LKS + +:LK_STEAMCLIENT_DLL_X64 + +IF DEFINED SKIP_EXPERIMENTAL_BUILD GOTO LK_STEAMCLIENT_LOADER_X64 + +REM Link Non-STEAMCLIENT_DLL release steamclient64.dll. +cd "%OLD_DIR%\build\experimental\release\x64\" +IF EXIST %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X64.LKS ) +echo /link /OUT:%OLD_DIR%\release\experimental\steamclient64.dll > %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental\steamclient64.pdb >> %CDS_DIR%\RELEASE_STEAMCLIENT_NON_X64.LKS ) +cl /LD @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\STEAMCLIENT.BLD @%CDS_DIR%\RELEASE_STEAMCLIENT_NON_X64.LKS + +:LK_STEAMCLIENT_LOADER_X64 + +IF DEFINED SKIP_STEAMCLIENT_LOADER GOTO LK_END + +REM Build steamclient_loader release x64. +cd "%OLD_DIR%\build\experimental_steamclient\steamclient_loader\release\x64" +cl /c @%CDS_DIR%\RELEASE.BLD @%CDS_DIR%\STEAMCLIENT_LOADER.BLD +IF EXIST %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X64.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X64.LKS +echo /link /OUT:%OLD_DIR%\release\experimental_steamclient\steamclient_loader_x64.exe >> %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X64.LKS +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /PDB:%OLD_DIR%\release\experimental_steamclient\steamclient_loader_x64.pdb >> %CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X64.LKS ) +cl @%CDS_DIR%\RELEASE.LKS @%CDS_DIR%\STEAMCLIENT_LOADER.LKS @%CDS_DIR%\RELEASE_STEAMCLIENT_LOADER_X64.LKS cd %OLD_DIR% + +:LK_END + +endlocal + +copy Readme_experimental.txt release\experimental\Readme.txt +copy steamclient_loader\ColdClientLoader.ini release\experimental_steamclient\ copy Readme_experimental_steamclient.txt release\experimental_steamclient\Readme.txt -endlocal \ No newline at end of file diff --git a/dll/base.cpp b/dll/base.cpp index 507e034..10d3622 100644 --- a/dll/base.cpp +++ b/dll/base.cpp @@ -19,14 +19,37 @@ #ifdef __WINDOWS__ +HMODULE hadvapi32 = NULL; +BOOLEAN (NTAPI *real_RtlGenRandom)(PVOID,ULONG) = NULL; + static void randombytes(char * const buf, const size_t size) { - while (!RtlGenRandom((PVOID) buf, (ULONG) size)) { - PRINT_DEBUG("RtlGenRandom ERROR\n"); - Sleep(100); + PRINT_DEBUG("%s %p %zu.\n", "mine_RtlGenRandom() called.", buf, size); + if (hadvapi32 == NULL) { + hadvapi32 = GetModuleHandleW(L"advapi32.dll"); + if (hadvapi32 == NULL) { + PRINT_DEBUG("%s.\n", "GetModuleHandle() failed for advapi32.dll"); + } + PRINT_DEBUG("advapi32.dll handle: 0x%x.\n", hadvapi32); } - + if (hadvapi32 != NULL && + real_RtlGenRandom == NULL) { + real_RtlGenRandom = (BOOLEAN(NTAPI *)(PVOID,ULONG))GetProcAddress(hadvapi32, "SystemFunction036"); + if (real_RtlGenRandom == NULL) { + PRINT_DEBUG("%s.\n", "GetProcAddress() failed for RtlGenRandom()"); + } + PRINT_DEBUG("real_RtlGenRandom address: 0x%p.\n", real_RtlGenRandom); + } + if (real_RtlGenRandom != NULL) { + PRINT_DEBUG("%s.\n", "Calling real_RtlGenRandom"); + while (!real_RtlGenRandom((PVOID) buf, (ULONG) size)) { + PRINT_DEBUG("RtlGenRandom ERROR\n"); + Sleep(100); + } + PRINT_DEBUG("%s.\n", "real_RtlGenRandom returned"); + } + return; } std::string get_env_variable(std::string name) diff --git a/dll/rtlgenrandom.c b/dll/rtlgenrandom.c deleted file mode 100644 index e160da4..0000000 --- a/dll/rtlgenrandom.c +++ /dev/null @@ -1,4 +0,0 @@ -#include -#define RtlGenRandom SystemFunction036 -#define DLLEXPORT __declspec(dllexport) -DLLEXPORT BOOLEAN WINAPI RtlGenRandom(PVOID in, ULONG len) {} \ No newline at end of file diff --git a/dll/rtlgenrandom.def b/dll/rtlgenrandom.def deleted file mode 100644 index 3f23d20..0000000 --- a/dll/rtlgenrandom.def +++ /dev/null @@ -1,3 +0,0 @@ -LIBRARY advapi32.dll -EXPORTS -SystemFunction036 \ No newline at end of file diff --git a/dll/settings_parser.cpp b/dll/settings_parser.cpp index ef34316..af56f73 100644 --- a/dll/settings_parser.cpp +++ b/dll/settings_parser.cpp @@ -217,9 +217,39 @@ uint32 create_localstorage_settings(Settings **settings_client_out, Settings **s load_custom_broadcasts(Local_Storage::get_game_settings_path() + "custom_master_server.txt", custom_master_server); // Acount name - char name[32] = {}; + char name[32] = { '\0' }; if (local_storage->get_data_settings("account_name.txt", name, sizeof(name) - 1) <= 0) { - strcpy(name, DEFAULT_NAME); + PRINT_DEBUG("%s.\n", "Attempting to set steam user name from system user name"); +#if defined(STEAM_WIN32) + DWORD username_dword = 32; + wchar_t username[32] = { '\0' }; + if (GetUserNameW((wchar_t*)&username, &username_dword) == TRUE) { + std::wstring username_wstr(username); + std::string username_str = utf8_encode(username_wstr); + size_t username_len = username_str.length(); + if (username_len > 0 && + username_len < 31) { + memcpy(&name, username_str.c_str(), username_len); + name[31] = '\0'; + } + } +#else + char * env_username = getenv("USER"); + if (env_username != NULL) { + size_t username_len = strlen(env_username); + if (username_len > 0 && + username_len < 31) { + memcpy(&name, env_username, username_len); + name[31] = '\0'; + } + } +#endif + char empty_name[32] = { '\0' }; + if (memcmp(name, empty_name, 32) == 0) { + PRINT_DEBUG("%s %s.\n", "Setting steam user name to", DEFAULT_NAME); + strcpy(name, DEFAULT_NAME); + } + PRINT_DEBUG("Username: %s.\n", name); local_storage->store_data_settings("account_name.txt", name, strlen(name)); } diff --git a/generate_all_deps.bat b/generate_all_deps.bat new file mode 100644 index 0000000..974ec06 --- /dev/null +++ b/generate_all_deps.bat @@ -0,0 +1,57 @@ +@echo off +cd /d "%~dp0" + +call generate_build_win.bat + +IF EXIST build\all_deps\debug\x86\*.* ( DEL /F /S /Q build\all_deps\debug\x86\*.* ) +IF EXIST build\all_deps\debug\x64\*.* ( DEL /F /S /Q build\all_deps\debug\x64\*.* ) +IF EXIST build\all_deps\release\x86\*.* ( DEL /F /S /Q build\all_deps\release\x86\*.* ) +IF EXIST build\all_deps\release\x64\*.* ( DEL /F /S /Q build\all_deps\release\x64\*.* ) + +call build_set_protobuf_directories.bat + +setlocal +"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto +call build_env_x86.bat +SET OLD_DIR=%cd% +cd "build\all_deps\debug\x86" +cl /c @%CDS_DIR%/DEBUG.BLD @%CDS_DIR%/PROTOBUF_X86.BLD @%CDS_DIR%\ALL_DEPS.BLD +IF EXIST %CDS_DIR%\DEBUG_ALL_DEPS_X86.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_ALL_DEPS_X86.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_ALL_DEPS_X86.LKS +cd %OLD_DIR% +endlocal + +setlocal +"%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto +call build_env_x64.bat +SET OLD_DIR=%cd% +cd "build\all_deps\debug\x64" +cl /c @%CDS_DIR%/DEBUG.BLD @%CDS_DIR%/PROTOBUF_X64.BLD @%CDS_DIR%\ALL_DEPS.BLD +IF EXIST %CDS_DIR%\DEBUG_ALL_DEPS_X64.LKS ( DEL /F /Q %CDS_DIR%\DEBUG_ALL_DEPS_X64.LKS ) +where "*.obj" > %CDS_DIR%\DEBUG_ALL_DEPS_X64.LKS +cd %OLD_DIR% +endlocal + +setlocal +"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto +call build_env_x86.bat +SET OLD_DIR=%cd% +cd "build\all_deps\release\x86" +cl /c @%CDS_DIR%/RELEASE.BLD @%CDS_DIR%/PROTOBUF_X86.BLD @%CDS_DIR%\ALL_DEPS.BLD +IF EXIST %CDS_DIR%\RELEASE_ALL_DEPS_X86.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_ALL_DEPS_X86.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_ALL_DEPS_X86.LKS +cd %OLD_DIR% +endlocal + +setlocal +"%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto +call build_env_x64.bat +SET OLD_DIR=%cd% +cd "build\all_deps\release\x64" +cl /c @%CDS_DIR%/RELEASE.BLD @%CDS_DIR%/PROTOBUF_X64.BLD @%CDS_DIR%\ALL_DEPS.BLD +IF EXIST %CDS_DIR%\RELEASE_ALL_DEPS_X64.LKS ( DEL /F /Q %CDS_DIR%\RELEASE_ALL_DEPS_X64.LKS ) +where "*.obj" > %CDS_DIR%\RELEASE_ALL_DEPS_X64.LKS +cd %OLD_DIR% +endlocal + +SET BUILT_ALL_DEPS=1 diff --git a/generate_build_win.bat b/generate_build_win.bat new file mode 100644 index 0000000..0372b1a --- /dev/null +++ b/generate_build_win.bat @@ -0,0 +1,406 @@ +@echo off +REM Should be called from the root of the repo. + +REM Make build and output dirs. +IF NOT EXIST build ( mkdir build ) +IF NOT EXIST build\cmds ( mkdir build\cmds ) +IF NOT EXIST build\debug ( mkdir build\debug ) +IF NOT EXIST build\release ( mkdir build\release ) +IF NOT EXIST build\all_deps ( mkdir build\all_deps ) +IF NOT EXIST build\all_deps\debug ( mkdir build\all_deps\debug ) +IF NOT EXIST build\all_deps\release ( mkdir build\all_deps\release ) +IF NOT EXIST build\experimental ( mkdir build\experimental ) +IF NOT EXIST build\experimental\debug ( mkdir build\experimental\debug ) +IF NOT EXIST build\experimental\release ( mkdir build\experimental\release ) +IF NOT EXIST build\experimental_steamclient ( mkdir build\experimental_steamclient ) +IF NOT EXIST build\experimental_steamclient\debug ( mkdir build\experimental_steamclient\debug ) +IF NOT EXIST build\experimental_steamclient\release ( mkdir build\experimental_steamclient\release ) +IF NOT EXIST build\experimental_steamclient\steamclient_loader ( mkdir build\experimental_steamclient\steamclient_loader ) +IF NOT EXIST build\experimental_steamclient\steamclient_loader\debug ( mkdir build\experimental_steamclient\steamclient_loader\debug ) +IF NOT EXIST build\experimental_steamclient\steamclient_loader\release ( mkdir build\experimental_steamclient\steamclient_loader\release ) +IF NOT EXIST build\lobby_connect\debug ( mkdir build\lobby_connect\debug ) +IF NOT EXIST build\lobby_connect\release ( mkdir build\lobby_connect\release ) +IF NOT EXIST build\release\tools ( mkdir build\release\tools ) +IF NOT EXIST build\release\tools\debug ( mkdir build\release\tools\debug ) +IF NOT EXIST build\release\tools\release ( mkdir build\release\tools\release ) + +IF NOT EXIST build\debug\x86 ( mkdir build\debug\x86 ) +IF NOT EXIST build\debug\x64 ( mkdir build\debug\x64 ) +IF NOT EXIST build\release\x86 ( mkdir build\release\x86 ) +IF NOT EXIST build\release\x64 ( mkdir build\release\x64 ) + +IF NOT EXIST build\all_deps\debug\x86 ( mkdir build\all_deps\debug\x86 ) +IF NOT EXIST build\all_deps\debug\x64 ( mkdir build\all_deps\debug\x64 ) +IF NOT EXIST build\all_deps\release\x86 ( mkdir build\all_deps\release\x86 ) +IF NOT EXIST build\all_deps\release\x64 ( mkdir build\all_deps\release\x64 ) + +IF NOT EXIST build\experimental\debug\x86 ( mkdir build\experimental\debug\x86 ) +IF NOT EXIST build\experimental\debug\x64 ( mkdir build\experimental\debug\x64 ) +IF NOT EXIST build\experimental\release\x86 ( mkdir build\experimental\release\x86 ) +IF NOT EXIST build\experimental\release\x64 ( mkdir build\experimental\release\x64 ) + +IF NOT EXIST build\experimental_steamclient\debug\x86 ( mkdir build\experimental_steamclient\debug\x86 ) +IF NOT EXIST build\experimental_steamclient\debug\x64 ( mkdir build\experimental_steamclient\debug\x64 ) +IF NOT EXIST build\experimental_steamclient\release\x86 ( mkdir build\experimental_steamclient\release\x86 ) +IF NOT EXIST build\experimental_steamclient\release\x64 ( mkdir build\experimental_steamclient\release\x64 ) +IF NOT EXIST build\experimental_steamclient\debug\x86\deps ( mkdir build\experimental_steamclient\debug\x86\deps ) +IF NOT EXIST build\experimental_steamclient\debug\x64\deps ( mkdir build\experimental_steamclient\debug\x64\deps ) +IF NOT EXIST build\experimental_steamclient\release\x86\deps ( mkdir build\experimental_steamclient\release\x86\deps ) +IF NOT EXIST build\experimental_steamclient\release\x64\deps ( mkdir build\experimental_steamclient\release\x64\deps ) +IF NOT EXIST build\experimental_steamclient\debug\x86\sc_deps ( mkdir build\experimental_steamclient\debug\x86\sc_deps ) +IF NOT EXIST build\experimental_steamclient\debug\x64\sc_deps ( mkdir build\experimental_steamclient\debug\x64\sc_deps ) +IF NOT EXIST build\experimental_steamclient\release\x86\sc_deps ( mkdir build\experimental_steamclient\release\x86\sc_deps ) +IF NOT EXIST build\experimental_steamclient\release\x64\sc_deps ( mkdir build\experimental_steamclient\release\x64\sc_deps ) + +IF NOT EXIST build\experimental_steamclient\steamclient_loader\debug\x86 ( mkdir build\experimental_steamclient\steamclient_loader\debug\x86 ) +IF NOT EXIST build\experimental_steamclient\steamclient_loader\debug\x64 ( mkdir build\experimental_steamclient\steamclient_loader\debug\x64 ) +IF NOT EXIST build\experimental_steamclient\steamclient_loader\release\x86 ( mkdir build\experimental_steamclient\steamclient_loader\release\x86 ) +IF NOT EXIST build\experimental_steamclient\steamclient_loader\release\x64 ( mkdir build\experimental_steamclient\steamclient_loader\release\x64 ) + +IF NOT EXIST build\lobby_connect\debug\x86 ( mkdir build\lobby_connect\debug\x86 ) +IF NOT EXIST build\lobby_connect\debug\x64 ( mkdir build\lobby_connect\debug\x64 ) +IF NOT EXIST build\lobby_connect\release\x86 ( mkdir build\lobby_connect\release\x86 ) +IF NOT EXIST build\lobby_connect\release\x64 ( mkdir build\lobby_connect\release\x64 ) +IF NOT EXIST build\release\tools\debug\x86 ( mkdir build\release\tools\debug\x86 ) +IF NOT EXIST build\release\tools\debug\x64 ( mkdir build\release\tools\debug\x64 ) +IF NOT EXIST build\release\tools\release\x86 ( mkdir build\release\tools\release\x86 ) +IF NOT EXIST build\release\tools\release\x64 ( mkdir build\release\tools\release\x64 ) + +IF NOT EXIST debug ( mkdir debug ) +IF NOT EXIST debug\experimental ( mkdir debug\experimental ) +IF NOT EXIST debug\experimental_steamclient ( mkdir debug\experimental_steamclient ) +IF NOT EXIST debug\lobby_connect ( mkdir debug\lobby_connect ) +IF NOT EXIST debug\tools ( mkdir debug\tools ) + +IF NOT EXIST release ( mkdir release ) +IF NOT EXIST release\experimental ( mkdir release\experimental ) +IF NOT EXIST release\experimental_steamclient ( mkdir release\experimental_steamclient ) +IF NOT EXIST release\lobby_connect ( mkdir release\lobby_connect ) +IF NOT EXIST release\tools ( mkdir release\tools ) + +SET CDS_DIR=%cd%\build\cmds + +REM +REM Arguments. +REM + +REM normal_args. +IF EXIST %CDS_DIR%\NORMAL_ARGS.ARG ( DEL /F /S /Q %CDS_DIR%\NORMAL_ARGS.ARG ) +echo /EHsc > %CDS_DIR%\NORMAL_ARGS.ARG +echo /Ox >> %CDS_DIR%\NORMAL_ARGS.ARG + +REM JOB ARGS. +IF "%JOB_COUNT%" == "" ( echo /MP1 >> %CDS_DIR%\NORMAL_ARGS.ARG ) +IF NOT "%JOB_COUNT%" == "" ( echo /MP%JOB_COUNT% >> %CDS_DIR%\NORMAL_ARGS.ARG ) + +REM Debug args. +IF EXIST %CDS_DIR%\DEBUG.BLD ( DEL /F /S /Q %CDS_DIR%\DEBUG.BLD ) +IF EXIST %CDS_DIR%\DEBUG.LKS ( DEL /F /S /Q %CDS_DIR%\DEBUG.LKS ) + +REM Create empty file. (No BUILD time args currently.) +type NUL >> %CDS_DIR%\DEBUG.BLD + +REM DISABLE the PDB builds if we are running on the CI. (It can't build them currently.) +IF EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /DEBUG:NONE > %CDS_DIR%\DEBUG.LKS ) +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /DEBUG:FULL /OPT:REF /OPT:ICF > %CDS_DIR%\DEBUG.LKS ) + +REM Release args. +IF EXIST %CDS_DIR%\RELEASE.ARG ( DEL /F /S /Q %CDS_DIR%\RELEASE.ARG ) +IF EXIST %CDS_DIR%\RELEASE.LKS ( DEL /F /S /Q %CDS_DIR%\RELEASE.LKS ) +REM Release mode Flags. +echo /DEMU_RELEASE_BUILD > %CDS_DIR%\RELEASE.ARG +echo /DNDEBUG >> %CDS_DIR%\RELEASE.ARG +copy %CDS_DIR%\RELEASE.ARG %CDS_DIR%\RELEASE.BLD +type %CDS_DIR%\RELEASE.ARG > %CDS_DIR%\RELEASE.LKS + +REM DISABLE the PDB builds if we are running on the CI. (It can't build them currently.) +IF EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /DEBUG:NONE >> %CDS_DIR%\RELEASE.LKS ) +IF NOT EXIST %OLD_DIR%\CI_BUILD.TAG ( echo /link /DEBUG:FULL /OPT:REF /OPT:ICF >> %CDS_DIR%\RELEASE.LKS ) + +REM BASE DLL Flags. +IF EXIST %CDS_DIR%\DLL_MAIN_CPP.ARG ( DEL /F /S /Q %CDS_DIR%\DLL_MAIN_CPP.ARG ) + +REM EXPERIMENTAL Flags. +IF EXIST %CDS_DIR%\EXPERIMENTAL.ARG ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL.ARG ) +echo /DEMU_EXPERIMENTAL_BUILD > %CDS_DIR%\EXPERIMENTAL.ARG +echo /DCONTROLLER_SUPPORT >> %CDS_DIR%\EXPERIMENTAL.ARG +echo /DEMU_OVERLAY >> %CDS_DIR%\EXPERIMENTAL.ARG + +REM EXPERIMENTAL_STEAMCLIENT Flags. +IF EXIST %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.ARG ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.ARG ) +echo /DSTEAMCLIENT_DLL > %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.ARG + +REM lobby_connect Flags. +IF EXIST %CDS_DIR%\LOBBY_CONNECT.ARG ( DEL /F /S /Q %CDS_DIR%\LOBBY_CONNECT.ARG ) +echo /DNO_DISK_WRITES > %CDS_DIR%\LOBBY_CONNECT.ARG +echo /DLOBBY_CONNECT >> %CDS_DIR%\LOBBY_CONNECT.ARG + +REM +REM Includes. +REM + +REM protobuf. +call build_set_protobuf_directories.bat +IF EXIST %CDS_DIR%\PROTOBUF_X86.ICD ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X86.ICD ) +IF EXIST %CDS_DIR%\PROTOBUF_X64.ICD ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X64.ICD ) +setlocal +SET TEST_A=%cd% +cd %PROTOBUF_X86_DIRECTORY% +SET TEST_B=%cd%\include +cd %TEST_A% +echo /I%TEST_B% > %CDS_DIR%\PROTOBUF_X86.ICD +endlocal +setlocal +SET TEST_A=%cd% +cd %PROTOBUF_X64_DIRECTORY% +SET TEST_B=%cd%\include +cd %TEST_A% +echo /I%TEST_B% > %CDS_DIR%\PROTOBUF_X64.ICD +endlocal + +REM OVERLAY_EXPERIMENTAL. +IF EXIST %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD ( DEL /F /S /Q %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD ) +echo /I%cd%\overlay_experimental > %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD + +REM IMGUI. +IF EXIST %CDS_DIR%\IMGUI.ICD ( DEL /F /S /Q %CDS_DIR%\IMGUI.ICD ) +echo /I%cd%\ImGui > %CDS_DIR%\IMGUI.ICD + +REM +REM Link Libraries. +REM + +REM protobuf. +IF EXIST %CDS_DIR%\PROTOBUF_X86.OS ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X86.OS ) +IF EXIST %CDS_DIR%\PROTOBUF_X64.OS ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X64.OS ) +dir /b /s %PROTOBUF_X86_LIBRARY% > %CDS_DIR%\PROTOBUF_X86.OS +dir /b /s %PROTOBUF_X64_LIBRARY% > %CDS_DIR%\PROTOBUF_X64.OS + +REM BASE DLL. +IF EXIST %CDS_DIR%\DLL_MAIN_CPP.OS ( DEL /F /S /Q %CDS_DIR%\DLL_MAIN_CPP.OS ) +echo Iphlpapi.lib > %CDS_DIR%\DLL_MAIN_CPP.OS +echo Ws2_32.lib >> %CDS_DIR%\DLL_MAIN_CPP.OS +echo Shell32.lib >> %CDS_DIR%\DLL_MAIN_CPP.OS +echo advapi32.lib >> %CDS_DIR%\DLL_MAIN_CPP.OS + +REM EXPERIMENTAL. +IF EXIST %CDS_DIR%\EXPERIMENTAL.OS ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL.OS ) +echo dbghelp.lib >> %CDS_DIR%\EXPERIMENTAL.OS +echo Faultrep.lib >> %CDS_DIR%\EXPERIMENTAL.OS +echo opengl32.lib >> %CDS_DIR%\EXPERIMENTAL.OS +echo Winmm.lib >> %CDS_DIR%\EXPERIMENTAL.OS + +REM steamclient_loader. +IF EXIST %CDS_DIR%\STEAMCLIENT_LOADER.OS ( DEL /F /S /Q %CDS_DIR%\STEAMCLIENT_LOADER.OS ) +echo advapi32.lib > %CDS_DIR%\STEAMCLIENT_LOADER.OS +echo user32.lib >> %CDS_DIR%\STEAMCLIENT_LOADER.OS + +REM lobby_connect. +IF EXIST %CDS_DIR%\LOBBY_CONNECT.OS ( DEL /F /S /Q %CDS_DIR%\LOBBY_CONNECT.OS ) +echo Comdlg32.lib > %CDS_DIR%\LOBBY_CONNECT.OS + +REM +REM Files. +REM + +REM Protobuf. +REM Needs to be compiled here (really just needs to exist), as we include it below. +"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\net.proto + +REM OVERLAY_EXPERIMENTAL. +IF EXIST %CDS_DIR%\OVERLAY_EXPERIMENTAL.FLS ( DEL /F /S /Q %CDS_DIR%\OVERLAY_EXPERIMENTAL.FLS ) +IF EXIST %CDS_DIR%\OVERLAY_EXPERIMENTAL_SYSTEM.FLS ( DEL /F /S /Q %CDS_DIR%\OVERLAY_EXPERIMENTAL_SYSTEM.FLS ) +where "%cd%\overlay_experimental\:*.cpp" > %CDS_DIR%\OVERLAY_EXPERIMENTAL.FLS +where "%cd%\overlay_experimental\windows\:*.cpp" >> %CDS_DIR%\OVERLAY_EXPERIMENTAL.FLS +where "%cd%\overlay_experimental\System\:*.cpp" >> %CDS_DIR%\OVERLAY_EXPERIMENTAL_SYSTEM.FLS + +REM IMGUI. +IF EXIST %CDS_DIR%\IMGUI.FLS ( DEL /F /S /Q %CDS_DIR%\IMGUI.FLS ) +where "%cd%\ImGui\:*.cpp" > %CDS_DIR%\IMGUI.FLS +where "%cd%\ImGui\backends\:imgui_impl_dx*.cpp" >> %CDS_DIR%\IMGUI.FLS +where "%cd%\ImGui\backends\:imgui_impl_win32.cpp" >> %CDS_DIR%\IMGUI.FLS +where "%cd%\ImGui\backends\:imgui_impl_vulkan.cpp" >> %CDS_DIR%\IMGUI.FLS +where "%cd%\ImGui\backends\:imgui_impl_opengl3.cpp" >> %CDS_DIR%\IMGUI.FLS +where "%cd%\ImGui\backends\:imgui_win_shader_blobs.cpp" >> %CDS_DIR%\IMGUI.FLS + +REM DETOURS. +IF EXIST %CDS_DIR%\DETOURS.FLS ( DEL /F /S /Q %CDS_DIR%\DETOURS.FLS ) +where "%cd%\detours\:*.cpp" > %CDS_DIR%\DETOURS.FLS + +REM CONTROLLER. +IF EXIST %CDS_DIR%\CONTROLLER.FLS ( DEL /F /S /Q CONTROLLER.FLS ) +where "%cd%\controller\:gamepad.c" > %CDS_DIR%\CONTROLLER.FLS + +REM sc_different_deps. +IF EXIST %CDS_DIR%\SC_DIFFERENT_DEPS.FLS ( DEL /F /S /Q %CDS_DIR%\SC_DIFFERENT_DEPS.FLS ) +where "%cd%\dll\:flat.cpp" > %CDS_DIR%\SC_DIFFERENT_DEPS.FLS +where "%cd%\dll\:dll.cpp" >> %CDS_DIR%\SC_DIFFERENT_DEPS.FLS + +REM BASE DLL. +IF EXIST %CDS_DIR%\DLL_MAIN_CPP.FLS ( DEL /F /S /Q %CDS_DIR%\DLL_MAIN_CPP.FLS ) +move %cd%\dll\flat.cpp %cd%\dll\flat.cpp.tmp +move %cd%\dll\dll.cpp %cd%\dll\dll.cpp.tmp +where "%cd%\dll\:*.cpp" > %CDS_DIR%\DLL_MAIN_CPP.FLS +move %cd%\dll\flat.cpp.tmp %cd%\dll\flat.cpp +move %cd%\dll\dll.cpp.tmp %cd%\dll\dll.cpp +where "%cd%\dll\:*.cc" >> %CDS_DIR%\DLL_MAIN_CPP.FLS + +REM SteamClient. +IF EXIST %CDS_DIR%\STEAMCLIENT.FLS ( DEL /F /S /Q %CDS_DIR%\STEAMCLIENT.FLS ) +where "%cd%\:steamclient.cpp" > %CDS_DIR%\STEAMCLIENT.FLS + +REM steamclient_loader. +IF EXIST %CDS_DIR%\STEAMCLIENT_LOADER.FLS ( DEL /F /S /Q %CDS_DIR%\STEAMCLIENT_LOADER.FLS ) +where "%cd%\steamclient_loader\:*.cpp" > %CDS_DIR%\STEAMCLIENT_LOADER.FLS + +REM lobby_connect. +IF EXIST %CDS_DIR%\LOBBY_CONNECT.FLS ( DEL /F /S /Q %CDS_DIR%\LOBBY_CONNECT.FLS ) +where "%cd%\:lobby_connect.cpp" > %CDS_DIR%\LOBBY_CONNECT.FLS + +REM generate_interfaces_file. +IF EXIST %CDS_DIR%\GENERATE_INTERFACES_FILE.FLS ( DEL /F /S /Q %CDS_DIR%\GENERATE_INTERFACES_FILE.FLS ) +where "%cd%\:generate_interfaces_file.cpp" > %CDS_DIR%\GENERATE_INTERFACES_FILE.FLS + +REM +REM Build and link cmd script files. +REM + +REM protobuf. +IF EXIST %CDS_DIR%\PROTOBUF_X86.BLD ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X86.BLD ) +IF EXIST %CDS_DIR%\PROTOBUF_X86.LKS ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X86.LKS ) +type %CDS_DIR%\PROTOBUF_X86.ICD > %CDS_DIR%\PROTOBUF_X86.BLD +type %CDS_DIR%\PROTOBUF_X86.BLD > %CDS_DIR%\PROTOBUF_X86.LKS +type %CDS_DIR%\PROTOBUF_X86.OS >> %CDS_DIR%\PROTOBUF_X86.LKS + +IF EXIST %CDS_DIR%\PROTOBUF_X64.BLD ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X64.BLD ) +IF EXIST %CDS_DIR%\PROTOBUF_X64.LKS ( DEL /F /S /Q %CDS_DIR%\PROTOBUF_X64.LKS ) +type %CDS_DIR%\PROTOBUF_X64.ICD > %CDS_DIR%\PROTOBUF_X64.BLD +type %CDS_DIR%\PROTOBUF_X64.BLD > %CDS_DIR%\PROTOBUF_X64.LKS +type %CDS_DIR%\PROTOBUF_X64.OS >> %CDS_DIR%\PROTOBUF_X64.LKS + +REM SC_DEPS +IF EXIST %CDS_DIR%\SC_DEPS.BLD ( DEL /F /S /Q %CDS_DIR%\SC_DEPS.BLD ) +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\SC_DEPS.BLD +type %CDS_DIR%\EXPERIMENTAL.ARG >> %CDS_DIR%\SC_DEPS.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD >> %CDS_DIR%\SC_DEPS.BLD +type %CDS_DIR%\IMGUI.ICD >> %CDS_DIR%\SC_DEPS.BLD +type %CDS_DIR%\DLL_MAIN_CPP.FLS >> %CDS_DIR%\SC_DEPS.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL.FLS >> %CDS_DIR%\SC_DEPS.BLD + +REM DEPS +IF EXIST %CDS_DIR%\DEPS.BLD ( DEL /F /S /Q %CDS_DIR%\DEPS.BLD ) +type %CDS_DIR%\DETOURS.FLS >> %CDS_DIR%\DEPS.BLD +type %CDS_DIR%\CONTROLLER.FLS >> %CDS_DIR%\DEPS.BLD +type %CDS_DIR%\IMGUI.FLS >> %CDS_DIR%\DEPS.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL_SYSTEM.FLS >> %CDS_DIR%\DEPS.BLD + +REM all_deps. +IF EXIST %CDS_DIR%\ALL_DEPS.BLD ( DEL /F /S /Q %CDS_DIR%\ALL_DEPS.BLD ) +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\ALL_DEPS.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD >> %CDS_DIR%\ALL_DEPS.BLD +type %CDS_DIR%\IMGUI.ICD >> %CDS_DIR%\ALL_DEPS.BLD +type %CDS_DIR%\DETOURS.FLS >> %CDS_DIR%\ALL_DEPS.BLD +type %CDS_DIR%\CONTROLLER.FLS >> %CDS_DIR%\ALL_DEPS.BLD +type %CDS_DIR%\IMGUI.FLS >> %CDS_DIR%\ALL_DEPS.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL_SYSTEM.FLS >> %CDS_DIR%\ALL_DEPS.BLD + +REM BASE DLL. +IF EXIST %CDS_DIR%\DLL_MAIN_CPP.BLD ( DEL /F /S /Q %CDS_DIR%\DLL_MAIN_CPP.BLD ) +IF EXIST %CDS_DIR%\DLL_MAIN_CPP.LKS ( DEL /F /S /Q %CDS_DIR%\DLL_MAIN_CPP.LKS ) +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\DLL_MAIN_CPP.BLD +type %CDS_DIR%\DLL_MAIN_CPP.FLS >> %CDS_DIR%\DLL_MAIN_CPP.BLD +type %CDS_DIR%\SC_DIFFERENT_DEPS.FLS >> %CDS_DIR%\DLL_MAIN_CPP.BLD +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\DLL_MAIN_CPP.LKS +type %CDS_DIR%\DLL_MAIN_CPP.OS >> %CDS_DIR%\DLL_MAIN_CPP.LKS + +REM EXPERIMENTAL. +IF EXIST %CDS_DIR%\EXPERIMENTAL.BLD ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL.BLD ) +IF EXIST %CDS_DIR%\EXPERIMENTAL.LKS ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL.LKS ) + +REM Note the order and repeats. cl will complain if this gets messed up. +REM OLD SCRIPT. +REM type NORMAL_ARGS.ARG > EXPERIMENTAL.BLD +REM type EXPERIMENTAL.ARG >> EXPERIMENTAL.BLD +REM type EXPERIMENTAL.ICD >> EXPERIMENTAL.BLD +REM type DLL_MAIN_CPP.FLS >> EXPERIMENTAL.BLD +REM type SC_DIFFERENT_DEPS.FLS >> EXPERIMENTAL.BLD +REM type OVERLAY_EXPERIMENTAL.FLS >> EXPERIMENTAL.BLD +REM type OVERLAY_EXPERIMENTAL_SYSTEM.FLS >> EXPERIMENTAL.BLD +REM type DETOURS.FLS >> EXPERIMENTAL.BLD +REM type CONTROLLER.FLS >> EXPERIMENTAL.BLD +REM type IMGUI.FLS >> EXPERIMENTAL.BLD +REM type NORMAL_ARGS.ARG > EXPERIMENTAL.LKS +REM type EXPERIMENTAL.ARG >> EXPERIMENTAL.LKS +REM type EXPERIMENTAL.ICD >> EXPERIMENTAL.LKS +REM type DLL_MAIN_CPP.OS >> EXPERIMENTAL.LKS +REM type EXPERIMENTAL.OS >> EXPERIMENTAL.LKS +REM NEW Combined experimental && experimental_steamclient SCRIPT. +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\EXPERIMENTAL.BLD +type %CDS_DIR%\EXPERIMENTAL.ARG >> %CDS_DIR%\EXPERIMENTAL.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD >> %CDS_DIR%\EXPERIMENTAL.BLD +type %CDS_DIR%\IMGUI.ICD >> %CDS_DIR%\EXPERIMENTAL.BLD +type %CDS_DIR%\SC_DIFFERENT_DEPS.FLS >> %CDS_DIR%\EXPERIMENTAL.BLD + +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\EXPERIMENTAL.LKS +type %CDS_DIR%\EXPERIMENTAL.ARG >> %CDS_DIR%\EXPERIMENTAL.LKS +type %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD >> %CDS_DIR%\EXPERIMENTAL.LKS +type %CDS_DIR%\IMGUI.ICD >> %CDS_DIR%\EXPERIMENTAL.LKS +type %CDS_DIR%\DLL_MAIN_CPP.OS >> %CDS_DIR%\EXPERIMENTAL.LKS +type %CDS_DIR%\EXPERIMENTAL.OS >> %CDS_DIR%\EXPERIMENTAL.LKS + +REM SteamClient. +IF EXIST %CDS_DIR%\STEAMCLIENT.BLD ( DEL /F /S /Q %CDS_DIR%\STEAMCLIENT.BLD ) +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\STEAMCLIENT.BLD +type %CDS_DIR%\EXPERIMENTAL.ARG >> %CDS_DIR%\STEAMCLIENT.BLD +type %CDS_DIR%\OVERLAY_EXPERIMENTAL.ICD >> %CDS_DIR%\STEAMCLIENT.BLD +type %CDS_DIR%\IMGUI.ICD >> %CDS_DIR%\STEAMCLIENT.BLD +type %CDS_DIR%\STEAMCLIENT.FLS >> %CDS_DIR%\STEAMCLIENT.BLD + +REM EXPERIMENTAL_STEAMCLIENT. +IF EXIST %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.BLD ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.BLD ) +IF EXIST %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS ( DEL /F /S /Q %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS ) + +REM Note the order and repeats. cl will complain if this gets messed up. + + + + +REM FULL +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS +type %CDS_DIR%\EXPERIMENTAL.ARG >> %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS +type %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.ARG >> %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS +type %CDS_DIR%\SC_DIFFERENT_DEPS.FLS >> %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS +type %CDS_DIR%\DLL_MAIN_CPP.OS >> %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS +type %CDS_DIR%\EXPERIMENTAL.OS >> %CDS_DIR%\EXPERIMENTAL_STEAMCLIENT.LKS + +REM steamclient_loader. +IF EXIST %CDS_DIR%\STEAMCLIENT_LOADER.BLD ( DEL /F /S /Q %CDS_DIR%\STEAMCLIENT_LOADER.BLD ) +IF EXIST %CDS_DIR%\STEAMCLIENT_LOADER.LKS ( DEL /F /S /Q %CDS_DIR%\STEAMCLIENT_LOADER.LKS ) + +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\STEAMCLIENT_LOADER.BLD +type %CDS_DIR%\STEAMCLIENT_LOADER.FLS >> %CDS_DIR%\STEAMCLIENT_LOADER.BLD + +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\STEAMCLIENT_LOADER.LKS +type %CDS_DIR%\STEAMCLIENT_LOADER.OS >> %CDS_DIR%\STEAMCLIENT_LOADER.LKS + +REM lobby_connect. +IF EXIST %CDS_DIR%\LOBBY_CONNECT.BLD ( DEL /F /S /Q %CDS_DIR%\LOBBY_CONNECT.BLD ) +IF EXIST %CDS_DIR%\LOBBY_CONNECT.LKS ( DEL /F /S /Q %CDS_DIR%\LOBBY_CONNECT.LKS ) +type %CDS_DIR%\LOBBY_CONNECT.ARG > %CDS_DIR%\LOBBY_CONNECT.BLD +type %CDS_DIR%\NORMAL_ARGS.ARG >> %CDS_DIR%\LOBBY_CONNECT.BLD +type %CDS_DIR%\LOBBY_CONNECT.FLS >> %CDS_DIR%\LOBBY_CONNECT.BLD +type %CDS_DIR%\DLL_MAIN_CPP.FLS >> %CDS_DIR%\LOBBY_CONNECT.BLD +type %CDS_DIR%\SC_DIFFERENT_DEPS.FLS >> %CDS_DIR%\LOBBY_CONNECT.BLD + +type %CDS_DIR%\LOBBY_CONNECT.ARG > %CDS_DIR%\LOBBY_CONNECT.LKS +type %CDS_DIR%\NORMAL_ARGS.ARG >> %CDS_DIR%\LOBBY_CONNECT.LKS +type %CDS_DIR%\DLL_MAIN_CPP.OS >> %CDS_DIR%\LOBBY_CONNECT.LKS +type %CDS_DIR%\LOBBY_CONNECT.OS >> %CDS_DIR%\LOBBY_CONNECT.LKS + +REM GENERATE_INTERFACES_FILE +IF EXIST %CDS_DIR%\GENERATE_INTERFACES_FILE.BLD ( DEL /F /S /Q %CDS_DIR%\GENERATE_INTERFACES_FILE.BLD ) +IF EXIST %CDS_DIR%\GENERATE_INTERFACES_FILE.LKS ( DEL /F /S /Q %CDS_DIR%\GENERATE_INTERFACES_FILE.LKS ) +type %CDS_DIR%\NORMAL_ARGS.ARG >> %CDS_DIR%\GENERATE_INTERFACES_FILE.BLD +type %CDS_DIR%\GENERATE_INTERFACES_FILE.FLS >> %CDS_DIR%\GENERATE_INTERFACES_FILE.BLD + +type %CDS_DIR%\NORMAL_ARGS.ARG > %CDS_DIR%\GENERATE_INTERFACES_FILE.LKS diff --git a/generate_build_win_bat.py b/generate_build_win_bat.py deleted file mode 100644 index 9e3ef47..0000000 --- a/generate_build_win_bat.py +++ /dev/null @@ -1,132 +0,0 @@ -import os - -def files_from_dir(dir, extension, filter=[]): - out = [] - for f in os.listdir(dir): - if f.endswith(extension) and f not in filter: - out.append(os.path.join(dir, f)) - return out - -def convert_to_obj(files, obj_dir): - out = [] - for f in files: - out.append(os.path.join(obj_dir, os.path.splitext(os.path.basename(f))[0] + ".obj")) - return out - -def cl_line_obj(arguments, out_dir): - return "rmdir /S /Q {0}\nmkdir {0}\ncl /Fo:{0}/ /c {1}\n".format(out_dir, ' '.join(arguments)) - -def cl_line_link(arguments, linker_arguments): - return "cl /LD {} /link {}\n".format(' '.join(arguments), ' '.join(linker_arguments)) - -def cl_line_exe(arguments, linker_arguments): - return "cl {} /link {}\n".format(' '.join(arguments), ' '.join(linker_arguments)) - -jobs = 4 -normal_build_args = ["/EHsc", "/Ox", "/MP{}".format(jobs)] - -includes = ["ImGui", "overlay_experimental"] -includes_32 = list(map(lambda a: '/I{}'.format(a), ["%PROTOBUF_X86_DIRECTORY%\\include\\"] + includes)) -includes_64 = list(map(lambda a: '/I{}'.format(a), ["%PROTOBUF_X64_DIRECTORY%\\include\\"] + includes)) - -debug_build_args = [] -release_build_args = ["/DEMU_RELEASE_BUILD", "/DNDEBUG"] -steamclient_build_args = ["/DSTEAMCLIENT_DLL"] -lobby_connect_args = ["/DNO_DISK_WRITES", "/DLOBBY_CONNECT"] - -experimental_build_args = ["/DEMU_EXPERIMENTAL_BUILD", "/DCONTROLLER_SUPPORT", "/DEMU_OVERLAY"] -steamclient_experimental_build_args = experimental_build_args + steamclient_build_args - -normal_linker_libs = ["Iphlpapi.lib", "Ws2_32.lib", "rtlgenrandom.lib", "Shell32.lib"] -experimental_linker_libs = ["opengl32.lib", "Winmm.lib"] + normal_linker_libs -linker_32 = ['"%PROTOBUF_X86_LIBRARY%"'] -linker_64 = ['"%PROTOBUF_X64_LIBRARY%"'] - -controller_deps = ["controller/gamepad.c"] -imgui_deps = files_from_dir("ImGui", ".cpp") + ["ImGui/backends/imgui_impl_dx9.cpp", "ImGui/backends/imgui_impl_dx10.cpp", "ImGui/backends/imgui_impl_dx11.cpp", "ImGui/backends/imgui_impl_dx12.cpp", "ImGui/backends/imgui_impl_win32.cpp", "ImGui/backends/imgui_impl_vulkan.cpp", "ImGui/backends/imgui_impl_opengl3.cpp", "ImGui/backends/imgui_win_shader_blobs.cpp"] -proto_deps = list(map(lambda a: a.replace(".proto", ".pb.cc"), files_from_dir("dll", ".proto"))) -all_deps = proto_deps + files_from_dir("detours", ".cpp") + controller_deps + imgui_deps + files_from_dir("overlay_experimental/System", ".cpp") - -sc_different_deps = ["flat.cpp", "dll.cpp"] -steam_deps = files_from_dir("dll", ".cpp", sc_different_deps) -overlay_deps = files_from_dir("overlay_experimental", ".cpp") + files_from_dir("overlay_experimental/windows", ".cpp") -experimental_steam_deps = steam_deps + overlay_deps -sc_different_deps = list(map(lambda a: "dll/" + a, sc_different_deps)) - -regular_files = [] - -head = """@echo off -cd /d "%~dp0" -rmdir /S /Q release -mkdir release -mkdir release\experimental -mkdir release\experimental_steamclient -mkdir release\debug_experimental -mkdir release\debug_experimental_steamclient -mkdir release\lobby_connect -call build_set_protobuf_directories.bat -""" - -head_32bit = """"%PROTOC_X86_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\\net.proto -call build_env_x86.bat -cl dll/rtlgenrandom.c dll/rtlgenrandom.def -""" - -head_64bit = """"%PROTOC_X64_EXE%" -I.\dll\ --cpp_out=.\dll\ .\dll\\net.proto -call build_env_x64.bat -cl dll/rtlgenrandom.c dll/rtlgenrandom.def -""" - -footer = """ -copy Readme_release.txt release\Readme.txt -xcopy /s files_example\* release\\ -copy Readme_experimental.txt release\experimental\Readme.txt -copy Readme_debug.txt release\debug_experimental\Readme.txt -copy steamclient_loader\ColdClientLoader.ini release\experimental_steamclient\\ -REM call build_win_lobby_connect.bat -copy Readme_lobby_connect.txt release\lobby_connect\Readme.txt -call build_win_find_interfaces.bat -""" - -out = head -out += head_32bit - -deps_folder = "deps" -sc_deps_folder = "deps_sc" - -def generate_common(include_arch, linker_arch, steam_api_name, steamclient_name): - out = "" - out += cl_line_obj(normal_build_args + release_build_args + include_arch + all_deps, deps_folder) - out += cl_line_link(normal_build_args + release_build_args + include_arch + steam_deps + sc_different_deps + ["deps/net.pb.obj"] + linker_arch + normal_linker_libs, ["/debug:none", "/OUT:release\\{}".format(steam_api_name)]) - - debug_full_args = normal_build_args + debug_build_args + experimental_build_args + include_arch - out += cl_line_obj(debug_full_args + experimental_steam_deps, sc_deps_folder) - - debug_full_dll_args = debug_full_args + sc_different_deps + convert_to_obj(all_deps, deps_folder) + convert_to_obj(experimental_steam_deps, sc_deps_folder) + linker_arch + experimental_linker_libs - out += cl_line_link(debug_full_dll_args, ["/OUT:release\debug_experimental\\{}".format(steam_api_name)]) - out += cl_line_link(steamclient_build_args + debug_full_dll_args, ["/OUT:release\debug_experimental_steamclient\\{}".format(steamclient_name)]) - - release_full_args = normal_build_args + release_build_args + experimental_build_args + include_arch - out += cl_line_obj(release_full_args + experimental_steam_deps, sc_deps_folder) - - release_full_dll_args = release_full_args + sc_different_deps + convert_to_obj(all_deps, deps_folder) + convert_to_obj(experimental_steam_deps, sc_deps_folder) + linker_arch + experimental_linker_libs - out += cl_line_link(release_full_dll_args, ["/debug:none", "/OUT:release\experimental\\{}".format(steam_api_name)]) - out += cl_line_link(steamclient_build_args + release_full_dll_args, ["/debug:none", "/OUT:release\experimental_steamclient\\{}".format(steamclient_name)]) - out += cl_line_link(release_build_args + experimental_build_args + ["steamclient.cpp"] + normal_build_args, ["/debug:none", "/OUT:release\experimental\\{}".format(steamclient_name)]) - return out - -out += generate_common(includes_32, linker_32, "steam_api.dll", "steamclient.dll") - -out += cl_line_exe(files_from_dir("./", "lobby_connect.cpp") + files_from_dir("dll", "flat.cpp") + files_from_dir("dll", "dll.cpp") + lobby_connect_args + normal_build_args + release_build_args + includes_32 + proto_deps + steam_deps + normal_linker_libs + ["Comdlg32.lib", "user32.lib"], linker_32 + ["/debug:none", "/OUT:release\lobby_connect\lobby_connect.exe"]) - -out += cl_line_exe(files_from_dir("steamclient_loader", ".cpp") + ["advapi32.lib", "user32.lib"] + normal_build_args, ["/debug:none", "/OUT:release\experimental_steamclient\steamclient_loader.exe"]) - -out += head_64bit -out += generate_common(includes_64, linker_64, "steam_api64.dll", "steamclient64.dll") - - -out += footer - - -with open("build_win_release_test.bat", "w") as f: - f.write(out)