summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlib/crypto/configure17
-rwxr-xr-xlib/erl_interface/configure16
-rwxr-xr-xlib/megaco/configure15
-rwxr-xr-xmake/configure15
4 files changed, 50 insertions, 13 deletions
diff --git a/lib/crypto/configure b/lib/crypto/configure
index b2550595c0..7ca886f481 100755
--- a/lib/crypto/configure
+++ b/lib/crypto/configure
@@ -1462,7 +1462,7 @@ Some influential environment variables:
CXX C++ compiler
CXXFLAGS C++ compiler flags
LD linker (is often overridden by configure)
- LDFLAGS linker flags (can be risky to set since LD may be overriden by
+ LDFLAGS linker flags (can be risky to set since LD may be overridden by
configure)
LIBS libraries
DED_LD linker for Dynamic Erlang Drivers (set all DED_LD* variables or
@@ -4698,9 +4698,18 @@ case $host_os in
DED_LDFLAGS="-Bshareable"
;;
darwin*)
- # Mach-O linker: a shared lib and a loadable
- # object file is not the same thing.
- DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ # Mach-O linker: a shared lib and a loadable object file is not the same thing.
+
+ if test "X${ERL_DED_FLAT_BUNDLE}" = "Xtrue"; then
+ # EI sets this variable when building its .so file as beam.smp
+ # has not been built yet and any ei lib will not
+ # link to beam.smp anyways
+ DED_LDFLAGS="-bundle -flat_namespace -undefined suppress"
+ else
+ # Cannot use flat namespaces for drivers/nifs as that may cause
+ # symbols to collide during loading
+ DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ fi
# DED_LDFLAGS_CONFTEST is for use in configure tests only. We
# cannot use DED_LDFLAGS in configure tests since beam.smp has not
# been built yet...
diff --git a/lib/erl_interface/configure b/lib/erl_interface/configure
index fa5feb72f3..50c4b6396e 100755
--- a/lib/erl_interface/configure
+++ b/lib/erl_interface/configure
@@ -7995,6 +7995,7 @@ else
fi
fi
+ERL_DED_FLAT_BUNDLE=true
USER_LD=$LD
@@ -8261,9 +8262,18 @@ case $host_os in
DED_LDFLAGS="-Bshareable"
;;
darwin*)
- # Mach-O linker: a shared lib and a loadable
- # object file is not the same thing.
- DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ # Mach-O linker: a shared lib and a loadable object file is not the same thing.
+
+ if test "X${ERL_DED_FLAT_BUNDLE}" = "Xtrue"; then
+ # EI sets this variable when building its .so file as beam.smp
+ # has not been built yet and any ei lib will not
+ # link to beam.smp anyways
+ DED_LDFLAGS="-bundle -flat_namespace -undefined suppress"
+ else
+ # Cannot use flat namespaces for drivers/nifs as that may cause
+ # symbols to collide during loading
+ DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ fi
# DED_LDFLAGS_CONFTEST is for use in configure tests only. We
# cannot use DED_LDFLAGS in configure tests since beam.smp has not
# been built yet...
diff --git a/lib/megaco/configure b/lib/megaco/configure
index 13ed7b96a6..fac90552ce 100755
--- a/lib/megaco/configure
+++ b/lib/megaco/configure
@@ -4785,9 +4785,18 @@ case $host_os in
DED_LDFLAGS="-Bshareable"
;;
darwin*)
- # Mach-O linker: a shared lib and a loadable
- # object file is not the same thing.
- DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ # Mach-O linker: a shared lib and a loadable object file is not the same thing.
+
+ if test "X${ERL_DED_FLAT_BUNDLE}" = "Xtrue"; then
+ # EI sets this variable when building its .so file as beam.smp
+ # has not been built yet and any ei lib will not
+ # link to beam.smp anyways
+ DED_LDFLAGS="-bundle -flat_namespace -undefined suppress"
+ else
+ # Cannot use flat namespaces for drivers/nifs as that may cause
+ # symbols to collide during loading
+ DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ fi
# DED_LDFLAGS_CONFTEST is for use in configure tests only. We
# cannot use DED_LDFLAGS in configure tests since beam.smp has not
# been built yet...
diff --git a/make/configure b/make/configure
index 698d94db9c..c44049816c 100755
--- a/make/configure
+++ b/make/configure
@@ -5806,9 +5806,18 @@ case $host_os in
DED_LDFLAGS="-Bshareable"
;;
darwin*)
- # Mach-O linker: a shared lib and a loadable
- # object file is not the same thing.
- DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ # Mach-O linker: a shared lib and a loadable object file is not the same thing.
+
+ if test "X${ERL_DED_FLAT_BUNDLE}" = "Xtrue"; then
+ # EI sets this variable when building its .so file as beam.smp
+ # has not been built yet and any ei lib will not
+ # link to beam.smp anyways
+ DED_LDFLAGS="-bundle -flat_namespace -undefined suppress"
+ else
+ # Cannot use flat namespaces for drivers/nifs as that may cause
+ # symbols to collide during loading
+ DED_LDFLAGS="-bundle -bundle_loader ${ERL_TOP}/bin/$host/beam.smp"
+ fi
# DED_LDFLAGS_CONFTEST is for use in configure tests only. We
# cannot use DED_LDFLAGS in configure tests since beam.smp has not
# been built yet...