mingw.yml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. name: MinGW
  2. on:
  3. push:
  4. branches: ["master"]
  5. tags: ["4.*"]
  6. pull_request:
  7. branches: ["master"]
  8. concurrency:
  9. group: ${{ github.workflow }}-${{ github.ref }}
  10. cancel-in-progress: true
  11. jobs:
  12. build:
  13. name: build
  14. strategy:
  15. fail-fast: false
  16. matrix:
  17. os: ["windows"]
  18. # Customize the CMake build type here (`Release`, `Debug`, `RelWithDebInfo`, etc.)
  19. BUILD_TYPE: ["Release", "Debug"]
  20. BUILD_SHARED_LIBS: ["OFF"]
  21. defaults:
  22. run:
  23. shell: cmd
  24. runs-on: ${{ matrix.os }}-latest
  25. env:
  26. BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
  27. SOURCE_DIR: ${{ github.workspace }}\.cache\source
  28. TOOSL_DIR: ${{ github.workspace }}\.cache\tools
  29. INSTALL_DIR: ${{ github.workspace }}\.cache\install_mingw_2022_02_15
  30. steps:
  31. - uses: actions/checkout@v6
  32. - name: Install dependencies
  33. run: |
  34. C:\msys64\usr\bin\pacman.exe -S --noconfirm ^
  35. mingw-w64-x86_64-cmake ^
  36. mingw-w64-x86_64-make ^
  37. mingw-w64-x86_64-nsis ^
  38. mingw-w64-x86_64-gcc ^
  39. mingw-w64-x86_64-zlib ^
  40. mingw-w64-x86_64-openssl ^
  41. mingw-w64-x86_64-libevent ^
  42. mingw-w64-x86_64-sqlite3 ^
  43. mingw-w64-x86_64-hiredis ^
  44. mingw-w64-x86_64-postgresql ^
  45. mingw-w64-x86_64-libmicrohttpd ^
  46. git base-devel
  47. env:
  48. PATH: C:\msys64\usr\bin
  49. - name: Create directories
  50. run: |
  51. cmake -E make_directory ${{ env.SOURCE_DIR }}
  52. cmake -E make_directory ${{ env.TOOSL_DIR }}
  53. cmake -E make_directory ${{ env.INSTALL_DIR }}
  54. - name: Cache installed
  55. uses: actions/cache@v5
  56. id: cache-installed
  57. with:
  58. path: ${{ env.INSTALL_DIR }}
  59. key: coturn-cache-installed-mingw
  60. - name: Build Prometheus
  61. run: |
  62. cd ${{ env.SOURCE_DIR }}
  63. git clone https://github.com/digitalocean/prometheus-client-c.git
  64. cd prometheus-client-c/prom
  65. mkdir build
  66. cd build
  67. cmake .. -G"MinGW Makefiles" ^
  68. -DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
  69. -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
  70. -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }}
  71. cmake --build . --config ${{ matrix.BUILD_TYPE }}
  72. cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install
  73. env:
  74. MSYSTEM: MINGW64
  75. PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
  76. working-directory: ${{ env.SOURCE_DIR }}
  77. if: ${{ false }}
  78. - name: Build Coturn
  79. run: |
  80. cmake -E make_directory build
  81. cd build
  82. cmake .. -G"MinGW Makefiles" ^
  83. -DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
  84. -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
  85. -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build/install
  86. cmake --build . --config ${{ matrix.BUILD_TYPE }}
  87. cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install
  88. env:
  89. MSYSTEM: MINGW64
  90. PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
  91. Prometheus_ROOT: ${{ env.INSTALL_DIR }}
  92. working-directory: ${{ github.workspace }}
  93. - name: Package
  94. run: |
  95. copy /Y ${{ env.INSTALL_DIR }}\bin\*.dll install\bin
  96. copy /Y ${{ env.INSTALL_DIR }}\lib\*.dll install\bin
  97. copy /Y ${{ env.RUNVCPKG_VCPKG_ROOT }}\installed\${{ env.RUNVCPKG_VCPKG_TRIPLET_OUT }}\bin\*.dll install\bin
  98. 7z a coturn_windows_mingw.zip ${{ github.workspace }}\build\install\*
  99. cmake --build . --config ${{ matrix.BUILD_TYPE }} --target package
  100. env:
  101. MSYSTEM: MINGW64
  102. PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
  103. working-directory: ${{ github.workspace }}\build
  104. if: ${{ matrix.BUILD_TYPE == 'Release' }}
  105. - name: Update artifacts
  106. uses: actions/upload-artifact@v6
  107. with:
  108. name: coturn_mingw_${{ matrix.os }}
  109. path: |
  110. ${{ github.workspace }}\build\coturn_windows_mingw.zip
  111. ${{ github.workspace }}\build\coturn*.exe
  112. ${{ github.workspace }}\build\coturn*.md5
  113. if: ${{ matrix.BUILD_TYPE == 'Release' }}