[2/n] modula-2, libgm2: Add undefined, dynamic_lookup to m2 libs links.

Message ID 20221230095949.45279-1-iain@sandoe.co.uk
State New
Headers
Series [2/n] modula-2, libgm2: Add undefined, dynamic_lookup to m2 libs links. |

Commit Message

Iain Sandoe Dec. 30, 2022, 9:59 a.m. UTC
  There are several modula-2 issues on Darwin, some blocking bootstrap on
one or more system versions.

This has been tested on powerpc/i688-darwin9 .. x86_64-darwin10,17,21 and
the prototype aarch64-darwin branch on darwin21.

OK for trunk?
thanks
Iain

P.S. I am slightly surprised that a target library configure set needs
to consider $host.  If a target library is manually disabled (or does
not work) on a specific host - we usually disable it at the next level up
(see, for example, the libatomic, sanitizers etc. where there is a 
'configure.tgt' that adapts the library flags etc. to specific targets -
or says that it is UNSUPPORTED).

--- 8< ---

The libm2 libraries are cross-linked, which means that we need to allow
symbols to be undefined at link time and then to be found at runtime.

This is implemented on Darwin by adding -undefined, dynamic_lookup to
the link command.

NOTE: It would probably be a better solution to rework the libraries
either to combine those that have inter-dependencies, or to reorder
the layering so the there is a fixed dependency tree.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

libgm2/ChangeLog:

	* configure: Regenerate.
	* configure.ac: Make a conditional for configurations targeting
	Darwin.
	* libm2cor/Makefile.am: Use -undefined,dynamic_lookup on Darwin.
	* libm2iso/Makefile.am: Likewise.
	* libm2log/Makefile.am: Likewise.
	* libm2pim/Makefile.am: Likewise
	* libm2min/Makefile.am: Likewise
	* libm2cor/Makefile.in: Regenerate.
	* libm2iso/Makefile.in: Regenerate.
	* libm2log/Makefile.in: Regenerate.
	* libm2min/Makefile.in: Regenerate.
	* libm2pim/Makefile.in: Regenerate.
---
 libgm2/configure            | 33 ++++++++++++++++++++++++++++++---
 libgm2/configure.ac         | 16 +++++++++++++++-
 libgm2/libm2cor/Makefile.am |  7 ++++++-
 libgm2/libm2cor/Makefile.in |  4 +++-
 libgm2/libm2iso/Makefile.am |  7 ++++++-
 libgm2/libm2iso/Makefile.in |  4 +++-
 libgm2/libm2log/Makefile.am |  7 ++++++-
 libgm2/libm2log/Makefile.in |  4 +++-
 libgm2/libm2min/Makefile.am |  7 ++++++-
 libgm2/libm2min/Makefile.in |  4 +++-
 libgm2/libm2pim/Makefile.am |  8 ++++++--
 libgm2/libm2pim/Makefile.in |  4 +++-
 12 files changed, 90 insertions(+), 15 deletions(-)
  

Patch

diff --git a/libgm2/configure b/libgm2/configure
index 889c0926a15..8404b0e6e6d 100755
--- a/libgm2/configure
+++ b/libgm2/configure
@@ -634,6 +634,8 @@  ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
+TARGET_DARWIN_FALSE
+TARGET_DARWIN_TRUE
 BUILD_LOGLIB_FALSE
 BUILD_LOGLIB_TRUE
 BUILD_CORLIB_FALSE
@@ -12698,7 +12700,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12701 "configure"
+#line 12703 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12804,7 +12806,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12807 "configure"
+#line 12809 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19508,7 +19510,7 @@  $as_echo "$as_me: libgm2 has finished checking target libc and libm contents." >
 # All known M2_HOST_OS values.  This is the union of all host operating systems
 # supported by gm2.
 
-M2_SUPPORTED_HOST_OS="aix freebsd hurd linux netbsd openbsd solaris windows"
+M2_SUPPORTED_HOST_OS="aix freebsd hurd linux netbsd openbsd solaris windows darwin"
 
 M2_HOST_OS=unknown
 
