aboutsummaryrefslogtreecommitdiff
path: root/deps/raylib/.github/workflows/windows.yml
blob: f8e19f0fc245cff9bfb0a0431a5ec92cb9854512 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: Windows

on:
  workflow_dispatch:
  push:
    paths:
      - 'src/**'
      - 'examples/**'
      - '.github/workflows/windows.yml'
  pull_request:
    paths:
      - 'src/**'
      - 'examples/**'
      - '.github/workflows/windows.yml'
  release:
    types: [published]

permissions:
  contents: read

jobs:
  build:
    permissions:
      contents: write  # for actions/upload-release-asset to upload release asset
    runs-on: windows-latest
    strategy:
      fail-fast: false
      max-parallel: 1
      matrix:
        compiler: [mingw-w64, msvc16]
        bits: [32, 64]
        include:
        - compiler: mingw-w64
          bits: 32
          ARCH: "i686"
          WINDRES_ARCH: pe-i386
        - compiler: mingw-w64
          bits: 64
          ARCH: "x86_64"
          WINDRES_ARCH: pe-x86-64
        - compiler: msvc16
          bits: 32
          ARCH: "x86"
          VSARCHPATH: "Win32" 
        - compiler: msvc16
          bits: 64
          ARCH: "x64" 
          VSARCHPATH: "x64"

    env:
      RELEASE_NAME: raylib-dev_win${{ matrix.bits }}_${{ matrix.compiler }}
      GNUTARGET: default

    steps:
    - name: Checkout
      uses: actions/checkout@master
    
    - name: Setup Release Version
      run: |
        echo "RELEASE_NAME=raylib-${{ github.event.release.tag_name }}_win${{ matrix.bits }}_${{ matrix.compiler }}" >> $GITHUB_ENV
      shell: bash
      if: github.event_name == 'release' && github.event.action == 'published'

    - name: Setup Environment
      run: | 
        dir
        mkdir build
        cd build
        mkdir ${{ env.RELEASE_NAME }}
        cd ${{ env.RELEASE_NAME }}
        mkdir include
        mkdir lib
        cd ../../../raylib

    # Setup MSBuild.exe path if required
    - name: Setup MSBuild
      uses: microsoft/setup-msbuild@v2
      if: matrix.compiler == 'msvc16'

    - name: Build Library (MinGW-w64 32bit)
      run: |
        cd src
        x86_64-w64-mingw32-gcc.exe --version
        windres.exe --version
        dir C:\msys64\mingw64\bin
        make PLATFORM=PLATFORM_DESKTOP CC=x86_64-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=STATIC RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" CUSTOM_CFLAGS=-m32
        //windres.exe -i raylib.dll.rc -o raylib.dll.rc.data -O coff --target=${{ matrix.WINDRES_ARCH }}
        //make PLATFORM=PLATFORM_DESKTOP CC=${{ matrix.ARCH }}-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=SHARED RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B
        cd ..
      shell: cmd
      if: |
        matrix.compiler == 'mingw-w64' &&
        matrix.bits == 32
        
    - name: Build Library (MinGW-w64 64bit)
      run: |
        cd src
        ${{ matrix.ARCH }}-w64-mingw32-gcc.exe --version
        windres.exe --version
        dir C:\msys64\mingw64\bin
        make PLATFORM=PLATFORM_DESKTOP CC=${{ matrix.ARCH }}-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=STATIC RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib"
        windres.exe -i raylib.dll.rc -o raylib.dll.rc.data -O coff --target=${{ matrix.WINDRES_ARCH }}
        make PLATFORM=PLATFORM_DESKTOP CC=${{ matrix.ARCH }}-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=SHARED RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B
        cd ..
      shell: cmd
      if: |
        matrix.compiler == 'mingw-w64' &&
        matrix.bits == 64

    - name: Build Library (MSVC16)
      run: |
        cd projects/VS2022
        msbuild.exe raylib.sln /target:raylib /property:Configuration=Release /property:Platform=${{ matrix.ARCH }}
        copy /Y .\build\raylib\bin\${{ matrix.VSARCHPATH }}\Release\raylib.lib .\..\..\build\${{ env.RELEASE_NAME }}\lib\raylib.lib
        msbuild.exe raylib.sln /target:raylib /property:Configuration=Release.DLL /property:Platform=${{ matrix.ARCH }}
        copy /Y .\build\raylib\bin\${{ matrix.VSARCHPATH }}\Release.DLL\raylib.dll .\..\..\build\${{ env.RELEASE_NAME }}\lib\raylib.dll
        copy /Y .\build\raylib\bin\${{ matrix.VSARCHPATH }}\Release.DLL\raylib.lib .\..\..\build\${{ env.RELEASE_NAME }}\lib\raylibdll.lib
        cd ../..
      shell: cmd
      if: matrix.compiler == 'msvc16'

    - name: Generate Artifacts
      run: |
        copy /Y .\src\raylib.h .\build\${{ env.RELEASE_NAME }}\include\raylib.h
        copy /Y .\src\raymath.h .\build\${{ env.RELEASE_NAME }}\include\raymath.h
        copy /Y .\src\rlgl.h .\build\${{ env.RELEASE_NAME }}\include\rlgl.h
        copy /Y .\CHANGELOG .\build\${{ env.RELEASE_NAME }}\CHANGELOG
        copy /Y .\README.md .\build\${{ env.RELEASE_NAME }}\README.md
        copy /Y .\LICENSE .\build\${{ env.RELEASE_NAME }}\LICENSE
        cd build
        7z a ./${{ env.RELEASE_NAME }}.zip ./${{ env.RELEASE_NAME }}
        dir
      shell: cmd

    - name: Upload Artifacts
      uses: actions/upload-artifact@v4
      with:
        name: ${{ env.RELEASE_NAME }}.zip
        path: ./build/${{ env.RELEASE_NAME }}.zip
        
    - name: Upload Artifact to Release
      uses: softprops/action-gh-release@v1
      with:
        files: ./build/${{ env.RELEASE_NAME }}.zip
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      if: github.event_name == 'release' && github.event.action == 'published'