aarch64.yml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. name: AArch64
  2. on: [ push, pull_request ]
  3. env:
  4. BUILD_TYPE: Release
  5. jobs:
  6. build_linux:
  7. strategy:
  8. matrix:
  9. platform: [ linux, android ]
  10. fail-fast: false
  11. runs-on: ubuntu-latest
  12. steps:
  13. - name: Install build dependencies
  14. run: >
  15. sudo apt-get update &&
  16. sudo apt-get install
  17. gcc-10-aarch64-linux-gnu
  18. g++-10-aarch64-linux-gnu
  19. ninja-build
  20. qemu-user
  21. - name: Checkout dynarmic repo
  22. uses: actions/checkout@v2
  23. - name: Ccache
  24. if: matrix.platform == 'linux'
  25. uses: hendrikmuhs/ccache-action@v1.2
  26. - name: Checkout ext-boost repo
  27. uses: actions/checkout@v2
  28. with:
  29. repository: MerryMage/ext-boost
  30. path: externals/ext-boost
  31. - name: Configure CMake for AArch64 (Linux)
  32. if: matrix.platform == 'linux'
  33. env:
  34. CC: aarch64-linux-gnu-gcc-10
  35. CXX: aarch64-linux-gnu-g++-10
  36. run: >
  37. cmake
  38. -B ${{github.workspace}}/build-arm64
  39. -DBOOST_INCLUDEDIR=${{github.workspace}}/externals/ext-boost
  40. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
  41. -DDYNARMIC_TESTS_USE_UNICORN=0
  42. -DDYNARMIC_USE_LLVM=0
  43. -G Ninja
  44. - name: Configure CMake for AArch64 (Android)
  45. if: matrix.platform == 'android'
  46. run: >
  47. cmake
  48. -B ${{github.workspace}}/build-arm64
  49. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake
  50. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
  51. -DANDROID_ABI=arm64-v8a
  52. -DANDROID_PLATFORM=29
  53. -DBoost_INCLUDE_DIR=${{github.workspace}}/externals/ext-boost
  54. -DDYNARMIC_TESTS_USE_UNICORN=0
  55. -DDYNARMIC_USE_LLVM=0
  56. -G Ninja
  57. - name: Build AArch64
  58. working-directory: ${{github.workspace}}/build-arm64
  59. run: cmake --build . --config Release
  60. - name: Configure CMake for x86_64
  61. if: matrix.platform == 'linux'
  62. env:
  63. CC: gcc-10
  64. CXX: g++-10
  65. run: >
  66. cmake
  67. -B ${{github.workspace}}/build-x64
  68. -DBOOST_INCLUDEDIR=${{github.workspace}}/externals/ext-boost
  69. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
  70. -DCMAKE_C_COMPILER_LAUNCHER=ccache
  71. -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
  72. -DDYNARMIC_TESTS_USE_UNICORN=0
  73. -DDYNARMIC_USE_LLVM=0
  74. -G Ninja
  75. - name: Build x86_64
  76. if: matrix.platform == 'linux'
  77. working-directory: ${{github.workspace}}/build-x64
  78. run: cmake --build . --config Release
  79. - name: Basic tests
  80. if: matrix.platform == 'linux'
  81. working-directory: ${{github.workspace}}
  82. run: qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_tests -d yes
  83. - name: Test against x86_64 implementation (A32, thumb)
  84. if: matrix.platform == 'linux'
  85. working-directory: ${{github.workspace}}
  86. run: |
  87. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator thumb 42 1 100000) <(./build-x64/tests/dynarmic_test_generator thumb 42 1 100000)
  88. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator thumb 42 10 10000) <(./build-x64/tests/dynarmic_test_generator thumb 42 10 10000)
  89. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator thumb 42 100 1000) <(./build-x64/tests/dynarmic_test_generator thumb 42 100 1000)
  90. - name: Test against x86_64 implementation (A32, arm)
  91. if: matrix.platform == 'linux'
  92. working-directory: ${{github.workspace}}
  93. run: |
  94. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator arm 42 1 100000) <(./build-x64/tests/dynarmic_test_generator arm 42 1 100000)
  95. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator arm 42 10 10000) <(./build-x64/tests/dynarmic_test_generator arm 42 10 10000)
  96. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator arm 42 100 1000) <(./build-x64/tests/dynarmic_test_generator arm 42 100 1000)
  97. - name: Test against x86_64 implementation (A64)
  98. if: matrix.platform == 'linux'
  99. working-directory: ${{github.workspace}}
  100. run: |
  101. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator a64 42 1 100000) <(./build-x64/tests/dynarmic_test_generator a64 42 1 100000)
  102. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator a64 42 10 10000) <(./build-x64/tests/dynarmic_test_generator a64 42 10 10000)
  103. diff <(qemu-aarch64 -L /usr/aarch64-linux-gnu ./build-arm64/tests/dynarmic_test_generator a64 42 100 1000) <(./build-x64/tests/dynarmic_test_generator a64 42 100 1000)
  104. build_windows:
  105. strategy:
  106. fail-fast: false
  107. runs-on: windows-latest
  108. steps:
  109. - name: Checkout dynarmic repo
  110. uses: actions/checkout@v2
  111. - name: Checkout ext-boost repo
  112. uses: actions/checkout@v2
  113. with:
  114. repository: MerryMage/ext-boost
  115. path: externals/ext-boost
  116. - name: Setup msvc-arm64 environment
  117. uses: ilammy/msvc-dev-cmd@v1
  118. with:
  119. arch: amd64_arm64
  120. - name: Configure CMake for AArch64 (Windows)
  121. run: >
  122. cmake
  123. -B ${{github.workspace}}/build-arm64
  124. -DBOOST_INCLUDEDIR=${{github.workspace}}/externals/ext-boost
  125. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
  126. -DDYNARMIC_WARNINGS_AS_ERRORS=0
  127. -DDYNARMIC_TESTS_USE_UNICORN=0
  128. -DDYNARMIC_USE_LLVM=0
  129. -G Ninja
  130. - name: Build AArch64
  131. working-directory: ${{github.workspace}}/build-arm64
  132. run: cmake --build . --config Release