From 24fec4db32a8a2c7b2c4eda3f0a0ec8e819be917 Mon Sep 17 00:00:00 2001 From: wh0crypt Date: Fri, 26 Jun 2026 22:01:27 +0100 Subject: [PATCH] rev: set up cross compiling to develop in both linux and windows --- CMakeLists.txt | 27 ++++++++++++------- CMakePresets.json | 37 ++++++++++++++++++++++++++ cmake/toolchains/mingw-w64.cmake | 16 +++++++++++ src/{wh0revshell.cpp => wh0loader.cpp} | 2 +- 4 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 CMakePresets.json create mode 100644 cmake/toolchains/mingw-w64.cmake rename src/{wh0revshell.cpp => wh0loader.cpp} (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2076b60..9b66e5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,24 @@ -cmake_minimum_required(VERSION 3.15) -project(wh0revshell CXX) +cmake_minimum_required(VERSION 3.20) +project(wh0loader LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) -add_executable(wh0revshell "src/wh0revshell.cpp") +add_executable(wh0loader + src/wh0loader.cpp +) -# Explicitly link Windows socket library -target_link_libraries(wh0revshell PRIVATE ws2_32) - -# Force Static Linking -if(MSVC) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +# Windows libs +if(WIN32) + target_link_libraries(wh0loader PRIVATE ws2_32) +endif() + +# Static runtime (GCC MinGW) +if(MINGW) + target_link_options(wh0loader PRIVATE + -static + -static-libgcc + -static-libstdc++ + -pthread + ) endif() diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..53afbe0 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,37 @@ +{ + "version": 6, + + "configurePresets": [ + { + "name": "linux", + "displayName": "Linux → Windows (MinGW)", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/bin", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/cmake/toolchains/mingw-w64.cmake" + } + }, + + { + "name": "windows", + "displayName": "Windows (MinGW)", + "generator": "Ninja", + "binaryDir": "${sourceDir}/build/bin", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + } + ], + + "buildPresets": [ + { + "name": "linux", + "configurePreset": "linux" + }, + { + "name": "windows", + "configurePreset": "windows" + } + ] +} diff --git a/cmake/toolchains/mingw-w64.cmake b/cmake/toolchains/mingw-w64.cmake new file mode 100644 index 0000000..c27416e --- /dev/null +++ b/cmake/toolchains/mingw-w64.cmake @@ -0,0 +1,16 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) + +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) + +set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) + +set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/src/wh0revshell.cpp b/src/wh0loader.cpp similarity index 99% rename from src/wh0revshell.cpp rename to src/wh0loader.cpp index 0021abe..e8933b0 100644 --- a/src/wh0revshell.cpp +++ b/src/wh0loader.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include