diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 10e3a70217f49866857d14272f93e0a73b46a91a..fc0f8f3f2f581d1cfcded3c05982b5068604b111 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -37,7 +37,7 @@ jobs: - name: Install GCC for MacOS using Homebrew if: matrix.os == 'macos-latest' run: | - brew install gcc libomp llvm + brew install gcc libomp brew link gcc - name: Install dependencies diff --git a/setup.py b/setup.py index a01e1537b11e3cc859ee0b8a82aba5d02a44bd3e..56f6392872d05e5c3f8d551b5294f82f33eb1ca8 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,6 @@ import os import sys import glob -import platform from setuptools import Extension, setup, find_packages try: @@ -43,10 +42,12 @@ USE_OPENMP = True def extract_gcc_binaries(): """Try to find GCC on OSX for OpenMP support.""" patterns = [ + "/opt/local/bin/g++-mp-[0-9].[0-9]", + "/opt/local/bin/g++-mp-[0-9]", "/usr/local/bin/g++-[0-9].[0-9]", "/usr/local/bin/g++-[0-9]", ] - if "darwin" in platform.platform().lower(): + if sys.platform.startswith("darwin"): gcc_binaries = [] for pattern in patterns: gcc_binaries += glob.glob(pattern) @@ -80,20 +81,25 @@ else: "-ffast-math", ] - if "darwin" in platform.platform().lower(): + if sys.platform.startswith("darwin"): if gcc is not None: os.environ["CC"] = gcc os.environ["CXX"] = gcc - else: - USE_OPENMP = False - print( - "No GCC available. Install gcc from Homebrew " "using brew install gcc." + os.environ["CPPFLAGS"] = os.environ["CPPFLAGS"] + " -Xpreprocessor -fopenmp" + os.environ["CFLAGS"] = os.environ["CFLAGS"] + " -I/usr/local/opt/libomp/include" + os.environ["CXXFLAGS"] = ( + os.environ["CXXFLAGS"] + " -I/usr/local/opt/libomp/include" + ) + os.environ["LDFLAGS"] = ( + os.environ["LDFLAGS"] + + " -Wl,-rpath,/usr/local/opt/libomp/lib -L/usr/local/opt/libomp/lib -lomp" ) + else: + print("No GCC available. Install gcc from Homebrew " "using brew install gcc.") # required arguments for default gcc of OSX compile_args.extend(["-O2", "-stdlib=libc++", "-mmacosx-version-min=10.7"]) link_args.extend(["-O2", "-stdlib=libc++", "-mmacosx-version-min=10.7"]) - - if USE_OPENMP: + elif USE_OPENMP: compile_args.append("-fopenmp") link_args.append("-fopenmp") @@ -139,10 +145,7 @@ extensions = [ ), Extension( "cornac.models.hpf.hpf", - sources=[ - "cornac/models/hpf/cython/hpf" + ext, - "cornac/models/hpf/cpp/cpp_hpf.cpp", - ], + sources=["cornac/models/hpf/cython/hpf" + ext, "cornac/models/hpf/cpp/cpp_hpf.cpp",], include_dirs=[ "cornac/models/hpf/cpp/", "cornac/utils/external/eigen/Eigen",