Browse Source

BLD: Add support for Darwin system

pull/4885/head
Mateusz Sokół 1 year ago
parent
commit
38090aa779
7 changed files with 49 additions and 23 deletions
  1. +21
    -4
      .github/workflows/meson_linux_darwin.yml
  2. +2
    -2
      driver/level2/meson.build
  3. +2
    -2
      driver/level3/meson.build
  4. +6
    -6
      driver/others/meson.build
  5. +6
    -6
      interface/meson.build
  6. +2
    -2
      kernel/meson.build
  7. +10
    -1
      meson.build

.github/workflows/meson_linux.yml → .github/workflows/meson_linux_darwin.yml View File

@@ -1,6 +1,5 @@
name: meson build name: meson build


#on: [push, pull_request]
on: on:
push: push:
branches: branches:
@@ -21,11 +20,12 @@ permissions:
jobs: jobs:
build: build:
if: "github.repository == 'HaoZeke/OpenBLAS'" if: "github.repository == 'HaoZeke/OpenBLAS'"
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}


strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-latest, macos-13]
build: [meson] build: [meson]
fortran: [gfortran] fortran: [gfortran]
openmp: [0] openmp: [0]
@@ -37,7 +37,14 @@ jobs:


- name: Print system information - name: Print system information
run: | run: |
cat /proc/cpuinfo
if [ "$RUNNER_OS" == "Linux" ]; then
cat /proc/cpuinfo
elif [ "$RUNNER_OS" == "macOS" ]; then
sysctl -a | grep machdep.cpu
else
echo "::error::$RUNNER_OS not supported"
exit 1
fi
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
@@ -46,7 +53,17 @@ jobs:


- name: Install dependencies - name: Install dependencies
run: | run: |
sudo apt-get install -y gfortran libtinfo5
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get install -y gfortran libtinfo5
elif [ "$RUNNER_OS" == "macOS" ]; then
# It looks like "gfortran" isn't working correctly unless "gcc" is re-installed.
brew reinstall gcc
brew install coreutils
brew install llvm
else
echo "::error::$RUNNER_OS not supported"
exit 1
fi
- name: Install packages - name: Install packages
run: | run: |
python -m pip install meson ninja python -m pip install meson ninja

+ 2
- 2
driver/level2/meson.build View File

@@ -513,8 +513,8 @@ foreach _kop : driver_kops


