anti-debug 0.3.0

An `is_debugger_present` detector for common platforms.
Documentation
name: Build

permissions:
  contents: read

on:
  push:
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: full

jobs:
  build-on-host:
    strategy:
      matrix:
        os:
          - name: linux-amd64
            runner: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - name: linux-arm64
            runner: ubuntu-24.04-arm
            target: aarch64-unknown-linux-gnu
          - name: windows-amd64
            runner: windows-latest
            target: x86_64-pc-windows-msvc
          - name: windows-arm64
            runner: windows-11-arm
            target: aarch64-pc-windows-msvc
          - name: macos-arm64
            runner: macos-latest
            target: aarch64-apple-darwin
          - name: macos-amd64
            runner: macos-15-intel
            target: x86_64-apple-darwin
      fail-fast: false
    name: Build on ${{ matrix.os.name }} target ${{ matrix.os.target }}
    runs-on: ${{ matrix.os.runner }}
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Check rust version
        run: rustup --version
      - name: Build debug
        run: cargo test --target ${{ matrix.os.target }}
      - name: Build release
        run: cargo test --target ${{ matrix.os.target }} --release

  build-linux-musl-amd64:
    name: Build on linux-amd64 target x86_64-unknown-linux-musl
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Check rust version
        run: rustup --version
      - name: Install packages
        run: |
          curl -LO https://github.com/cross-tools/musl-cross/releases/download/20250929/x86_64-unknown-linux-musl.tar.xz
          sudo mkdir -p /opt/x-tools
          sudo tar -xf x86_64-unknown-linux-musl.tar.xz -C /opt/x-tools
          echo CC_x86_64_unknown_linux_musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-gcc >> $GITHUB_ENV
          echo CXX_x86_64_unknown_linux_musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-g++ >> $GITHUB_ENV
          echo AR_x86_64_unknown_linux_musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-ar >> $GITHUB_ENV
          echo RANLIB_x86_64_unknown_linux_musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-ranlib >> $GITHUB_ENV
          echo STRIP_x86_64_unknown_linux_musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-strip >> $GITHUB_ENV
          echo CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=$CC_x86_64_unknown_linux_musl >> $GITHUB_ENV
          rustup target add x86_64-unknown-linux-musl
      - name: Build debug
        run: cargo build --target x86_64-unknown-linux-musl
      - name: Build release
        run: cargo build --target x86_64-unknown-linux-musl --release

  build-linux-musl-arm64:
    name: Build on linux-arm64 target aarch64-unknown-linux-musl
    runs-on: ubuntu-24.04-arm
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Check rust version
        run: rustup --version
      - name: Install packages
        run: |
          curl -LO https://github.com/cross-tools/musl-cross/releases/download/20250929/aarch64-unknown-linux-musl.tar.xz
          sudo mkdir -p /opt/x-tools
          sudo tar -xf aarch64-unknown-linux-musl.tar.xz -C /opt/x-tools
          echo CC_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-gcc >> $GITHUB_ENV
          echo CXX_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-g++ >> $GITHUB_ENV
          echo AR_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-ar >> $GITHUB_ENV
          echo RANLIB_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-ranlib >> $GITHUB_ENV
          echo STRIP_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-strip >> $GITHUB_ENV
          echo CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=$CC_aarch64_unknown_linux_musl >> $GITHUB_ENV
          rustup target add aarch64-unknown-linux-musl
      - name: Build debug
        run: cargo build --target aarch64-unknown-linux-musl
      - name: Build release
        run: cargo build --target aarch64-unknown-linux-musl --release

  build-android:
    name: Build on linux-amd64 target android 30
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Check rust version
        run: rustup --version
      - name: Build arm64
        run: |
          export CC_aarch64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang
          export CXX_aarch64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang++
          export AR_aarch64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
          export RANLIB_aarch64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
          export STRIP_aarch64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
          export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$CC_aarch64_linux_android
          export CLANG_PATH=$CC_aarch64_linux_android
          rustup target add aarch64-linux-android
          cargo build --target aarch64-linux-android
          cargo build --target aarch64-linux-android --release
      - name: Build arm32
        run: |
          export CC_armv7_linux_androideabi=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7-linux-androideabi30-clang
          export CXX_armv7_linux_androideabi=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7-linux-androideabi30-clang++
          export AR_armv7_linux_androideabi=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
          export RANLIB_armv7_linux_androideabi=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
          export STRIP_armv7_linux_androideabi=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
          export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=$CC_armv7_linux_androideabi
          export CLANG_PATH=$CC_armv7_linux_androideabi
          rustup target add armv7-linux-androideabi
          cargo build --target armv7-linux-androideabi
          cargo build --target armv7-linux-androideabi --release
      - name: Build amd64
        run: |
          export CC_x86_64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android30-clang
          export CXX_x86_64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android30-clang++
          export AR_x86_64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
          export RANLIB_x86_64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
          export STRIP_x86_64_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
          export CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=$CC_x86_64_linux_android
          export CLANG_PATH=$CC_x86_64_linux_android
          rustup target add x86_64-linux-android
          cargo build --target x86_64-linux-android
          cargo build --target x86_64-linux-android --release
      - name: Build amd32
        run: |
          export CC_i686_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android30-clang
          export CXX_i686_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android30-clang++
          export AR_i686_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
          export RANLIB_i686_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
          export STRIP_i686_linux_android=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
          export CARGO_TARGET_I686_LINUX_ANDROID_LINKER=$CC_i686_linux_android
          export CLANG_PATH=$CC_i686_linux_android
          rustup target add i686-linux-android
          cargo build --target i686-linux-android
          cargo build --target i686-linux-android --release