From 197bab20120060771678414c1a85c56084a19fb2 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Mon, 29 Aug 2022 15:14:55 +0900 Subject: [PATCH] Fix MinGW build --- .github/workflows/Windows_MinGW_x86_64.yml | 2 +- .gitignore | 2 +- CMake/mingwcc64.toolchain.cmake | 22 ++++++++++++++++++++++ src/unpack_and_minify_mpq.cpp | 4 ++-- third_party/dvl_gfx/CMakeLists.txt | 4 ++-- 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 CMake/mingwcc64.toolchain.cmake diff --git a/.github/workflows/Windows_MinGW_x86_64.yml b/.github/workflows/Windows_MinGW_x86_64.yml index 20ffcd7..6f8d577 100644 --- a/.github/workflows/Windows_MinGW_x86_64.yml +++ b/.github/workflows/Windows_MinGW_x86_64.yml @@ -26,7 +26,7 @@ jobs: working-directory: ${{github.workspace}} env: CMAKE_BUILD_TYPE: ${{github.event_name == 'release' && 'Release' || 'Debug'}} - run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}} -DBUILD_SHARED_LIBS=OFF + run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}} -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc64.toolchain.cmake - name: Build working-directory: ${{github.workspace}} diff --git a/.gitignore b/.gitignore index 365477a..144baef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ /output/ /build/ -/build-rel/ +/build-*/ /.vscode/ diff --git a/CMake/mingwcc64.toolchain.cmake b/CMake/mingwcc64.toolchain.cmake new file mode 100644 index 0000000..d2e77dd --- /dev/null +++ b/CMake/mingwcc64.toolchain.cmake @@ -0,0 +1,22 @@ +SET(MINGW_CROSS TRUE) + +SET(CROSS_PREFIX "/usr" CACHE STRING "crosstool-NG prefix") + +SET(CMAKE_SYSTEM_NAME Windows) + +# workaround +list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "${CROSS_PREFIX}/x86_64-w64-mingw32/include") + +SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc") +SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++") +set(CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres") +set(PKG_CONFIG_EXECUTABLE "${CROSS_PREFIX}/bin/x86_64-w64-mingw32-pkg-config") + +SET(CMAKE_FIND_ROOT_PATH "${CROSS_PREFIX}/x86_64-w64-mingw32" "${CROSS_PREFIX}/x86_64-w64-mingw32/x86_64-w64-mingw32") + +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(SYSTEM_BITS x64) +SET(DISABLE_LTO ON) diff --git a/src/unpack_and_minify_mpq.cpp b/src/unpack_and_minify_mpq.cpp index f2826eb..dabaef3 100644 --- a/src/unpack_and_minify_mpq.cpp +++ b/src/unpack_and_minify_mpq.cpp @@ -42,7 +42,7 @@ void PrintHelp() std::string SrcName(const std::filesystem::path &mpq) { - std::string result = mpq.stem(); + std::string result = mpq.stem().string(); if (result == "DIABDAT") result = "diabdat"; return result; @@ -310,7 +310,7 @@ class MpqArchive { public: explicit MpqArchive(const std::filesystem::path &path) { - const int32_t error = libmpq__archive_open(&archive_, path.c_str(), 0); + const int32_t error = libmpq__archive_open(&archive_, path.string().c_str(), 0); if (error != 0) { std::cerr << "Failed to open MPQ at " << path << ": " << libmpq__strerror(error) << std::endl; diff --git a/third_party/dvl_gfx/CMakeLists.txt b/third_party/dvl_gfx/CMakeLists.txt index 95cee26..29f7375 100644 --- a/third_party/dvl_gfx/CMakeLists.txt +++ b/third_party/dvl_gfx/CMakeLists.txt @@ -3,7 +3,7 @@ include(functions/FetchContent_MakeAvailableExcludeFromAll) set(ENABLE_INSTALL OFF) FetchContent_Declare( dvl_gfx - URL https://github.com/diasurgical/devilutionx-graphics-tools/archive/95c3b4174b1c5e83bfb7f8681b663cb77ec9bcaa.tar.gz - URL_HASH MD5=8d9124f114a0b9a0bfdb1b9a9b7518dd + URL https://github.com/diasurgical/devilutionx-graphics-tools/archive/6f7e8c73df255d15617e5cb6ae088667b387207b.tar.gz + URL_HASH MD5=47717c8d6d4bab5c19b44717fc40f798 ) FetchContent_MakeAvailableExcludeFromAll(dvl_gfx)