Merge pull request #2266 from mpilman/bugfixes/catalina

Fix compiler errors on Catalina
This commit is contained in:
Evan Tschannen 2019-10-22 19:09:49 -07:00 committed by GitHub
commit 3bebcca846
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 0 deletions

View File

@ -221,9 +221,14 @@ else()
# Check whether we can use dtrace probes # Check whether we can use dtrace probes
include(CheckSymbolExists) include(CheckSymbolExists)
check_symbol_exists(DTRACE_PROBE sys/sdt.h SUPPORT_DTRACE) check_symbol_exists(DTRACE_PROBE sys/sdt.h SUPPORT_DTRACE)
check_symbol_exists(aligned_alloc stdlib.h HAS_ALIGNED_ALLOC)
message(STATUS "Has aligned_alloc: ${HAS_ALIGNED_ALLOC}")
if(SUPPORT_DTRACE) if(SUPPORT_DTRACE)
add_compile_definitions(DTRACE_PROBES) add_compile_definitions(DTRACE_PROBES)
endif() endif()
if(HAS_ALIGNED_ALLOC)
add_compile_definitions(HAS_ALIGNED_ALLOC)
endif()
if(CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_COMPILER_IS_GNUCXX)
set(USE_LTO OFF CACHE BOOL "Do link time optimization") set(USE_LTO OFF CACHE BOOL "Do link time optimization")

View File

@ -524,6 +524,7 @@ inline static void aligned_free(void* ptr) { free(ptr); }
inline static void* aligned_alloc(size_t alignment, size_t size) { return memalign(alignment, size); } inline static void* aligned_alloc(size_t alignment, size_t size) { return memalign(alignment, size); }
#endif #endif
#elif defined(__APPLE__) #elif defined(__APPLE__)
#if !defined(HAS_ALIGNED_ALLOC)
#include <cstdlib> #include <cstdlib>
inline static void* aligned_alloc(size_t alignment, size_t size) { inline static void* aligned_alloc(size_t alignment, size_t size) {
// Linux's aligned_alloc() requires alignment to be a power of 2. While posix_memalign() // Linux's aligned_alloc() requires alignment to be a power of 2. While posix_memalign()
@ -540,6 +541,7 @@ inline static void* aligned_alloc(size_t alignment, size_t size) {
posix_memalign(&ptr, alignment, size); posix_memalign(&ptr, alignment, size);
return ptr; return ptr;
} }
#endif
inline static void aligned_free(void* ptr) { free(ptr); } inline static void aligned_free(void* ptr) { free(ptr); }
#endif #endif