From 0fc1cfb0aabe933186a0432a2d1033833199a247 Mon Sep 17 00:00:00 2001 From: milkwx3 Date: Mon, 15 Jun 2026 15:36:39 +0300 Subject: [PATCH] Fix game crashing on NetworkingInit on Windows. Also add a 32-bit Windows build. Also stubbed out InitSingleplayer in menu.cpp cuz this client doesn't want to work with servers correctly. --- .gitea/workflows/autobuild.yaml | 4 +++- .gitignore | 3 ++- additions.hpp | 11 +++++++++ compile.sh | 28 +++-------------------- compile_linux.sh | 17 ++++++++++++++ compile_windows.sh | 17 ++++++++++++++ compile_windows_64.sh | 17 ++++++++++++++ src/CMakeLists.txt | 20 ++++++++++------- src/helpers/CMakeLists.txt | 8 ++++++- src/helpers/common.hpp | 15 ++++++++----- src/helpers/menu.cpp | 4 ++-- src/helpers/mesher.cpp | 1 + src/helpers/networking.cpp | 6 ++--- src/helpers/recipes.cpp | 1 + src/helpers/svlib.cpp | 21 +++++++++-------- src/helpers/vars.hpp | 9 +++----- src/rcraft.cpp | 40 ++++++++++++++++++++------------- toolchains/mingw-w32.cmake | 14 ++++++++++++ 18 files changed, 159 insertions(+), 77 deletions(-) create mode 100644 additions.hpp create mode 100644 compile_linux.sh create mode 100644 compile_windows.sh create mode 100644 compile_windows_64.sh create mode 100644 toolchains/mingw-w32.cmake diff --git a/.gitea/workflows/autobuild.yaml b/.gitea/workflows/autobuild.yaml index ab4fb04..db02f73 100644 --- a/.gitea/workflows/autobuild.yaml +++ b/.gitea/workflows/autobuild.yaml @@ -33,7 +33,7 @@ jobs: rm raylib -r rm yaml-cpp -r - wget https://github.com/lsalzman/enet/archive/refs/heads/master.zip + wget https://github.com/zpl-c/enet/archive/refs/heads/master.zip unzip master.zip mv enet-master enet rm master.zip @@ -64,6 +64,7 @@ jobs: sh ${{ gitea.workspace }}/compile.sh zip -r release-linux.zip OUTPUT-Linux || true zip -r release-w64.zip OUTPUT-w64 || true + zip -r release-w32.zip OUTPUT-w32 || true - name: Upload artifacts uses: actions/upload-artifact@v3 @@ -72,3 +73,4 @@ jobs: path: | release-linux.zip release-w64.zip + release-w32.zip diff --git a/.gitignore b/.gitignore index 7598fc7..65d3a72 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ android __UTILS__ snapshots OUTPUT-Linux -OUTPUT-w64 \ No newline at end of file +OUTPUT-w64 +OUTPUT-w32 \ No newline at end of file diff --git a/additions.hpp b/additions.hpp new file mode 100644 index 0000000..87645c2 --- /dev/null +++ b/additions.hpp @@ -0,0 +1,11 @@ +#ifdef WIN32 // FUCK WINDOWS + #include "external/fix_win32_compatibility.h" + #undef PlaySound +#endif + +#include + +#ifdef WIN32 // FUCK WINDOWS 2 + #undef PlaySound + #undef Sound +#endif diff --git a/compile.sh b/compile.sh index d610ded..c89989f 100644 --- a/compile.sh +++ b/compile.sh @@ -1,27 +1,5 @@ #/usr/bin/bash -./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > src/helpers/common.hpp - -rm -r build -echo Building Linux... -cmake -B build -DUNIX=ON -DUNIX=true -cd build -make -j12 -cd .. -mkdir OUTPUT-Linux -cp build/src/RCRAFT OUTPUT-Linux -cp -r data/resources OUTPUT-Linux -mkdir OUTPUT-Linux/user -mkdir OUTPUT-Linux/user/worlds - -rm -r build -echo Building Windows... -cmake -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w64.cmake -DWIN32=ON -DWIN32=true -B build -cd build -make -j12 -cd .. -mkdir OUTPUT-w64 -cp build/src/RCRAFT.exe OUTPUT-w64 -cp -r data/resources OUTPUT-w64 -mkdir OUTPUT-w64/user -mkdir OUTPUT-w64/user/worlds \ No newline at end of file +sh compile_linux.sh +sh compile_windows_64.sh +sh compile_windows.sh \ No newline at end of file diff --git a/compile_linux.sh b/compile_linux.sh new file mode 100644 index 0000000..03ffced --- /dev/null +++ b/compile_linux.sh @@ -0,0 +1,17 @@ +#/usr/bin/bash + +./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > tmp.hpp +cat additions.hpp tmp.hpp > src/helpers/common.hpp +rm tmp.hpp + +echo Building x86-64 Linux... +rm -rf build +cmake -B build -DUNIX=ON -DUNIX=true +cd build +make -j12 +cd .. +mkdir OUTPUT-Linux +cp build/src/RCRAFT OUTPUT-Linux/CubeGame +cp -r data/resources OUTPUT-Linux +mkdir OUTPUT-Linux/user +mkdir OUTPUT-Linux/user/worlds \ No newline at end of file diff --git a/compile_windows.sh b/compile_windows.sh new file mode 100644 index 0000000..f1a4155 --- /dev/null +++ b/compile_windows.sh @@ -0,0 +1,17 @@ +#/usr/bin/bash + +./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > tmp.hpp +cat additions.hpp tmp.hpp > src/helpers/common.hpp +rm tmp.hpp + +echo Building i686 Windows... +rm -rf build +cmake -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w32.cmake -DWIN32=ON -DWIN32=true -B build +cd build +make -j12 +cd .. +mkdir OUTPUT-w32 +cp build/src/RCRAFT.exe OUTPUT-w32/CubeGame.exe +cp -r data/resources OUTPUT-w32 +mkdir OUTPUT-w32/user +mkdir OUTPUT-w32/user/worlds \ No newline at end of file diff --git a/compile_windows_64.sh b/compile_windows_64.sh new file mode 100644 index 0000000..6a6179a --- /dev/null +++ b/compile_windows_64.sh @@ -0,0 +1,17 @@ +#/usr/bin/bash + +./makeheaders/makeheaders -h src/helpers/vars.hpp src/helpers/chunks.cpp src/helpers/debug.cpp src/helpers/entities.cpp src/helpers/input.cpp src/helpers/menu.cpp src/helpers/mesher.cpp src/helpers/networking.cpp src/helpers/utils.cpp src/helpers/inlines.hpp src/helpers/inventory.cpp src/helpers/locale.cpp src/helpers/recipes.cpp src/helpers/particles.cpp src/helpers/player.cpp src/helpers/multisound.cpp src/helpers/svlib.cpp -v > tmp.hpp +cat additions.hpp tmp.hpp > src/helpers/common.hpp +rm tmp.hpp + +echo Building x86-64 Windows... +rm -rf build +cmake -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w64.cmake -DWIN32=ON -DWIN32=true -B build +cd build +make -j12 +cd .. +mkdir OUTPUT-w64 +cp build/src/RCRAFT.exe OUTPUT-w64/CubeGame.exe +cp -r data/resources OUTPUT-w64 +mkdir OUTPUT-w64/user +mkdir OUTPUT-w64/user/worlds \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6563c4e..645c591 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,24 +2,28 @@ cmake_minimum_required(VERSION 3.23) project(RCRAFT) add_subdirectory(helpers) -#add_subdirectory(dedicated_server) + set(YAML_BUILD_SHARED_LIBS OFF) set(YAML_MSVC_SHARED_RT OFF) -set(OPENGL_VERSION 4.3) +set(OPENGL_VERSION 1.1) + add_subdirectory(libraries/raylib) add_subdirectory(libraries/enet) add_subdirectory(libraries/yaml-cpp) add_subdirectory(libraries/Lua) -if (WIN32) - add_compile_definitions(WIN32) - add_compile_options(-DWIN32) - link_libraries(ws2_32) -endif() execute_process(COMMAND date +v.%yw%W OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) add_compile_definitions(GAME_VERSION="${BUILD_DATE}") add_executable(RCRAFT rcraft.cpp) + +if (WIN32) + add_compile_definitions(WIN32) + add_compile_options(-DWIN32) + target_link_libraries(RCRAFT INTERFACE winmm ws2_32) +endif() +add_compile_options(-Wno-narrowing) +target_link_directories(RCRAFT PRIVATE ${CMAKE_SOURCE_DIR}/build/src/libraries/enet/) target_include_directories(RCRAFT PRIVATE libraries/enet/include/. libraries/yaml-cpp/include/. @@ -28,8 +32,8 @@ target_include_directories(RCRAFT PRIVATE ) target_link_libraries(RCRAFT PRIVATE raylib - enet helpers + enet yaml-cpp lua_static ) \ No newline at end of file diff --git a/src/helpers/CMakeLists.txt b/src/helpers/CMakeLists.txt index 89fa467..5049a7b 100644 --- a/src/helpers/CMakeLists.txt +++ b/src/helpers/CMakeLists.txt @@ -18,6 +18,12 @@ add_library(helpers STATIC svlib.cpp ) +if (WIN32) + add_compile_definitions(WIN32) + add_compile_options(-DWIN32) + target_link_libraries(helpers INTERFACE winmm ws2_32) +endif() + execute_process(COMMAND date +v.%yw%W OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) add_compile_definitions(GAME_VERSION="${BUILD_DATE}") @@ -36,4 +42,4 @@ target_sources(helpers FILE_SET headers TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES common.hpp ) -target_link_libraries(helpers PRIVATE raylib yaml-cpp lua_static) \ No newline at end of file +target_link_libraries(helpers PRIVATE raylib yaml-cpp lua_static enet) \ No newline at end of file diff --git a/src/helpers/common.hpp b/src/helpers/common.hpp index b759acc..04ae25f 100644 --- a/src/helpers/common.hpp +++ b/src/helpers/common.hpp @@ -1,9 +1,16 @@ -#if defined(WIN32) -#include "external/fix_win32_compatibility.h" +#ifdef WIN32 // FUCK WINDOWS + #include "external/fix_win32_compatibility.h" + #undef PlaySound +#endif + +#include + +#ifdef WIN32 // FUCK WINDOWS 2 + #undef PlaySound + #undef Sound #endif #include "glfw_keycodes_to_string.h" #include "../PerlinNoise.hpp" -#include #include "raylib.h" #include "raymath.h" #include @@ -371,7 +378,6 @@ extern int currentlySelected; extern GameState state; extern Texture2D cubemap; int TryConnect(const char *hostname); -void InitSingleplayer(); void GameModeCleanup(); void DrawBackground(); void InitMenu(); @@ -610,7 +616,6 @@ void SavePlayerData(); bool LoadPlayerData(); void MS_PlaySound(Sound src,float pitch,float volume,Vector3 position); void MS_Update(float dt,Camera camera); -void StartInternalServer(bool&started); void ServerNetworkUpdate(); void StopInternalServer(); #define INTERFACE 0 diff --git a/src/helpers/menu.cpp b/src/helpers/menu.cpp index a5e1862..7b5860c 100644 --- a/src/helpers/menu.cpp +++ b/src/helpers/menu.cpp @@ -29,7 +29,7 @@ static int MakeUIPOI(int x, int y) { std::unordered_set ui_pois; int TryConnect(const char* hostname); -void InitSingleplayer(); +//void InitSingleplayer(); void GameModeCleanup(); static int mouseX = -1; @@ -503,7 +503,7 @@ void DrawWorldSelect() { } if (Button(LocaleGet("create_world").c_str(), GetScreenWidth()/2+196-128, GetScreenHeight()-48, 128, 0)) { UIResetMousePos(); - InitSingleplayer(); + //InitSingleplayer(); return; } if (Button(LocaleGet("create_world").c_str(), GetScreenWidth()/2+196-128, GetScreenHeight()-48-48, 128, 0)) { diff --git a/src/helpers/mesher.cpp b/src/helpers/mesher.cpp index 8b78714..d7002da 100644 --- a/src/helpers/mesher.cpp +++ b/src/helpers/mesher.cpp @@ -9,6 +9,7 @@ #ifndef SERVER #ifndef LEGACY_GL + MeshData GenerateChunkMesh(ChunkRenderData chunkRenderData, Chunk chunk, int chunkWorldX, int chunkWorldY, uint8_t sideMask) { MeshData out = {0}; diff --git a/src/helpers/networking.cpp b/src/helpers/networking.cpp index 3e8930c..1dc646e 100644 --- a/src/helpers/networking.cpp +++ b/src/helpers/networking.cpp @@ -1,7 +1,7 @@ #include #include "common.hpp" #include - +#include int NetworkingStart() { @@ -10,7 +10,7 @@ int NetworkingStart() fprintf (stderr, "An error occurred while initializing ENet.\n"); return EXIT_FAILURE; } - atexit(enet_deinitialize); + return 0; } ENetHost* StartServer() { @@ -57,7 +57,7 @@ ENetHost* StartClient() { void SendPacket(ENetPeer* peer, void* data, int len) { ENetPacket* packet = enet_packet_create(data, len, ENET_PACKET_FLAG_UNSEQUENCED); - + std::cout << (packet == NULL) << std::endl; int c = enet_peer_send(peer, 0, packet); if(c!=0) { printf("Failed sending packet! "); diff --git a/src/helpers/recipes.cpp b/src/helpers/recipes.cpp index 7b410ee..b9ca033 100644 --- a/src/helpers/recipes.cpp +++ b/src/helpers/recipes.cpp @@ -50,6 +50,7 @@ void LoadRecipes() { { Recipe _recipe; const std::string path = dir_entry.path().u8string(); + std::cout << "loading " << path << std::endl; YAML::Node recipe = YAML::LoadFile(path); _recipe.requiredStation = recipe["station"].as(); for (auto s : recipe["inputs"]) { diff --git a/src/helpers/svlib.cpp b/src/helpers/svlib.cpp index 8ee2ded..e9a9ea8 100644 --- a/src/helpers/svlib.cpp +++ b/src/helpers/svlib.cpp @@ -8,6 +8,7 @@ #include #include #include +#include static std::list players; static Chunk world[MAX_WORLD_AREA]; @@ -163,6 +164,9 @@ static int PeerToPlayerID(ENetPeer* peer) { return -1; } +static bool CompareAddress(NetPlayer plr, ENetPeer* peer) { + return plr.addr == peer->address.host && plr.port == (int)(peer->address.port); +} static void ParseData(ENetPacket* packet, ENetPeer* peer) { int len = packet->dataLength; unsigned char data[len]; @@ -191,7 +195,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) { response[0] = NET_ARG_ECHOMOVE; for (NetPlayer &plr : players) { - if(plr.addr == peer->address.host && plr.port == peer->address.port) { + if(CompareAddress(plr, peer)) { float x = DeserializeFloat(data[1], data[2]); float y = DeserializeFloat(data[3], data[4]); float z = DeserializeFloat(data[5], data[6]); @@ -211,7 +215,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) { response[0] = NET_ARG_ECHOYAW; for (NetPlayer &plr : players) { - if(plr.addr == peer->address.host && plr.port == peer->address.port) { + if(CompareAddress(plr, peer)) { response[1] = plr.id; plr.yaw = data[1]; response[2] = plr.yaw; @@ -226,7 +230,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) { { unsigned char responseP[9]; responseP[0] = NET_ARG_PLRREG; - if(plr.addr != peer->address.host || plr.port != peer->address.port) { + if(!CompareAddress(plr, peer)) { SerializeFloat2Data(plr.x, responseP, 2); SerializeFloat2Data(plr.y, responseP, 4); SerializeFloat2Data(plr.z, responseP, 6); @@ -240,7 +244,7 @@ static void ParseData(ENetPacket* packet, ENetPeer* peer) { response[0] = NET_ARG_BLOCK; for (NetPlayer &plr : players) { - if(plr.addr == peer->address.host || plr.port == peer->address.port) { + if(CompareAddress(plr, peer)) { unsigned char responseB[6]; responseB[0] = NET_ARG_BLOCK; responseB[1] = plr.id; @@ -268,7 +272,7 @@ static int FirstFreeID(const std::list& players) { return id; } static bool serverStarted = false; -void StartInternalServer(bool& started) { +void StartInternalServer(std::atomic_bool& started) { int worldType = 0; InitWorldgen(worldType); std::cout << "Building chunks..." << std::endl; @@ -290,7 +294,7 @@ void StartInternalServer(bool& started) { void ServerNetworkUpdate() { if(serverStarted) { ENetEvent event; - while(enet_host_service (server, &event, 1) > 0) + while(enet_host_service (server, &event, 0) > 0) { switch (event.type) { @@ -308,7 +312,7 @@ void ServerNetworkUpdate() { NetPlayer netPlayer; netPlayer.id = id; netPlayer.addr = event.peer->address.host; - netPlayer.port = event.peer->address.port; + netPlayer.port = (int)(event.peer->address.port); netPlayer.peer = event.peer; players.push_back(netPlayer); @@ -316,7 +320,6 @@ void ServerNetworkUpdate() { response[1] = netPlayer.id; BroadcastPacketR(server, response, sizeof(response)); } - // notify plugins CallPluginOnConnect(id); break; @@ -329,7 +332,7 @@ void ServerNetworkUpdate() { printf ("%s disconnected.\n", event.peer -> data); event.peer -> data = NULL; for (auto it = players.begin(); it != players.end(); ++it) { - if (it->addr == event.peer->address.host && it->port == event.peer->address.port) { + if (CompareAddress(*it, event.peer)) { char responseD[2]; responseD[0] = NET_ARG_PLRDCN; responseD[1] = it->id; diff --git a/src/helpers/vars.hpp b/src/helpers/vars.hpp index d4c6180..98cbce1 100644 --- a/src/helpers/vars.hpp +++ b/src/helpers/vars.hpp @@ -1,18 +1,15 @@ #if INTERFACE -#ifdef WIN32 -#include "external/fix_win32_compatibility.h" -#endif #ifdef Escape #undef Escape #endif #include "glfw_keycodes_to_string.h" #include "../PerlinNoise.hpp" -#include -#ifdef PlaySound -#undef PlaySound +#ifdef WIN32 + #include "external/fix_win32_compatibility.h" #endif + #include "raylib.h" #include "raymath.h" #include diff --git a/src/rcraft.cpp b/src/rcraft.cpp index 5dce420..cf49842 100644 --- a/src/rcraft.cpp +++ b/src/rcraft.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #define MAX_RAY_DISTANCE 8.0f struct MessageData { std::string message; @@ -450,7 +451,7 @@ void SetBlockNetwork(Chunk world[], int bx, int by, int bz, int t) { data[2] = (uint8_t)by; data[3] = (uint8_t)bz; data[4] = (uint8_t)t; - SendPacketR(peer, data, 5); + SendPacketR(peer, data, sizeof(data)); } else { SetBlock(world, bx, by, bz, t); @@ -481,7 +482,7 @@ static void TickAvailableBlocks() { } } } -static bool serverStarted; +std::atomic_bool serverStarted; int TryConnect(const char* hostname) { client = StartClient(); @@ -506,16 +507,14 @@ int TryConnect(const char* hostname) { "No available peers for initiating an ENet connection.\n"); return NET_ERROR_NOTFOUND; } - printf("Found a host\n"); - while (!serverStarted) + + if (enet_host_service (client, & event, 5000) > 0 && + event.type == ENET_EVENT_TYPE_CONNECT) { - if(!online) serverStarted = true; - } - if (enet_host_service (client, & event, 10000) && event.type == ENET_EVENT_TYPE_CONNECT){ puts ("Connection succeeded."); char data[1]; data[0] = NET_ARG_REQWORLD; - SendPacketR(peer, data, 1); // Tell the server to send all chunks + SendPacketR(peer, data, 1); online = true; state = GAME_STATE_LOADING; return 0; @@ -529,22 +528,26 @@ int TryConnect(const char* hostname) { return -1; } -std::thread serverThread; - -void ServerThread(bool& started) { +//std::thread serverThread; +std::atomic_bool stop_server = false; +void StartInternalServer(std::atomic_bool& started); +/*void ServerThread(std::atomic_bool& started) { StartInternalServer(started); + stop_server = false; while(true) { + if (stop_server) + return; ServerNetworkUpdate(); } -} -void InitSingleplayer() { +}*/ +/*void InitSingleplayer() { online = true; serverThread = std::thread(ServerThread, std::ref(serverStarted)); int result = TryConnect("localhost"); if(result == NET_ERROR_FAILED) { state = GAME_STATE_MAINMENU; } -} +}*/ std::vector messages; bool survival = false; bool chatOpen = false; @@ -1400,10 +1403,14 @@ void NetworkUpdate() { void GameModeCleanupFull() { if(online) { + enet_host_destroy(client); online = false; } - + + stop_server = true; + //serverThread.join(); + for (int idx = 0; idx < MAX_WORLD_AREA; idx++) { if(loadedChunks[idx]) { @@ -1432,6 +1439,7 @@ extern void InitMenu(); int main(void) { SetTraceLogLevel(LOG_WARNING); + NetworkingStart(); SetConfigFlags(FLAG_WINDOW_RESIZABLE); InitWindow(WIDTH, HEIGHT, GAME_NAME); InitWorldgen(0); @@ -1595,7 +1603,7 @@ int main(void) } } - + enet_deinitialize(); GameModeCleanupFull(); UnloadTexture(terrain); diff --git a/toolchains/mingw-w32.cmake b/toolchains/mingw-w32.cmake new file mode 100644 index 0000000..bf85771 --- /dev/null +++ b/toolchains/mingw-w32.cmake @@ -0,0 +1,14 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_VERSION 1) + +set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) +set(CMAKE_RC_COMPILER i686-w64-mingw32-windres) + +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) + +set(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -g -O0 -fno-omit-frame-pointer ${CMAKE_C_FLAGS}") +set(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -g -O0 -fno-omit-frame-pointer ${CMAKE_CXX_FLAGS}") \ No newline at end of file