diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-06-27 00:20:21 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-06-27 01:08:46 +0900 |
commit | fc8020c68eb9f640185a1bce322eba6605bde151 (patch) | |
tree | f9dabc4f90622bebc268f0824a7a4c5b01834e2d /dln.c | |
parent | 49d59215506a30c8a11766627f7af0cdfe0de9d4 (diff) |
[Bug #18879] Fix macOS version detections
macOS's AvailabilityMacros.h does not contain macros for future
versions. If a version macro is not defined, consider only earlier
versions to be targeted.
Diffstat (limited to 'dln.c')
-rw-r--r-- | dln.c | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -294,8 +294,21 @@ dln_incompatible_library_p(void *handle, const char **libname) COMPILER_WARNING_POP #endif -#if defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11) +#if !defined(MAC_OS_X_VERSION_MIN_REQUIRED) +/* assume others than old Mac OS X have no problem */ +# define dln_disable_dlclose() false + +#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11 +/* targeting newer versions only */ +# define dln_disable_dlclose() false + +#elif !defined(MAC_OS_X_VERSION_10_11) || \ + (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11) +/* targeting older versions only */ +# define dln_disable_dlclose() true + +#else +/* support both versions, and check at runtime */ # include <sys/sysctl.h> static bool @@ -308,8 +321,6 @@ dln_disable_dlclose(void) if (rev < MAC_OS_X_VERSION_10_11) return true; return false; } -#else -# define dln_disable_dlclose() false #endif #if defined(_WIN32) || defined(USE_DLN_DLOPEN) |