Skip to content

Commit

Permalink
Merge pull request #61146 from akien-mga/pcre2-fix-macos-pre-11-support
Browse files Browse the repository at this point in the history
  • Loading branch information
akien-mga authored May 18, 2022
2 parents 5631b59 + 24a06a6 commit 26393cc
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 0 deletions.
3 changes: 3 additions & 0 deletions thirdparty/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,9 @@ Files extracted from upstream source:
- src/sljit/
- AUTHORS and LICENCE

A sljit patch from upstream was backported to fix macOS < 11.0 compilation
in 10.40, it can be found in the `patches` folder.


## recastnavigation

Expand Down
31 changes: 31 additions & 0 deletions thirdparty/pcre2/patches/sljit-macos11-conditional.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
From de8fc816bc6698ab97316ed954e133e7e5098262 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com>
Date: Thu, 21 Apr 2022 21:01:12 -0700
Subject: [PATCH] macos: somehow allow building with a target below 11.0

While building for macOS older than 11 in Apple Silicon makes no
sense, some build systems lack the flexibility to set a target per
architecture while aiming to support multi architecture binaries.

Allow an option in those cases by using the slower runtime checks
if the toolchain allows it.

Fixes: PCRE2Project/pcre2#109
---
sljit_src/sljitExecAllocator.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/sljit_src/sljitExecAllocator.c b/sljit_src/sljitExecAllocator.c
index 92d940dd..6359848c 100644
--- a/sljit_src/sljitExecAllocator.c
+++ b/sljit_src/sljitExecAllocator.c
@@ -152,6 +152,9 @@ static SLJIT_INLINE void apple_update_wx_flags(sljit_s32 enable_exec)
{
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
pthread_jit_write_protect_np(enable_exec);
+#elif defined(__clang__)
+ if (__builtin_available(macOS 11.0, *))
+ pthread_jit_write_protect_np(enable_exec);
#else
#error "Must target Big Sur or newer"
#endif /* BigSur */
3 changes: 3 additions & 0 deletions thirdparty/pcre2/src/sljit/sljitExecAllocator.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,9 @@ static SLJIT_INLINE void apple_update_wx_flags(sljit_s32 enable_exec)
{
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 110000
pthread_jit_write_protect_np(enable_exec);
#elif defined(__clang__)
if (__builtin_available(macOS 11.0, *))
pthread_jit_write_protect_np(enable_exec);
#else
#error "Must target Big Sur or newer"
#endif /* BigSur */
Expand Down

0 comments on commit 26393cc

Please sign in to comment.