Skip to content

Commit d7f9e6d

Browse files
ruberithjanbender
andauthored
macOS compatibility (#167)
* Enable arch optimizations on ARM * Silence OpenGL deprecation warnings on macOS * Fix OpenMP support for Clang on macOS * Update definitions altered in Discregrid * Fix getProgramPath on macOS * Add Accelerate support to AVX math * Port MiniGL to OpenGL 3.3 Core - Properly destroy OpenGL objects * Fix template lookup with Clang * Fix type in pySPlisHSPlasH/UtilitiesModule * Fix version inclusion with Clang * Update CompactNSearch and Discregrid * TMP: Use fork of CompactNSearch --------- Co-authored-by: Jan Bender <[email protected]>
1 parent c418045 commit d7f9e6d

File tree

27 files changed

+1378
-789
lines changed

27 files changed

+1378
-789
lines changed

CMake/Common.cmake

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,28 @@ endif (USE_DOUBLE_PRECISION)
1919

2020
cmake_dependent_option(USE_AVX "Use AVX" ON "NOT USE_DOUBLE_PRECISION" OFF)
2121
if (USE_AVX)
22-
include(avx)
23-
set_avx_flags()
24-
if (FOUND_AVX2)
25-
message(STATUS "Using AVX2")
22+
set(FOUND_ACCELERATE OFF)
23+
if (APPLE)
24+
find_library(ACCELERATE Accelerate)
25+
endif()
26+
if (ACCELERATE)
27+
set(FOUND_ACCELERATE ON)
28+
message(STATUS "Using Accelerate")
29+
link_libraries(${ACCELERATE})
30+
else()
31+
include(avx)
32+
set_avx_flags()
33+
if (FOUND_AVX2)
34+
message(STATUS "Using AVX2")
35+
endif()
36+
endif()
37+
if (FOUND_ACCELERATE OR FOUND_AVX2)
38+
set(FOUND_SIMD ON)
2639
add_definitions(-DUSE_AVX)
2740
endif()
2841
endif()
2942

30-
cmake_dependent_option(USE_PERFORMANCE_OPTIMIZATION "Optimize performance (higher memory consumption)" ON "FOUND_AVX2" OFF)
43+
cmake_dependent_option(USE_PERFORMANCE_OPTIMIZATION "Optimize performance (higher memory consumption)" ON "FOUND_SIMD" OFF)
3144
if (USE_PERFORMANCE_OPTIMIZATION)
3245
add_definitions( -DUSE_PERFORMANCE_OPTIMIZATION)
3346
endif (USE_PERFORMANCE_OPTIMIZATION)
@@ -64,8 +77,12 @@ option(USE_OpenMP "Use OpenMP" ON)
6477
if(USE_OpenMP)
6578
FIND_PACKAGE(OpenMP)
6679
if(OPENMP_FOUND)
67-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
68-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
80+
if (CMAKE_VERSION VERSION_GREATER "3.8")
81+
link_libraries(OpenMP::OpenMP_CXX)
82+
else()
83+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
84+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
85+
endif()
6986
endif()
7087
endif()
7188

@@ -86,6 +103,9 @@ if (UNIX OR MINGW)
86103
if (CI_BUILD)
87104
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -march=x86-64")
88105
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -DNDEBUG -march=x86-64")
106+
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
107+
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -mcpu=native")
108+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -DNDEBUG -mcpu=native")
89109
else()
90110
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -march=native")
91111
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -DNDEBUG -march=native")
@@ -101,6 +121,7 @@ endif(MINGW)
101121

102122
if(APPLE)
103123
set(CMAKE_MACOSX_RPATH 1)
124+
add_definitions(-DGL_SILENCE_DEPRECATION)
104125
endif()
105126

106127
if (MSVC)

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ endif()
4040
## Eigen3 is used by most of the libraries that follow
4141
find_package(Eigen3 REQUIRED)
4242
add_definitions(-DEIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT)
43+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
44+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -idirafter${EIGEN3_INCLUDE_DIR}")
45+
endif()
4346

4447
################################################################################
4548
# own external libraries

0 commit comments

Comments
 (0)