From dcd3573e166697922dacd4ffa7ea6bd349588b69 Mon Sep 17 00:00:00 2001
From: slavidodo <slavidodo@gmail.com>
Date: Sat, 9 May 2020 08:46:31 +0200
Subject: [PATCH] Building with vcpkg

---
 .github/workflows/build-vcpkg.yml | 148 ++++++++++++++++++++++++++++++
 1 file changed, 148 insertions(+)
 create mode 100644 .github/workflows/build-vcpkg.yml

diff --git a/.github/workflows/build-vcpkg.yml b/.github/workflows/build-vcpkg.yml
new file mode 100644
index 00000000..f62fcf41
--- /dev/null
+++ b/.github/workflows/build-vcpkg.yml
@@ -0,0 +1,148 @@
+name: Build with vcpkg
+
+on:
+  push:
+    branches:
+      - master
+      - v*
+
+    tags:
+      - v*
+
+    paths:
+      - cmake/**
+      - src/**
+      - CMakeLists.txt
+
+  pull_request:
+    paths:
+      - cmake/**
+      - src/**
+      - CMakeLists.txt
+
+jobs:
+  job:
+    name: ${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}
+    runs-on: ${{ matrix.os }}-latest
+    strategy:
+      fail-fast: false
+      max-parallel: 8
+      matrix:
+        name: [ubuntu-gcc, ubuntu-clang, macos-clang, windows-msvc]
+        buildtype: [Debug, Release]
+        luajit: [on, off]
+        include:
+          - name: windows-msvc
+            os: windows
+            cxx: cl.exe
+            cc: cl.exe
+            triplet: x64-windows
+            packages: >
+              boost-iostreams boost-asio boost-system boost-variant boost-lockfree luajit glew
+              boost-filesystem boost-uuid physfs openal-soft libogg libvorbis zlib opengl
+          - name: ubuntu-gcc
+            os: ubuntu
+            cxx: g++
+            cc: gcc
+            triplet: x64-linux
+            packages: >
+              boost-iostreams boost-asio boost-system boost-variant boost-lockfree luajit glew
+              boost-filesystem boost-uuid physfs openal-soft libogg libvorbis zlib opengl
+          - name: ubuntu-clang
+            os: ubuntu
+            cxx: clang++
+            cc: clang
+            triplet: x64-linux
+            packages: >
+              boost-iostreams boost-asio boost-system boost-variant boost-lockfree luajit glew
+              boost-filesystem boost-uuid physfs openal-soft libogg libvorbis zlib opengl
+          - name: macos-clang
+            os: macos
+            cxx: clang++
+            cc: clang
+            triplet: x64-osx
+            packages: >
+              boost-iostreams boost-asio boost-system boost-variant boost-lockfree luajit glew
+              boost-filesystem boost-uuid physfs openal-soft libogg libvorbis zlib opengl
+
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: true
+
+      - name: Unshallow
+        run: git fetch --prune --unshallow
+
+      - name: Get latest CMake
+        # Using 'latest' branch, the latest CMake is installed.
+        uses: lukka/get-cmake@latest
+
+      - name: Ubuntu - install luajit, remove libmysqlclient-dev
+        run: |
+          sudo apt-get install libluajit-5.1-dev
+          sudo apt-get remove -y libmysqlclient-dev
+        if: contains( matrix.os, 'ubuntu')
+
+      - name: MacOS - install luajit pkgconfig
+        run: brew install luajit pkgconfig
+        if: contains( matrix.os, 'macos')
+
+      - name: Windows - remove C:/mysql*
+        run: rm -r -fo C:/mysql-5.7.21-winx64
+        if: contains( matrix.os, 'windows')
+
+      - uses: lukka/set-shell-env@v1
+        with:
+          CXX: ${{ matrix.cxx }}
+          CC: ${{ matrix.cc }}
+
+      - name: Run vcpkg
+        uses: lukka/run-vcpkg@v2
+        with:
+          vcpkgArguments: ${{ matrix.packages }}
+          vcpkgDirectory: ${{ runner.workspace }}/vcpkg/
+          vcpkgTriplet: ${{ matrix.triplet }}
+          vcpkgGitCommitId: 7db401cb1ef1fc559ec9f9ce814d064c328fd767
+
+      - name: Build with CMake
+        uses: lukka/run-cmake@v2
+        with:
+          useVcpkgToolchainFile: true
+          buildDirectory: ${{ runner.workspace }}/build
+          cmakeBuildType: ${{ matrix.buildtype }}
+          cmakeAppendedArgs: -DUSE_LUAJIT=${{ matrix.luajit }}
+
+      - name: dir
+        run: find $RUNNER_WORKSPACE
+        shell: bash
+
+      - name: Upload artifact binary
+        uses: actions/upload-artifact@v2
+        with:
+          name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }}
+          path: ${{ runner.workspace }}/build/otclient
+        if: "! contains( matrix.os, 'windows')"
+
+      - name: Upload artifact binary (exe)
+        uses: actions/upload-artifact@v2
+        with:
+          name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }}
+          path: ${{ runner.workspace }}/build/otclient.exe
+        if: contains( matrix.os, 'windows')
+
+      - name: Upload artifact binary (dlls)
+        uses: actions/upload-artifact@v2
+        with:
+          name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }}
+          path: ${{ runner.workspace }}/build/*.dll
+        if: contains( matrix.os, 'windows')
+
+      - name: Prepare datapack contents
+        run: find . -maxdepth 1 ! -name data ! -name config.lua.dist ! -name key.pem ! -name LICENSE ! -name README.md ! -name schema.sql -exec rm -r {} \;
+        shell: bash
+
+      - name: Upload datapack contents
+        uses: actions/upload-artifact@v2
+        with:
+          name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }}
+          path: ${{ github.workspace }}
\ No newline at end of file