@@ -19523,6 +19525,19 @@  case ${host} in
   *-*-gnu*)      M2_HOST_OS=hurd ;;
 esac
 
+M2_TARGET_OS=unknown
+
+case ${target} in
+  *-*-darwin*)   M2_TARGET_OS=darwin ;;
+  *-*-freebsd*)  M2_TARGET_OS=freebsd ;;
+  *-*-linux*)    M2_TARGET_OS=linux ;;
+  *-*-netbsd*)	 M2_TARGET_OS=netbsd ;;
+  *-*-openbsd*)  M2_TARGET_OS=openbsd ;;
+  *-*-solaris2*) M2_TARGET_OS=solaris ;;
+  *-*-aix*)      M2_TARGET_OS=aix ;;
+  *-*-gnu*)      M2_TARGET_OS=hurd ;;
+esac
+
 # M2_HOST_OS=unknown
 if test x${M2_HOST_OS} = xunknown; then
    { $as_echo "$as_me:${as_lineno-$LINENO}: unsupported host, will build a minimal m2 library" >&5
@@ -19672,6 +19687,14 @@  else
   BUILD_LOGLIB_FALSE=
 fi
 
+ if test x$M2_TARGET_OS = xdarwin; then
+  TARGET_DARWIN_TRUE=
+  TARGET_DARWIN_FALSE='#'
+else
+  TARGET_DARWIN_TRUE='#'
+  TARGET_DARWIN_FALSE=
+fi
+
 
 
 ac_config_files="$ac_config_files Makefile libm2min/Makefile libm2pim/Makefile libm2iso/Makefile libm2cor/Makefile libm2log/Makefile"
@@ -19841,6 +19864,10 @@  if test -z "${BUILD_LOGLIB_TRUE}" && test -z "${BUILD_LOGLIB_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_LOGLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${TARGET_DARWIN_TRUE}" && test -z "${TARGET_DARWIN_FALSE}"; then
+  as_fn_error $? "conditional \"TARGET_DARWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
diff --git a/libgm2/configure.ac b/libgm2/configure.ac
index 8f069adb29e..0465b7c1caf 100644
--- a/libgm2/configure.ac
+++ b/libgm2/configure.ac
@@ -267,7 +267,7 @@  AC_MSG_NOTICE([libgm2 has finished checking target libc and libm contents.])
 # All known M2_HOST_OS values.  This is the union of all host operating systems
 # supported by gm2.
 
-M2_SUPPORTED_HOST_OS="aix freebsd hurd linux netbsd openbsd solaris windows"
+M2_SUPPORTED_HOST_OS="aix freebsd hurd linux netbsd openbsd solaris windows darwin"
 
 M2_HOST_OS=unknown
 
@@ -282,6 +282,19 @@  case ${host} in
   *-*-gnu*)      M2_HOST_OS=hurd ;;
 esac
 
+M2_TARGET_OS=unknown
+
+case ${target} in
+  *-*-darwin*)   M2_TARGET_OS=darwin ;;
+  *-*-freebsd*)  M2_TARGET_OS=freebsd ;;
+  *-*-linux*)    M2_TARGET_OS=linux ;;
+  *-*-netbsd*)	 M2_TARGET_OS=netbsd ;;
+  *-*-openbsd*)  M2_TARGET_OS=openbsd ;;
+  *-*-solaris2*) M2_TARGET_OS=solaris ;;
+  *-*-aix*)      M2_TARGET_OS=aix ;;
+  *-*-gnu*)      M2_TARGET_OS=hurd ;;
+esac
+
 # M2_HOST_OS=unknown
 if test x${M2_HOST_OS} = xunknown; then
    AC_MSG_NOTICE([unsupported host, will build a minimal m2 library])
