Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/01-ci-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ jobs:
os: ubuntu-24.04
compiler: clang

build-and-test-linux-riscv64:
name: Build & Test (linux-riscv64)
needs: lint
uses: ./.github/workflows/03-macos-linux-build.yml
with:
platform: linux-riscv64
os: ubuntu-24.04-riscv

build-android:
name: Build & Test (android)
needs: lint
Expand Down
59 changes: 44 additions & 15 deletions .github/workflows/03-macos-linux-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ permissions:
contents: read

jobs:
# Build and test matrix (parallel execution)
build-and-test:
name: Build & Test (${{ inputs.platform }})
runs-on: ${{ inputs.os }}
Expand All @@ -32,7 +31,7 @@ jobs:
include:
- os: ${{ inputs.os }}
platform: ${{ inputs.platform }}
arch_flag: "" # Use appropriate architecture
arch_flag: ""

steps:
- name: Checkout code
Expand All @@ -41,12 +40,27 @@ jobs:
submodules: recursive

- name: Set up Python
if: ${{ !contains(inputs.os, 'riscv') }}
uses: actions/setup-python@v6
with:
python-version: '3.10'
cache: 'pip'
cache-dependency-path: 'pyproject.toml'

- name: Select Python on RISC-V
if: ${{ contains(inputs.os, 'riscv') }}
run: |
python3.10 --version
echo "PYTHON=python3.10" >> $GITHUB_ENV
shell: bash

- name: Select Python on non-RISC-V
if: ${{ !contains(inputs.os, 'riscv') }}
run: |
python --version
echo "PYTHON=python" >> $GITHUB_ENV
shell: bash

- name: Install Clang
if: inputs.compiler == 'clang' && runner.os == 'Linux'
run: |
Expand All @@ -61,7 +75,6 @@ jobs:

- name: Set up environment variables
run: |
# Set number of processors for parallel builds
if [[ "${{ matrix.platform }}" == "macos-arm64" ]]; then
NPROC=$(sysctl -n hw.ncpu 2>/dev/null || echo 2)
else
Expand All @@ -70,25 +83,41 @@ jobs:
echo "NPROC=$NPROC" >> $GITHUB_ENV
echo "Using $NPROC parallel jobs for builds"

# Set compiler when clang is requested
if [[ "${{ inputs.compiler }}" == "clang" ]]; then
echo "CC=clang" >> $GITHUB_ENV
echo "CXX=clang++" >> $GITHUB_ENV
fi

# Add Python user base bin to PATH for pip-installed CLI tools
echo "$(python -c 'import site; print(site.USER_BASE)')/bin" >> $GITHUB_PATH
echo "$($PYTHON -c 'import site; print(site.USER_BASE)')/bin" >> $GITHUB_PATH
shell: bash

- name: Get pip cache dir
if: ${{ contains(inputs.os, 'riscv') }}
id: pip-cache
run: |
echo "dir=$($PYTHON -m pip cache dir)" >> $GITHUB_OUTPUT
shell: bash

- name: Cache pip dependencies for RISC-V
if: ${{ contains(inputs.os, 'riscv') }}
uses: actions/cache@v4
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-riscv-pip-${{ hashFiles('**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-riscv-pip-

- name: Install dependencies
run: |
python -m pip install --upgrade pip \
pybind11==3.0 \
cmake==3.30.0 \
ninja==1.11.1 \
pytest \
scikit-build-core \
setuptools_scm
$PYTHON -m pip install --upgrade pip
DEPS="pybind11==3.0 cmake==3.30.0 ninja==1.11.1 pytest scikit-build-core setuptools_scm"

if [[ "${{ inputs.os }}" == *"riscv"* ]]; then
echo "RISC-V architecture detected. Adding build tools for compiling numpy from source..."
DEPS="$DEPS meson-python meson Cython"
fi

$PYTHON -m pip install $DEPS
shell: bash

- name: Build from source
Expand All @@ -97,7 +126,7 @@ jobs:

CMAKE_GENERATOR="Unix Makefiles" \
CMAKE_BUILD_PARALLEL_LEVEL="$NPROC" \
python -m pip install -v . \
$PYTHON -m pip install -v . \
--no-build-isolation \
--config-settings='cmake.define.BUILD_TOOLS="ON"' \
${{ matrix.arch_flag }}
Expand All @@ -112,7 +141,7 @@ jobs:
- name: Run Python Tests
run: |
cd "$GITHUB_WORKSPACE"
python -m pytest python/tests/
$PYTHON -m pytest python/tests/
shell: bash

- name: Run C++ Examples
Expand Down
8 changes: 5 additions & 3 deletions src/ailego/internal/cpu_features.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@

#if defined(_MSC_VER)
#include <intrin.h>
#elif !defined(__ARM_ARCH)
#endif

#if (defined(__x86_64__) || defined(__i386__)) && !defined(_MSC_VER)
#include <cpuid.h>
#endif

Expand All @@ -34,7 +36,7 @@ namespace internal {

CpuFeatures::CpuFlags CpuFeatures::flags_;

#if defined(_MSC_VER)
#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86))
CpuFeatures::CpuFlags::CpuFlags(void)
: L1_ECX(0), L1_EDX(0), L7_EBX(0), L7_ECX(0), L7_EDX(0) {
int l1[4] = {0, 0, 0, 0};
Expand All @@ -48,7 +50,7 @@ CpuFeatures::CpuFlags::CpuFlags(void)
L7_ECX = l7[2];
L7_EDX = l7[3];
}
#elif !defined(__ARM_ARCH)
#elif defined(__x86_64__) || defined(__i386__)
CpuFeatures::CpuFlags::CpuFlags(void)
: L1_ECX(0), L1_EDX(0), L7_EBX(0), L7_ECX(0), L7_EDX(0) {
uint32_t eax, ebx, ecx, edx;
Expand Down
Loading