Mac: Support hiding SIMD fct symbols w/ NASM 2.14+
(NASM 2.14+ now supports the private_extern section directive, which was
previously only available with YASM.)
diff --git a/BUILDING.md b/BUILDING.md
index 485144a..a4ae1e0 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -15,12 +15,14 @@
* If using NASM, 2.10 or later is required.
* If using NASM, 2.10 or later (except 2.11.08) is required for an x86-64 Mac
build (2.11.08 does not work properly with libjpeg-turbo's x86-64 SIMD code
- when building macho64 objects.) NASM or YASM can be obtained from
- [MacPorts](http://www.macports.org/) or [Homebrew](http://brew.sh/).
+ when building macho64 objects.)
* If using YASM, 1.2.0 or later is required.
+ * If building on macOS, NASM or YASM can be obtained from
+ [MacPorts](http://www.macports.org/) or [Homebrew](http://brew.sh/).
- NOTE: Currently, if it is desirable to hide the SIMD function symbols in
Mac executables or shared libraries that statically link with
- libjpeg-turbo, then YASM must be used when building libjpeg-turbo.
+ libjpeg-turbo, then NASM 2.14 or later or YASM must be used when
+ building libjpeg-turbo.
* If building on Windows, **nasm.exe**/**yasm.exe** should be in your `PATH`.
* NASM and YASM are located in the CRB (Code Ready Builder) repository on
Red Hat Enterprise Linux 8 and in the PowerTools repository on CentOS 8,
diff --git a/simd/nasm/jsimdext.inc b/simd/nasm/jsimdext.inc
index 11fe8ef..9930d80 100644
--- a/simd/nasm/jsimdext.inc
+++ b/simd/nasm/jsimdext.inc
@@ -2,7 +2,7 @@
; jsimdext.inc - common declarations
;
; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
-; Copyright (C) 2010, 2016, D. R. Commander.
+; Copyright (C) 2010, 2016, 2019, D. R. Commander.
; Copyright (C) 2018, Matthieu Darbois.
;
; Based on the x86 SIMD extension for IJG JPEG library - version 1.02
@@ -196,6 +196,11 @@
%ifdef __YASM_VER__
%define GLOBAL_FUNCTION(name) global EXTN(name):private_extern
%define GLOBAL_DATA(name) global EXTN(name):private_extern
+%else
+%if __NASM_VERSION_ID__ >= 0x020E0000
+%define GLOBAL_FUNCTION(name) global EXTN(name):private_extern
+%define GLOBAL_DATA(name) global EXTN(name):private_extern
+%endif
%endif
%endif