From a0e84792740d20d5d38b57f938962fb4f2818259 Mon Sep 17 00:00:00 2001 From: Trihedraf Date: Thu, 18 Feb 2021 23:18:16 -0800 Subject: [PATCH] add win_x64 MinGW builds and Readme Instructions --- .circleci/config.yml | 13 +++++++++++++ CMake/mingwcc64.cmake | 19 +++++++++++++++++++ Packaging/windows/mingw-prep64.sh | 15 +++++++++++++++ README.md | 23 +++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 CMake/mingwcc64.cmake create mode 100755 Packaging/windows/mingw-prep64.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 492d912e4..68a6389d5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -67,6 +67,18 @@ jobs: - run: cmake -S. -Bbuild -DNIGHTLY_BUILD=ON -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc.cmake - run: cmake --build build -j $(nproc) - store_artifacts: {path: ./build/devilutionx.exe, destination: devilutionx_x86.exe} + windows_x64: + docker: + - image: debian:stable + working_directory: ~/repo + steps: + - checkout + - run: apt-get update -y + - run: apt-get install -y cmake gcc-mingw-w64 g++-mingw-w64 wget git sudo + - run: Packaging/windows/mingw-prep64.sh + - run: cmake -S. -Bbuild -DNIGHTLY_BUILD=ON -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc64.cmake + - run: cmake --build build -j $(nproc) + - store_artifacts: {path: ./build/devilutionx.exe, destination: devilutionx_x64.exe} switch: docker: - image: devkitpro/devkita64:20200528 @@ -101,6 +113,7 @@ workflows: - linux_x86_64_test - linux_x86 - windows_x86 + - windows_x64 - linux_x86_64_sdl1 - switch - amigaos-m68k diff --git a/CMake/mingwcc64.cmake b/CMake/mingwcc64.cmake new file mode 100644 index 000000000..198ef6c63 --- /dev/null +++ b/CMake/mingwcc64.cmake @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.10) + +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(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) diff --git a/Packaging/windows/mingw-prep64.sh b/Packaging/windows/mingw-prep64.sh new file mode 100755 index 000000000..1b49450c1 --- /dev/null +++ b/Packaging/windows/mingw-prep64.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# exit when any command fails +set -euo pipefail + +wget https://www.libsdl.org/release/SDL2-devel-2.0.9-mingw.tar.gz +tar -xzf SDL2-devel-2.0.9-mingw.tar.gz +wget https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-devel-2.0.15-mingw.tar.gz +tar -xzf SDL2_ttf-devel-2.0.15-mingw.tar.gz +wget https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-devel-2.0.4-mingw.tar.gz +tar -xzf SDL2_mixer-devel-2.0.4-mingw.tar.gz +wget https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18-mingw.tar.gz +tar -xzf libsodium-1.0.18-mingw.tar.gz --no-same-owner +sudo cp -r libsodium-win64/* /usr/x86_64-w64-mingw32 +sudo cp -r SDL2*/x86_64-w64-mingw32 /usr \ No newline at end of file diff --git a/README.md b/README.md index 791300cc6..e424ffc65 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,8 @@ cmake --build . -j $(sysctl -n hw.ncpuonline) ### Installing dependencies on WSL, Debian and Ubuntu +### 32-bit + Download and place the 32bit MinGW Development Libraries of [SDL2](https://www.libsdl.org/download-2.0.php), [SDL2_mixer](https://www.libsdl.org/projects/SDL_mixer/), [SDL2_ttf](https://www.libsdl.org/projects/SDL_ttf/) and [Libsodium](https://github.com/jedisct1/libsodium/releases) in `/usr/i686-w64-mingw32`. This can be done automatically by running `Packaging/windows/mingw-prep.sh`. NOTE: SDL2 2.0.12 appears to not compile correctly. @@ -102,12 +104,33 @@ NOTE: SDL2 2.0.12 appears to not compile correctly. ``` sudo apt-get install cmake gcc-mingw-w64-i686 g++-mingw-w64-i686 ``` + +### 64-bit + +Download and place the 64bit MinGW Development Libraries of [SDL2](https://www.libsdl.org/download-2.0.php), [SDL2_mixer](https://www.libsdl.org/projects/SDL_mixer/), [SDL2_ttf](https://www.libsdl.org/projects/SDL_ttf/) and [Libsodium](https://github.com/jedisct1/libsodium/releases) in `/usr/x86_64-w64-mingw32`. This can be done automatically by running +`Packaging/windows/mingw-prep64.sh`. +NOTE: SDL2 2.0.12 appears to not compile correctly. + +``` +sudo apt-get install cmake gcc-mingw-w64 g++-mingw-w64 +``` ### Compiling + +### 32-bit + ``` cd build cmake -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc.cmake .. make -j$(nproc) ``` + +### 64-bit + +``` +cd build +cmake -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc64.cmake .. +make -j$(nproc) +```
Windows via Visual Studio