@@ -366,6 +379,7 @@  AM_CONDITIONAL([BUILD_PIMLIB], [test x$BUILD_PIMLIB = xtrue])
 AM_CONDITIONAL([BUILD_ISOLIB], [test x$BUILD_ISOLIB = xtrue])
 AM_CONDITIONAL([BUILD_CORLIB], [test x$BUILD_CORLIB = xtrue])
 AM_CONDITIONAL([BUILD_LOGLIB], [test x$BUILD_LOGLIB = xtrue])
+AM_CONDITIONAL([TARGET_DARWIN], [test x$M2_TARGET_OS = xdarwin])
 
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_FILES([Makefile libm2min/Makefile libm2pim/Makefile libm2iso/Makefile
diff --git a/libgm2/libm2cor/Makefile.am b/libgm2/libm2cor/Makefile.am
index 781955bffc8..076ac08cc30 100644
--- a/libgm2/libm2cor/Makefile.am
+++ b/libgm2/libm2cor/Makefile.am
@@ -114,7 +114,12 @@  libm2cordir = libm2cor
 libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
 libm2cor_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
 libm2cor_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g
-libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+if TARGET_DARWIN
+libm2cor_la_link_flags = -Wl,-undefined,dynamic_lookup
+else
+libm2cor_la_link_flags =
+endif
+libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2cor_la_link_flags)
 BUILT_SOURCES = SYSTEM.def
 CLEANFILES = SYSTEM.def
 
diff --git a/libgm2/libm2cor/Makefile.in b/libgm2/libm2cor/Makefile.in
index 6d921cd329d..cef367e008f 100644
--- a/libgm2/libm2cor/Makefile.in
+++ b/libgm2/libm2cor/Makefile.in
@@ -463,7 +463,9 @@  FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_CORLIB_TRUE@libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
 @BUILD_CORLIB_TRUE@libm2cor_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
 @BUILD_CORLIB_TRUE@libm2cor_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g
-@BUILD_CORLIB_TRUE@libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+@BUILD_CORLIB_TRUE@@TARGET_DARWIN_FALSE@libm2cor_la_link_flags = 
+@BUILD_CORLIB_TRUE@@TARGET_DARWIN_TRUE@libm2cor_la_link_flags = -Wl,-undefined,dynamic_lookup
+@BUILD_CORLIB_TRUE@libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2cor_la_link_flags)
 @BUILD_CORLIB_TRUE@BUILT_SOURCES = SYSTEM.def
 @BUILD_CORLIB_TRUE@CLEANFILES = SYSTEM.def
 @BUILD_CORLIB_TRUE@M2LIBDIR = /m2/m2cor/
diff --git a/libgm2/libm2iso/Makefile.am b/libgm2/libm2iso/Makefile.am
index dc547207e79..fc0e4f5bd1a 100644
--- a/libgm2/libm2iso/Makefile.am
+++ b/libgm2/libm2iso/Makefile.am
@@ -187,7 +187,12 @@  libm2isodir = libm2iso
 libm2iso_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2iso_la_SOURCES)))
 libm2iso_la_CFLAGS = $(C_INCLUDES) -I. -I.. -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs -DBUILD_GM2_LIBS -I@srcdir@/../ -I../../../gcc -I$(GCC_DIR) -I$(GCC_DIR)/../include -I../../libgcc -I$(GCC_DIR)/../libgcc -I$(MULTIBUILDTOP)../../gcc/include
 libm2iso_la_M2FLAGS = -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs -fiso -fextended-opaque -fm2-g -g
-libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+if TARGET_DARWIN
+libm2iso_la_link_flags = -Wl,-undefined,dynamic_lookup
+else
+libm2iso_la_link_flags =
+endif
+libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2iso_la_link_flags)
 CLEANFILES = SYSTEM.def
 BUILT_SOURCES = SYSTEM.def
 