# Add standard flags for naming conventions # Add standard flags for naming conventions
_ext_cargs += [ _ext_cargs += [
f'-DASMNAME=@sym_name@',
f'-DASMFNAME=@sym_underscored@',
f'-DASMNAME=@asm_name_prefix@@sym_name@',
f'-DASMFNAME=@asm_name_prefix@@sym_underscored@',
f'-DNAME=@sym_underscored@', f'-DNAME=@sym_underscored@',
f'-DCNAME=@sym_name@', f'-DCNAME=@sym_name@',
f'-DCHAR_NAME="@sym_underscored@"', f'-DCHAR_NAME="@sym_underscored@"',


+ 2
- 2
driver/level3/meson.build View File

@@ -438,8 +438,8 @@ foreach _kop : driver_kops


# Add standard flags for naming conventions # Add standard flags for naming conventions
_ext_cargs += [ _ext_cargs += [
f'-DASMNAME=@sym_name@',
f'-DASMFNAME=@sym_underscored@',
f'-DASMNAME=@asm_name_prefix@@sym_name@',
f'-DASMFNAME=@asm_name_prefix@@sym_underscored@',
f'-DNAME=@sym_underscored@', f'-DNAME=@sym_underscored@',
f'-DCNAME=@sym_name@', f'-DCNAME=@sym_name@',
f'-DCHAR_NAME="@sym_underscored@"', f'-DCHAR_NAME="@sym_underscored@"',


+ 6
- 6
driver/others/meson.build View File

@@ -52,12 +52,12 @@ foreach op : others_ops


# Add standard flags for naming conventions # Add standard flags for naming conventions
c_args += [ c_args += [
'-DASMNAME=@0@'.format(sym_name),
'-DASMFNAME=@0@_'.format(sym_name),
'-DNAME=@0@_'.format(sym_name),
'-DCNAME=@0@'.format(sym_name),
'-DCHAR_NAME="@0@_"'.format(sym_name),
'-DCHAR_CNAME="@0@"'.format(sym_name)
f'-DASMNAME=@asm_name_prefix@@sym_name@',
f'-DASMFNAME=@asm_name_prefix@@sym_name@_',
f'-DNAME=@sym_name@_',
f'-DCNAME=@sym_name@',
f'-DCHAR_NAME="@sym_name@_"',
f'-DCHAR_CNAME="@sym_name@"',
] ]


# Append the current configuration # Append the current configuration


+ 6
- 6
interface/meson.build View File

@@ -626,12 +626,12 @@ foreach conf : _blas_roots
sources: [conf['fname'], config_h], sources: [conf['fname'], config_h],
include_directories: _inc, include_directories: _inc,
c_args: compiler_args + [ c_args: compiler_args + [
f'-DASMNAME=@sym_name@',
f'-DASMFNAME=@sym_underscored@',
f'-DASMNAME=@asm_name_prefix@@sym_name@',
f'-DASMFNAME=@asm_name_prefix@@sym_underscored@',
f'-DNAME=@sym_underscored@', f'-DNAME=@sym_underscored@',
f'-DCNAME=@sym_name@', f'-DCNAME=@sym_name@',
f'-DCHAR_NAME="@sym_underscored@"', f'-DCHAR_NAME="@sym_underscored@"',
f'-DCHAR_CNAME="@sym_name@"'
f'-DCHAR_CNAME="@sym_name@"',
] ]
) )
_interface_libs += lib _interface_libs += lib
@@ -649,12 +649,12 @@ foreach conf : _blas_roots
include_directories: _inc, include_directories: _inc,
c_args: compiler_args + [ c_args: compiler_args + [
'-DCBLAS', '-DCBLAS',
f'-DASMNAME=@cblas_sym_name@',
f'-DASMFNAME=@cblas_sym_underscored@',
f'-DASMNAME=@asm_name_prefix@@cblas_sym_name@',
f'-DASMFNAME=@asm_name_prefix@@cblas_sym_underscored@',
f'-DNAME=@cblas_sym_underscored@', f'-DNAME=@cblas_sym_underscored@',
f'-DCNAME=@cblas_sym_name@', f'-DCNAME=@cblas_sym_name@',
f'-DCHAR_NAME="@cblas_sym_underscored@"', f'-DCHAR_NAME="@cblas_sym_underscored@"',
f'-DCHAR_CNAME="@cblas_sym_name@"'
f'-DCHAR_CNAME="@cblas_sym_name@"',
] ]
) )
_interface_libs += cblas_lib _interface_libs += cblas_lib


+ 2
- 2
kernel/meson.build View File

@@ -1486,8 +1486,8 @@ foreach _kop : base_kops
sym_name = base.replace('?', mode) + ext sym_name = base.replace('?', mode) + ext
sym_underscored = f'@sym_name@_' sym_underscored = f'@sym_name@_'
_ext_cargs += [ _ext_cargs += [
f'-DASMNAME=@sym_name@',
f'-DASMFNAME=@sym_underscored@',
f'-DASMNAME=@asm_name_prefix@@sym_name@',
f'-DASMFNAME=@asm_name_prefix@@sym_underscored@',
f'-DNAME=@sym_underscored@', f'-DNAME=@sym_underscored@',
f'-DCNAME=@sym_name@', f'-DCNAME=@sym_name@',
f'-DCHAR_NAME="@sym_underscored@"', f'-DCHAR_NAME="@sym_underscored@"',


+ 10
- 1
meson.build View File

@@ -67,12 +67,21 @@ max_stack_alloc = get_option('max_stack_alloc')
quad_prec = get_option('quad_precision') quad_prec = get_option('quad_precision')
exprecision = get_option('exprecision') exprecision = get_option('exprecision')


if host_machine.system() == 'linux'
is_linux = host_machine.system() == 'linux'
is_darwin = host_machine.system() == 'darwin'

if is_linux or is_darwin
no_affinity = true no_affinity = true
else else
no_affinity = false no_affinity = false
endif endif


if cc_id == 'clang'
asm_name_prefix = '_'
else
asm_name_prefix = ''
endif

_check_prefix = [] _check_prefix = []
conf_data = configuration_data() conf_data = configuration_data()
is_win = host_machine.system() == 'windows' or host_machine.system() == 'cygwin' is_win = host_machine.system() == 'windows' or host_machine.system() == 'cygwin'


Loading…
Cancel
Save