build_binaries.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. name: Build Binaries
  2. permissions:
  3. contents: read
  4. on:
  5. push:
  6. branches:
  7. - main
  8. workflow_dispatch:
  9. jobs:
  10. linux-x86-64:
  11. name: Linux x86-64
  12. runs-on: solang-ubuntu-latest
  13. container: ghcr.io/hyperledger/solang-llvm:ci-7
  14. steps:
  15. - uses: actions/checkout@v4
  16. with:
  17. submodules: recursive
  18. - uses: dtolnay/rust-toolchain@1.88.0
  19. - name: Build
  20. run: cargo build --verbose --release
  21. - name: Test
  22. run: cargo test --workspace --verbose --release
  23. - name: Package
  24. run: |
  25. mkdir -p dist
  26. cp target/release/solang dist/solang-linux-x86-64
  27. - uses: actions/upload-artifact@v4
  28. with:
  29. name: solang-linux-x86-64
  30. path: dist/solang-linux-x86-64
  31. linux-arm64:
  32. name: Linux arm64
  33. runs-on: solang-arm
  34. if: ${{ github.repository_owner == 'hyperledger-solang' }}
  35. steps:
  36. - uses: actions/checkout@v4
  37. with:
  38. submodules: recursive
  39. - run: |
  40. sudo apt-get update
  41. sudo apt-get install -y gcc g++ make
  42. - uses: dtolnay/rust-toolchain@1.88.0
  43. - run: curl -sSL --output llvm16.0-linux-arm64.tar.xz https://github.com/hyperledger-solang/solang-llvm/releases/download/llvm16-0/llvm16.0-linux-arm64.tar.xz
  44. - run: tar Jxf llvm16.0-linux-arm64.tar.xz
  45. - run: echo "$(pwd)/llvm16.0/bin" >> $GITHUB_PATH
  46. - run: cargo build --verbose --release
  47. - run: cargo test --workspace --verbose --release
  48. - run: |
  49. mkdir -p dist
  50. cp target/release/solang dist/solang-linux-arm64
  51. - uses: actions/upload-artifact@v4
  52. with:
  53. name: solang-linux-arm64
  54. path: dist/solang-linux-arm64
  55. windows:
  56. name: Windows
  57. runs-on: windows-latest
  58. steps:
  59. - uses: actions/checkout@v4
  60. with:
  61. submodules: recursive
  62. - run: curl -sSL -o c:\llvm.zip https://github.com/hyperledger-solang/solang-llvm/releases/download/llvm16-0/llvm16.0-win.zip
  63. - run: unzip c:\llvm.zip -d c:/
  64. - run: echo "c:\llvm16.0\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
  65. - uses: dtolnay/rust-toolchain@1.88.0
  66. with:
  67. components: clippy
  68. - run: cargo build --release --verbose
  69. - run: cargo test --workspace --release --verbose
  70. - run: |
  71. mkdir dist
  72. copy target\release\solang.exe dist\solang.exe
  73. - uses: actions/upload-artifact@v4
  74. with:
  75. name: solang-windows
  76. path: dist/solang.exe
  77. mac-arm:
  78. name: macOS arm64
  79. runs-on: macos-13-xlarge
  80. steps:
  81. - uses: actions/checkout@v4
  82. with:
  83. submodules: recursive
  84. - uses: dtolnay/rust-toolchain@1.88.0
  85. - run: curl -sSL --output llvm16.0-mac-arm.tar.xz https://github.com/hyperledger-solang/solang-llvm/releases/download/llvm16-0/llvm16.0-mac-arm.tar.xz
  86. - run: tar Jxf llvm16.0-mac-arm.tar.xz
  87. - run: echo "$(pwd)/llvm16.0/bin" >> $GITHUB_PATH
  88. - run: cargo build --release --verbose
  89. - run: cargo test --workspace --release --verbose
  90. - run: |
  91. mkdir -p dist
  92. cp target/release/solang dist/solang-mac-arm
  93. - uses: actions/upload-artifact@v4
  94. with:
  95. name: solang-mac-arm
  96. path: dist/solang-mac-arm
  97. mac-intel:
  98. name: macOS x86_64
  99. runs-on: macos-13
  100. steps:
  101. - uses: actions/checkout@v4
  102. with:
  103. submodules: recursive
  104. - uses: dtolnay/rust-toolchain@1.88.0
  105. - run: wget -q -O llvm16.0-mac-intel.tar.xz https://github.com/hyperledger-solang/solang-llvm/releases/download/llvm16-0/llvm16.0-mac-intel.tar.xz
  106. - run: tar Jxf llvm16.0-mac-intel.tar.xz
  107. - run: echo "$(pwd)/llvm16.0/bin" >> $GITHUB_PATH
  108. - run: cargo build --release --verbose
  109. - run: cargo test --workspace --release --verbose
  110. - run: |
  111. mkdir -p dist
  112. cp target/release/solang dist/solang-mac-intel
  113. - uses: actions/upload-artifact@v4
  114. with:
  115. name: solang-mac-intel
  116. path: dist/solang-mac-intel
  117. mac-universal:
  118. name: macOS Universal
  119. runs-on: macos-latest
  120. needs: [mac-arm, mac-intel]
  121. steps:
  122. - uses: actions/download-artifact@v4
  123. with:
  124. path: ./mac
  125. - run: |
  126. ls -R mac
  127. lipo -create \
  128. -output solang-mac \
  129. mac/solang-mac-intel/solang-mac-intel \
  130. mac/solang-mac-arm/solang-mac-arm
  131. - uses: actions/upload-artifact@v4
  132. with:
  133. name: solang-mac-universal
  134. path: solang-mac