diff --git a/libgm2/libm2iso/Makefile.in b/libgm2/libm2iso/Makefile.in
index 04aba0f032b..e628dd33631 100644
--- a/libgm2/libm2iso/Makefile.in
+++ b/libgm2/libm2iso/Makefile.in
@@ -563,7 +563,9 @@  FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_ISOLIB_TRUE@libm2iso_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2iso_la_SOURCES)))
 @BUILD_ISOLIB_TRUE@libm2iso_la_CFLAGS = $(C_INCLUDES) -I. -I.. -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs -DBUILD_GM2_LIBS -I@srcdir@/../ -I../../../gcc -I$(GCC_DIR) -I$(GCC_DIR)/../include -I../../libgcc -I$(GCC_DIR)/../libgcc -I$(MULTIBUILDTOP)../../gcc/include
 @BUILD_ISOLIB_TRUE@libm2iso_la_M2FLAGS = -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs -fiso -fextended-opaque -fm2-g -g
-@BUILD_ISOLIB_TRUE@libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+@BUILD_ISOLIB_TRUE@@TARGET_DARWIN_FALSE@libm2iso_la_link_flags = 
+@BUILD_ISOLIB_TRUE@@TARGET_DARWIN_TRUE@libm2iso_la_link_flags = -Wl,-undefined,dynamic_lookup
+@BUILD_ISOLIB_TRUE@libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2iso_la_link_flags)
 @BUILD_ISOLIB_TRUE@CLEANFILES = SYSTEM.def
 @BUILD_ISOLIB_TRUE@BUILT_SOURCES = SYSTEM.def
 @BUILD_ISOLIB_TRUE@M2LIBDIR = /m2/m2iso/
diff --git a/libgm2/libm2log/Makefile.am b/libgm2/libm2log/Makefile.am
index 728a179a5fd..f8261b9dc5a 100644
--- a/libgm2/libm2log/Makefile.am
+++ b/libgm2/libm2log/Makefile.am
@@ -132,7 +132,12 @@  libm2log_la_SOURCES = $(M2MODS) Break.c
 libm2log_la_DEPENDENCIES = ../libm2pim/SYSTEM.def $(addsuffix .lo, $(basename $(libm2log_la_SOURCES)))
 libm2log_la_CFLAGS = -I. -DBUILD_GM2_LIBS -I@srcdir@/../
 libm2log_la_M2FLAGS = -I../libm2pim -I$(GM2_SRC)/gm2-libs-pim -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso
-libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+if TARGET_DARWIN
+libm2log_la_link_flags = -Wl,-undefined,dynamic_lookup
+else
+libm2log_la_link_flags =
+endif
+libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2log_la_link_flags)
 BUILT_SOURCES = ../libm2pim/SYSTEM.def
 
 M2LIBDIR = /m2/m2log/
diff --git a/libgm2/libm2log/Makefile.in b/libgm2/libm2log/Makefile.in
index be8a59d2a56..15e0a5fc2c6 100644
--- a/libgm2/libm2log/Makefile.in
+++ b/libgm2/libm2log/Makefile.in
@@ -471,7 +471,9 @@  FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_LOGLIB_TRUE@libm2log_la_DEPENDENCIES = ../libm2pim/SYSTEM.def $(addsuffix .lo, $(basename $(libm2log_la_SOURCES)))
 @BUILD_LOGLIB_TRUE@libm2log_la_CFLAGS = -I. -DBUILD_GM2_LIBS -I@srcdir@/../
 @BUILD_LOGLIB_TRUE@libm2log_la_M2FLAGS = -I../libm2pim -I$(GM2_SRC)/gm2-libs-pim -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso
-@BUILD_LOGLIB_TRUE@libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+@BUILD_LOGLIB_TRUE@@TARGET_DARWIN_FALSE@libm2log_la_link_flags = 
+@BUILD_LOGLIB_TRUE@@TARGET_DARWIN_TRUE@libm2log_la_link_flags = -Wl,-undefined,dynamic_lookup
+@BUILD_LOGLIB_TRUE@libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2log_la_link_flags)
 @BUILD_LOGLIB_TRUE@BUILT_SOURCES = ../libm2pim/SYSTEM.def
 @BUILD_LOGLIB_TRUE@M2LIBDIR = /m2/m2log/
 all: $(BUILT_SOURCES)
