@@ -33,28 +33,21 @@ jobs:
3333 with :
3434 submodules : recursive
3535
36- - name : (MacOs only) Install GNU GCC.
36+ - name : (MacOs only) Install build dependencies
3737 if : matrix.os == 'macos-latest'
3838 run : |
39- brew install gcc libomp
40-
41- - name : (MacOs only) Set CC/CXX environment variables to GNU GCC
42- if : matrix.os == 'macos-latest'
43- run : |
44-
45- # Check GCC installation path. Brew installs GCC in /opt/homebrew/bin on Apple Silicon and /usr/local/bin on Intel.
46- if [[ $(uname -m) = "arm64" ]]; then BREW_GCC_PATH="/opt/homebrew/bin"; else BREW_GCC_PATH="/usr/local/bin"; fi
47- echo "GCC installed at $BREW_GCC_PATH"
48-
49- # Set CC/CXX environment variables to GNU GCC
50- echo "CC=$BREW_GCC_PATH/$(ls $BREW_GCC_PATH | grep ^gcc-[0-9] | sort -V -r | head -n 1)" >> $GITHUB_ENV
51- echo "CXX=$BREW_GCC_PATH/$(ls $BREW_GCC_PATH | grep ^g++-[0-9] | sort -V -r | head -n 1)" >> $GITHUB_ENV
52- echo "CC=${{ env.CC }}"
53- echo "CXX=${{ env.CXX }}"
54-
55- # Set MACOSX_DEPLOYMENT_TARGET to avoid version mismatch warnings
39+ # Install Homebrew LLVM toolchain with OpenMP support
40+ brew install llvm libomp
41+ if [[ $(uname -m) == "arm64" ]]; then BREW_PREFIX="/opt/homebrew"; else BREW_PREFIX="/usr/local"; fi
42+ echo "PATH=$BREW_PREFIX/opt/llvm/bin:$PATH" >> $GITHUB_ENV
43+ echo "CC=$BREW_PREFIX/opt/llvm/bin/clang" >> $GITHUB_ENV
44+ echo "CXX=$BREW_PREFIX/opt/llvm/bin/clang++" >> $GITHUB_ENV
45+ echo "LDFLAGS=-L$BREW_PREFIX/opt/libomp/lib" >> $GITHUB_ENV
46+ echo "CPPFLAGS=-I$BREW_PREFIX/opt/libomp/include" >> $GITHUB_ENV
47+ # Build only for the host architecture to avoid missing x86_64 libraries
48+ echo "ARCHFLAGS=-arch $(uname -m)" >> $GITHUB_ENV
49+ echo "CMAKE_OSX_ARCHITECTURES=$(uname -m)" >> $GITHUB_ENV
5650 echo "MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)" >> $GITHUB_ENV
57- echo "MACOSX_DEPLOYMENT_TARGET=${{ env.MACOSX_DEPLOYMENT_TARGET }}"
5851
5952 - name : Set up Python ${{ matrix.python-version }}
6053 uses : actions/setup-python@v4
@@ -70,13 +63,30 @@ jobs:
7063 run : python -m pip install --upgrade pip
7164
7265 - name : Install package verbosely
66+ env :
67+ CC : ${{ env.CC }}
68+ CXX : ${{ env.CXX }}
69+ LDFLAGS : ${{ env.LDFLAGS }}
70+ CPPFLAGS : ${{ env.CPPFLAGS }}
71+ PATH : ${{ env.PATH }}
72+ ARCHFLAGS : ${{ env.ARCHFLAGS }}
73+ CMAKE_OSX_ARCHITECTURES : ${{ env.CMAKE_OSX_ARCHITECTURES }}
74+ MACOSX_DEPLOYMENT_TARGET : ${{ env.MACOSX_DEPLOYMENT_TARGET }}
7375 run : |
74-
75- touch .cov # Create a .cov file to trigger Cython compilation with coverage support
76+ touch .cov # Create a .cov file to trigger Cython compilation with coverage support
7677 ls
7778 python -m pip install -v -v .
7879
7980 - name : Test with pytest
81+ env :
82+ CC : ${{ env.CC }}
83+ CXX : ${{ env.CXX }}
84+ LDFLAGS : ${{ env.LDFLAGS }}
85+ CPPFLAGS : ${{ env.CPPFLAGS }}
86+ PATH : ${{ env.PATH }}
87+ ARCHFLAGS : ${{ env.ARCHFLAGS }}
88+ CMAKE_OSX_ARCHITECTURES : ${{ env.CMAKE_OSX_ARCHITECTURES }}
89+ MACOSX_DEPLOYMENT_TARGET : ${{ env.MACOSX_DEPLOYMENT_TARGET }}
8090 run : |
8191 python -m pip install cython==3.0.2 pytest-cov
8292 pytest --cov .
0 commit comments