Browse Source

Add initial attempt at Windows build.

Ian Walton 4 years ago
parent
commit
3cb338a3ce
1 changed files with 76 additions and 29 deletions
  1. 76 29
      .github/workflows/main.yml

+ 76 - 29
.github/workflows/main.yml

@@ -1,15 +1,60 @@
 name: build
 
-on: [push]
-
+on:
+  push:
+    branches:
+      - release
 jobs:
-  build:
+  # build-mac:
+  #   strategy:
+  #     matrix:
+  #       # windows builds may need to specify building 64bit target:
+  #       # if [[ "$OSTYPE" == "msys" ]]; then export WINEXTRA="-DCMAKE_GENERATOR_PLATFORM=x64"; else export WINEXTRA=""; fi
+  #       os: [macOS-latest]
+  #       qt: [5.15.2]
+  #   runs-on: ${{ matrix.os }}
+  #   steps:
+  #   - uses: actions/checkout@v2
+
+  #   - name: Install Qt ${{ matrix.qt }}
+  #     uses: jurplel/install-qt-action@v2
+  #     with:
+  #       version: ${{ matrix.qt }}
+  #       modules: "qtwebengine"
+        
+  #   - name: Install dependencies
+  #     run: |
+  #       brew update
+  #       grep -v libx /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/cairo.rb | grep -v enable-x > _tmp
+  #       mv _tmp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/cairo.rb
+  #       brew install cairo --build-from-source
+  #       brew install harfbuzz --build-from-source
+  #       brew install libass --build-from-source
+  #       sed 's/args = %W\[/& --enable-static --disable-shared/g' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ffmpeg.rb > _tmp
+  #       mv _tmp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ffmpeg.rb
+  #       brew install ffmpeg --build-from-source
+  #       brew install ninja
+  #       grep -v enable-javascript /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/mpv.rb | grep -v mujs > _tmp
+  #       mv _tmp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/mpv.rb
+  #       brew install mpv --build-from-source
+  #   - name: Debug build and test
+  #     run: |
+  #       ./download_webclient.sh
+  #       cd build
+  #       cmake -GNinja -DQTROOT=$Qt5_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=output ..
+  #       ninja install
+        
+  #   - name: Archive production artifacts
+  #     uses: actions/upload-artifact@v2
+  #     with:
+  #       name: bundle.dmg
+  #       path: ${{ github.workspace }}/build/output/Jellyfin\ Media\ Player.dmg
+  build-win:
     strategy:
       matrix:
-        # windows builds may need to specify building 64bit target:
-        # if [[ "$OSTYPE" == "msys" ]]; then export WINEXTRA="-DCMAKE_GENERATOR_PLATFORM=x64"; else export WINEXTRA=""; fi
-        os: [macOS-latest]
+        os: [windows-latest]
         qt: [5.15.2]
+        arch: "win64_msvc2019_64"
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v2
@@ -19,31 +64,33 @@ jobs:
       with:
         version: ${{ matrix.qt }}
         modules: "qtwebengine"
-        
     - name: Install dependencies
-      run: |
-        brew update
-        grep -v libx /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/cairo.rb | grep -v enable-x > _tmp
-        mv _tmp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/cairo.rb
-        brew install cairo --build-from-source
-        brew install harfbuzz --build-from-source
-        brew install libass --build-from-source
-        sed 's/args = %W\[/& --enable-static --disable-shared/g' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ffmpeg.rb > _tmp
-        mv _tmp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/ffmpeg.rb
-        brew install ffmpeg --build-from-source
-        brew install ninja
-        grep -v enable-javascript /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/mpv.rb | grep -v mujs > _tmp
-        mv _tmp /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/mpv.rb
-        brew install mpv --build-from-source
-    - name: Debug build and test
       run: |
         ./download_webclient.sh
+        curl -L https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip > ninja.zip
+        unzip ninja.zip
+        mv ninja.exe build/
+        curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-20210404-git-dd86f19.7z/download > mpv.7z
+        7z x mpv.7z
+        mv include mpv
+        mkdir include
+        mv mpv include
+        mkdir mpv
+        mv include mpv
+        mv mpv-1.dll mpv/mpv.dll
+        mv mpv.def libmpv.dll.a mpv/
+        mv mpv build/
+      shell: bash
+    - name: Build
+      run: |
         cd build
-        cmake -GNinja -DQTROOT=$Qt5_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=output ..
-        ninja install
-        
+        set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin
+        cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=C:/Qt/5.15.2/msvc2019_64 -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/mpv.dll -DCMAKE_INSTALL_PREFIX=output ..
+        lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X64
+        ninja
+        ninja windows_package
     - name: Archive production artifacts
-      uses: actions/upload-artifact@v2
-      with:
-        name: bundle.dmg
-        path: ${{ github.workspace }}/build/output/Jellyfin\ Media\ Player.dmg
+        uses: actions/upload-artifact@v2
+        with:
+          name: installer.exe
+          path: ${{ github.workspace }}/build/JellyfinMediaPlayer-*-windows-x64.exe