diff --git a/libgm2/libm2min/Makefile.am b/libgm2/libm2min/Makefile.am
index 667cca6f0aa..4d7726662e7 100644
--- a/libgm2/libm2min/Makefile.am
+++ b/libgm2/libm2min/Makefile.am
@@ -106,7 +106,12 @@  libm2min_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2min_la_
 libm2min_la_CFLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs
 libm2min_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs -fno-exceptions \
    -fno-m2-plugin -fno-scaffold-dynamic -fno-scaffold-main
-libm2min_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+if TARGET_DARWIN
+libm2min_la_link_flags = -Wl,-undefined,dynamic_lookup
+else
+libm2min_la_link_flags =
+endif
+libm2min_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2min_la_link_flags)
 BUILT_SOURCES = SYSTEM.def
 CLEANFILES = SYSTEM.def
 
diff --git a/libgm2/libm2min/Makefile.in b/libgm2/libm2min/Makefile.in
index 8210c2e2fa9..f8319959988 100644
--- a/libgm2/libm2min/Makefile.in
+++ b/libgm2/libm2min/Makefile.in
@@ -439,7 +439,9 @@  libm2min_la_CFLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs
 libm2min_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs -fno-exceptions \
    -fno-m2-plugin -fno-scaffold-dynamic -fno-scaffold-main
 
-libm2min_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+@TARGET_DARWIN_FALSE@libm2min_la_link_flags = 
+@TARGET_DARWIN_TRUE@libm2min_la_link_flags = -Wl,-undefined,dynamic_lookup
+libm2min_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2min_la_link_flags)
 BUILT_SOURCES = SYSTEM.def
 CLEANFILES = SYSTEM.def
 M2LIBDIR = /m2/m2min/
diff --git a/libgm2/libm2pim/Makefile.am b/libgm2/libm2pim/Makefile.am
index aa5904bb04e..98c9ca14579 100644
--- a/libgm2/libm2pim/Makefile.am
+++ b/libgm2/libm2pim/Makefile.am
@@ -33,7 +33,6 @@  slibdir = @slibdir@
 
 toolexeclibdir=@toolexeclibdir@
 toolexecdir=@toolexecdir@
-GM2_FOR_TARGET=@GM2_FOR_TARGET@
 
 MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
 MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
@@ -168,7 +167,12 @@  libm2pimdir = libm2pim
 libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES)))
 libm2pim_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
 libm2pim_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g
-libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+if TARGET_DARWIN
+libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup
+else
+libm2pim_la_link_flags =
+endif
+libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2pim_la_link_flags)
 BUILT_SOURCES = SYSTEM.def
 CLEANFILES = SYSTEM.def
 
diff --git a/libgm2/libm2pim/Makefile.in b/libgm2/libm2pim/Makefile.in
index ed14837c0a4..ab05ca9fb49 100644
--- a/libgm2/libm2pim/Makefile.in
+++ b/libgm2/libm2pim/Makefile.in
@@ -534,7 +534,9 @@  FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES)))
 @BUILD_PIMLIB_TRUE@libm2pim_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
 @BUILD_PIMLIB_TRUE@libm2pim_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g
-@BUILD_PIMLIB_TRUE@libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+@BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@libm2pim_la_link_flags = 
+@BUILD_PIMLIB_TRUE@@TARGET_DARWIN_TRUE@libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup
+@BUILD_PIMLIB_TRUE@libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2pim_la_link_flags)
 @BUILD_PIMLIB_TRUE@BUILT_SOURCES = SYSTEM.def
 @BUILD_PIMLIB_TRUE@CLEANFILES = SYSTEM.def
 @BUILD_PIMLIB_TRUE@M2LIBDIR = /m2/m2pim/