25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
5.4 KiB

  1. name: Windows
  2. on:
  3. workflow_dispatch:
  4. push:
  5. paths:
  6. - 'src/**'
  7. - 'examples/**'
  8. - '.github/workflows/windows.yml'
  9. pull_request:
  10. paths:
  11. - 'src/**'
  12. - 'examples/**'
  13. - '.github/workflows/windows.yml'
  14. release:
  15. types: [published]
  16. permissions:
  17. contents: read
  18. jobs:
  19. build:
  20. permissions:
  21. contents: write # for actions/upload-release-asset to upload release asset
  22. runs-on: windows-latest
  23. strategy:
  24. fail-fast: false
  25. max-parallel: 1
  26. matrix:
  27. compiler: [mingw-w64, msvc16]
  28. ziptarget: [ win32, win64, winarm64 ]
  29. include:
  30. - compiler: mingw-w64
  31. ARCH: "i686"
  32. WINDRES_ARCH: pe-i386
  33. ziptarget: "win32"
  34. - compiler: mingw-w64
  35. ARCH: "x86_64"
  36. WINDRES_ARCH: pe-x86-64
  37. ziptarget: "win64"
  38. - compiler: msvc16
  39. ARCH: "x86"
  40. VSARCHPATH: "Win32"
  41. ziptarget: "win32"
  42. - compiler: msvc16
  43. ARCH: "x64"
  44. VSARCHPATH: "x64"
  45. ziptarget: "win64"
  46. - compiler: msvc16
  47. ARCH: "ARM64"
  48. VSARCHPATH: "ARM64"
  49. ziptarget: "winarm64"
  50. exclude:
  51. - compiler: mingw-w64
  52. ziptarget: winarm64 # We don't build arm64 with mingw-w64 yet
  53. env:
  54. RELEASE_NAME: raylib-dev_${{ matrix.ziptarget }}_${{ matrix.compiler }}
  55. GNUTARGET: default
  56. steps:
  57. - name: Checkout
  58. uses: actions/checkout@master
  59. - name: Setup Release Version
  60. run: |
  61. echo "RELEASE_NAME=raylib-${{ github.event.release.tag_name }}_${{ matrix.ziptarget }}_${{ matrix.compiler }}" >> $GITHUB_ENV
  62. shell: bash
  63. if: github.event_name == 'release' && github.event.action == 'published'
  64. - name: Setup Environment
  65. run: |
  66. dir
  67. mkdir build
  68. cd build
  69. mkdir ${{ env.RELEASE_NAME }}
  70. cd ${{ env.RELEASE_NAME }}
  71. mkdir include
  72. mkdir lib
  73. cd ../../../raylib
  74. # Setup MSBuild.exe path if required
  75. - name: Setup MSBuild
  76. uses: microsoft/setup-msbuild@v2
  77. if: matrix.compiler == 'msvc16'
  78. - name: Build Library (MinGW-w64 32bit)
  79. run: |
  80. cd src
  81. x86_64-w64-mingw32-gcc.exe --version
  82. windres.exe --version
  83. dir C:\msys64\mingw64\bin
  84. 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
  85. //windres.exe -i raylib.dll.rc -o raylib.dll.rc.data -O coff --target=${{ matrix.WINDRES_ARCH }}
  86. //make PLATFORM=PLATFORM_DESKTOP CC=${{ matrix.ARCH }}-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=SHARED RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B
  87. cd ..
  88. shell: cmd
  89. if: |
  90. matrix.compiler == 'mingw-w64' &&
  91. matrix.arch == 'i686'
  92. - name: Build Library (MinGW-w64 64bit)
  93. run: |
  94. cd src
  95. ${{ matrix.ARCH }}-w64-mingw32-gcc.exe --version
  96. windres.exe --version
  97. dir C:\msys64\mingw64\bin
  98. make PLATFORM=PLATFORM_DESKTOP CC=${{ matrix.ARCH }}-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=STATIC RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib"
  99. windres.exe -i raylib.dll.rc -o raylib.dll.rc.data -O coff --target=${{ matrix.WINDRES_ARCH }}
  100. make PLATFORM=PLATFORM_DESKTOP CC=${{ matrix.ARCH }}-w64-mingw32-gcc.exe RAYLIB_LIBTYPE=SHARED RAYLIB_RELEASE_PATH="../build/${{ env.RELEASE_NAME }}/lib" -B
  101. cd ..
  102. shell: cmd
  103. if: |
  104. matrix.compiler == 'mingw-w64' &&
  105. matrix.arch == 'x86_64'
  106. - name: Build Library (MSVC16)
  107. run: |
  108. cd projects/VS2022
  109. msbuild.exe raylib.sln /target:raylib /property:Configuration=Release /property:Platform=${{ matrix.ARCH }}
  110. copy /Y .\build\raylib\bin\${{ matrix.VSARCHPATH }}\Release\raylib.lib .\..\..\build\${{ env.RELEASE_NAME }}\lib\raylib.lib
  111. msbuild.exe raylib.sln /target:raylib /property:Configuration=Release.DLL /property:Platform=${{ matrix.ARCH }}
  112. copy /Y .\build\raylib\bin\${{ matrix.VSARCHPATH }}\Release.DLL\raylib.dll .\..\..\build\${{ env.RELEASE_NAME }}\lib\raylib.dll
  113. copy /Y .\build\raylib\bin\${{ matrix.VSARCHPATH }}\Release.DLL\raylib.lib .\..\..\build\${{ env.RELEASE_NAME }}\lib\raylibdll.lib
  114. cd ../..
  115. shell: cmd
  116. if: matrix.compiler == 'msvc16'
  117. - name: Generate Artifacts
  118. run: |
  119. copy /Y .\src\raylib.h .\build\${{ env.RELEASE_NAME }}\include\raylib.h
  120. copy /Y .\src\raymath.h .\build\${{ env.RELEASE_NAME }}\include\raymath.h
  121. copy /Y .\src\rlgl.h .\build\${{ env.RELEASE_NAME }}\include\rlgl.h
  122. copy /Y .\CHANGELOG .\build\${{ env.RELEASE_NAME }}\CHANGELOG
  123. copy /Y .\README.md .\build\${{ env.RELEASE_NAME }}\README.md
  124. copy /Y .\LICENSE .\build\${{ env.RELEASE_NAME }}\LICENSE
  125. cd build
  126. 7z a ./${{ env.RELEASE_NAME }}.zip ./${{ env.RELEASE_NAME }}
  127. dir
  128. shell: cmd
  129. - name: Upload Artifacts
  130. uses: actions/upload-artifact@v4
  131. with:
  132. name: ${{ env.RELEASE_NAME }}.zip
  133. path: ./build/${{ env.RELEASE_NAME }}.zip
  134. - name: Upload Artifact to Release
  135. uses: softprops/action-gh-release@v1
  136. with:
  137. files: ./build/${{ env.RELEASE_NAME }}.zip
  138. env:
  139. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  140. if: github.event_name == 'release' && github.event.action == 'published'