Skip to content

Commit 162225b

Browse files
Fix macOS shared library
1 parent 2be231f commit 162225b

2 files changed

Lines changed: 16 additions & 20 deletions

File tree

.github/workflows/pytest-coverage.yml

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,20 @@ 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
5751
echo "MACOSX_DEPLOYMENT_TARGET=${{ env.MACOSX_DEPLOYMENT_TARGET }}"
5852

setup.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,10 @@ def build_shared_lib(self, lib_name, build_info):
400400
lib_file = f"{get_lib_prefix()}{lib_name}{get_lib_suffix('shared')}"
401401

402402
if platform_system == 'Darwin':
403-
build_info['extra_link_args'].append(f"-Wl,-install_name,@loader_path/{lib_file}")
404-
self.compiler.linker_so = ['-dynamiclib' if val=='-bundle' else val for val in self.compiler.linker_so]
403+
build_info['extra_link_args'].extend([
404+
"-dynamiclib",
405+
f"-Wl,-install_name,@loader_path/{lib_file}"
406+
])
405407
self.compiler.link_shared_object(
406408
objects,
407409
lib_file,

0 commit comments

Comments
 (0)