From 62d15e44db9c22920de4e2095c613d5b47dea415 Mon Sep 17 00:00:00 2001 From: Ted John Date: Tue, 21 Apr 2020 18:20:59 +0100 Subject: [PATCH] Fix mingw build --- .github/workflows/ci.yml | 2 +- src/openrct2/CMakeLists.txt | 19 ++++++++++++++----- src/openrct2/core/FileWatcher.cpp | 6 ++++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9fcdd4bdcf..8cf76b8a04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: run: | sudo su mkdir bin && cd bin - cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DCMAKE_BUILD_TYPE=MinSizeRel -DDISABLE_IPO=on -DFORCE32=on -DBUILD_SHARED_LIBS=ON + cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DCMAKE_BUILD_TYPE=MinSizeRel -DDISABLE_IPO=on -DFORCE32=on -DBUILD_SHARED_LIBS=ON -DENABLE_SCRIPTING=OFF ninja -k0 macos: name: macOS diff --git a/src/openrct2/CMakeLists.txt b/src/openrct2/CMakeLists.txt index 7bedc0006c..4421affdc8 100644 --- a/src/openrct2/CMakeLists.txt +++ b/src/openrct2/CMakeLists.txt @@ -100,9 +100,22 @@ if (NOT DISABLE_GOOGLE_BENCHMARK) endif () endif () +if (ENABLE_SCRIPTING) + if (MSVC) + find_package(duktape REQUIRED) + else () + PKG_CHECK_MODULES(DUKTAPE REQUIRED duktape) + target_include_directories(${PROJECT_NAME} PRIVATE ${DUKTAPE_INCLUDE_DIRS}) + if (STATIC) + target_link_libraries(${PROJECT_NAME} ${DUKTAPE_STATIC_LIBRARIES}) + else () + target_link_libraries(${PROJECT_NAME} ${DUKTAPE_LIBRARIES}) + endif () + endif () +endif () + # Third party libraries if (MSVC) - find_package(duktape REQUIRED) find_package(jansson CONFIG REQUIRED) set(JANSSON_LIBRARIES "jansson::jansson") find_package(png 1.6 REQUIRED) @@ -111,7 +124,6 @@ if (MSVC) find_path(LIBZIP_INCLUDE_DIRS zip.h) find_library(LIBZIP_LIBRARIES zip) else () - PKG_CHECK_MODULES(DUKTAPE REQUIRED duktape) PKG_CHECK_MODULES(JANSSON REQUIRED jansson>=2.5) PKG_CHECK_MODULES(LIBZIP REQUIRED libzip>=1.0) PKG_CHECK_MODULES(ZLIB REQUIRED zlib) @@ -130,13 +142,11 @@ endif () if (STATIC) target_link_libraries(${PROJECT_NAME} ${JANSSON_STATIC_LIBRARIES} - ${DUKTAPE_STATIC_LIBRARIES} ${PNG_STATIC_LIBRARIES} ${ZLIB_STATIC_LIBRARIES} ${LIBZIP_STATIC_LIBRARIES}) else () target_link_libraries(${PROJECT_NAME} ${JANSSON_LIBRARIES} - ${DUKTAPE_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBZIP_LIBRARIES}) @@ -200,7 +210,6 @@ endif() target_include_directories(${PROJECT_NAME} PRIVATE ${LIBZIP_INCLUDE_DIRS}) target_include_directories(${PROJECT_NAME} PUBLIC ${JANSSON_INCLUDE_DIRS}) target_include_directories(${PROJECT_NAME} PRIVATE ${PNG_INCLUDE_DIRS} - ${DUKTAPE_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) include_directories(${PROJECT_NAME} SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../thirdparty) diff --git a/src/openrct2/core/FileWatcher.cpp b/src/openrct2/core/FileWatcher.cpp index f48db28b27..06165a26c3 100644 --- a/src/openrct2/core/FileWatcher.cpp +++ b/src/openrct2/core/FileWatcher.cpp @@ -109,7 +109,13 @@ FileWatcher::FileWatcher(const std::string& directoryPath) FileWatcher::~FileWatcher() { #ifdef _WIN32 +# ifdef __MINGW32__ + // TODO CancelIo is documented as not working across a different thread but + // CancelIoEx is not available. + CancelIo(_directoryHandle); +# else CancelIoEx(_directoryHandle, nullptr); +# endif CloseHandle(_directoryHandle); #else _finished = true;