build_wamr_lldb.yml 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. name: build wamr lldb
  4. on:
  5. workflow_call:
  6. inputs:
  7. arch:
  8. description: arch of the release
  9. type: string
  10. required: false
  11. default: x86_64
  12. runner:
  13. description: OS of compilation
  14. type: string
  15. required: true
  16. upload_url:
  17. description: upload binary assets to the URL of release
  18. type: string
  19. required: true
  20. ver_num:
  21. description: a semantic version number
  22. type: string
  23. required: true
  24. jobs:
  25. try_reuse:
  26. uses: ./.github/workflows/reuse_latest_release_binaries.yml
  27. with:
  28. binary_name_stem: "wamr-lldb-${{ inputs.ver_num }}-${{ inputs.arch }}-${{ inputs.runner }}"
  29. last_commit: "ea63ba4bd010c2285623ad4acc0262a4d63bcfea"
  30. the_path: "./build-scripts/lldb-wasm.patch"
  31. upload_url: ${{ inputs.upload_url }}
  32. build:
  33. needs: try_reuse
  34. if: needs.try_reuse.outputs.result != 'hit'
  35. runs-on: ${{ inputs.runner }}
  36. steps:
  37. - uses: actions/checkout@v3
  38. - name: Cache build
  39. id: lldb_build_cache
  40. uses: actions/cache@v3
  41. with:
  42. path: |
  43. ./core/deps/llvm-project/build/bin
  44. ./core/deps/llvm-project/build/include
  45. ./core/deps/llvm-project/build/lib
  46. ./core/deps/llvm-project/build/libexec
  47. ./core/deps/llvm-project/build/share
  48. ./core/deps/llvm-project/lldb/tools/
  49. ./core/deps/llvm-project/wamr-lldb/
  50. key: ${{inputs.arch}}-${{ inputs.runner }}-lldb_build
  51. - name: setup xcode macos
  52. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'macos')
  53. uses: maxim-lobanov/setup-xcode@v1
  54. with:
  55. xcode-version: latest-stable
  56. # Remove xCode command line tools, to prevent duplicate symbol compilation failures
  57. - name: install utils macos
  58. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'macos')
  59. run: |
  60. brew install swig cmake ninja libedit
  61. sudo rm -rf /Library/Developer/CommandLineTools
  62. - name: intsall utils ubuntu
  63. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'ubuntu')
  64. run: sudo apt update && sudo apt-get install -y lld ninja-build
  65. # `git clone` takes ~7m
  66. - name: download llvm
  67. if: steps.lldb_build_cache.outputs.cache-hit != 'true'
  68. run: |
  69. wget https://github.com/llvm/llvm-project/archive/1f27fe6128769f00197925c3b8f6abb9d0e5cd2e.zip
  70. unzip -q 1f27fe6128769f00197925c3b8f6abb9d0e5cd2e.zip
  71. mv llvm-project-1f27fe6128769f00197925c3b8f6abb9d0e5cd2e llvm-project
  72. working-directory: core/deps/
  73. - name: apply wamr patch
  74. if: steps.lldb_build_cache.outputs.cache-hit != 'true'
  75. run: |
  76. git init
  77. git config user.email "action@github.com"
  78. git config user.name "github action"
  79. git apply ../../../build-scripts/lldb-wasm.patch
  80. working-directory: core/deps/llvm-project
  81. - name: build lldb ubuntu
  82. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'ubuntu')
  83. run: |
  84. echo "start to build lldb..."
  85. mkdir -p wamr-lldb
  86. cmake -S ./llvm -B build \
  87. -G Ninja \
  88. -DCMAKE_INSTALL_PREFIX=../wamr-lldb \
  89. -DCMAKE_BUILD_TYPE:STRING="Release" \
  90. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
  91. -DLLVM_ENABLE_PROJECTS="clang;lldb" \
  92. -DLLVM_TARGETS_TO_BUILD:STRING="X86;WebAssembly" \
  93. -DLLVM_BUILD_BENCHMARKS:BOOL=OFF \
  94. -DLLVM_BUILD_DOCS:BOOL=OFF \
  95. -DLLVM_BUILD_EXAMPLES:BOOL=OFF \
  96. -DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \
  97. -DLLVM_BUILD_TESTS:BOOL=OFF \
  98. -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
  99. -DLLVM_INCLUDE_DOCS:BOOL=OFF \
  100. -DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \
  101. -DLLVM_INCLUDE_TESTS:BOOL=OFF \
  102. -DLLVM_ENABLE_BINDINGS:BOOL=OFF \
  103. -DLLVM_ENABLE_LIBXML2:BOOL=ON \
  104. -DLLDB_ENABLE_PYTHON:BOOL=OFF \
  105. -DLLVM_ENABLE_LLD:BOOL=ON
  106. cmake --build build --target lldb install --parallel $(nproc)
  107. working-directory: core/deps/llvm-project
  108. - name: build lldb macos
  109. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'macos')
  110. run: |
  111. echo "start to build lldb..."
  112. mkdir -p wamr-lldb
  113. cmake -S ./llvm -B build \
  114. -G Ninja \
  115. -DCMAKE_INSTALL_PREFIX=../wamr-lldb \
  116. -DCMAKE_BUILD_TYPE:STRING="Release" \
  117. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
  118. -DLLVM_ENABLE_PROJECTS="clang;lldb" \
  119. -DLLVM_TARGETS_TO_BUILD:STRING="X86;WebAssembly" \
  120. -DLLVM_BUILD_BENCHMARKS:BOOL=OFF \
  121. -DLLVM_BUILD_DOCS:BOOL=OFF \
  122. -DLLVM_BUILD_EXAMPLES:BOOL=OFF \
  123. -DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \
  124. -DLLVM_BUILD_TESTS:BOOL=OFF \
  125. -DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
  126. -DLLVM_INCLUDE_DOCS:BOOL=OFF \
  127. -DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \
  128. -DLLVM_INCLUDE_TESTS:BOOL=OFF \
  129. -DLLVM_BUILD_BENCHMARKS:BOOL=OFF \
  130. -DLLVM_BUILD_DOCS:BOOL=OFF \
  131. -DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \
  132. -DLLVM_ENABLE_BINDINGS:BOOL=OFF \
  133. -DLLVM_ENABLE_LIBXML2:BOOL=ON \
  134. -DLLDB_ENABLE_PYTHON:BOOL=OFF \
  135. -DLLDB_BUILD_FRAMEWORK:BOOL=OFF
  136. cmake --build build --target lldb install --parallel $(nproc)
  137. working-directory: core/deps/llvm-project
  138. - name: pack a distribution
  139. if: steps.lldb_build_cache.outputs.cache-hit != 'true'
  140. run: |
  141. mkdir -p wamr-lldb/bin
  142. mkdir -p wamr-lldb/lib
  143. cp build/bin/lldb* wamr-lldb/bin
  144. cp lldb/tools/lldb-vscode/package.json wamr-lldb
  145. cp -r lldb/tools/lldb-vscode/syntaxes/ wamr-lldb
  146. working-directory: core/deps/llvm-project
  147. - name: pack ubuntu specific libraries
  148. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'ubuntu')
  149. run: |
  150. cp build/lib/liblldb*.so wamr-lldb/lib
  151. cp build/lib/liblldb*.so.* wamr-lldb/lib
  152. working-directory: core/deps/llvm-project
  153. - name: pack macos specific libraries
  154. if: steps.lldb_build_cache.outputs.cache-hit != 'true' && contains(inputs.runner, 'macos')
  155. run: |
  156. cp build/lib/liblldb*.dylib wamr-lldb/lib
  157. working-directory: core/deps/llvm-project
  158. - name: compress the binary
  159. run: |
  160. tar czf wamr-lldb-${{ inputs.ver_num }}-${{ inputs.runner }}.tar.gz wamr-lldb
  161. zip -r wamr-lldb-${{ inputs.ver_num }}-${{ inputs.runner }}.zip wamr-lldb
  162. working-directory: core/deps/llvm-project
  163. - name: upload release tar.gz
  164. uses: actions/upload-release-asset@v1
  165. env:
  166. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  167. with:
  168. upload_url: ${{ inputs.upload_url }}
  169. asset_path: core/deps/llvm-project/wamr-lldb-${{ inputs.ver_num }}-${{ inputs.runner }}.tar.gz
  170. asset_name: wamr-lldb-${{ inputs.ver_num }}-${{ inputs.arch }}-${{ inputs.runner }}.tar.gz
  171. asset_content_type: application/x-gzip
  172. - name: upload release zip
  173. uses: actions/upload-release-asset@v1
  174. env:
  175. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  176. with:
  177. upload_url: ${{ inputs.upload_url }}
  178. asset_path: core/deps/llvm-project/wamr-lldb-${{ inputs.ver_num }}-${{ inputs.runner }}.zip
  179. asset_name: wamr-lldb-${{ inputs.ver_num }}-${{ inputs.arch }}-${{ inputs.runner }}.zip
  180. asset_content_type: application/zip