From 50bc3ce05cd3e937a1a2591644d02ba40f88d634 Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Wed, 25 Oct 2017 01:33:27 -0400
Subject: build system: PE targets: added mdso-based import library generation
 support.

---
 sysinfo/os/cygwin.mk  |  1 +
 sysinfo/os/midipix.mk |  1 +
 sysinfo/os/mingw.mk   |  1 +
 sysinfo/os/msys.mk    |  1 +
 sysinfo/os/pe.mk      | 27 ++++++++++++++++++++++++---
 5 files changed, 28 insertions(+), 3 deletions(-)

(limited to 'sysinfo/os')

diff --git a/sysinfo/os/cygwin.mk b/sysinfo/os/cygwin.mk
index a257b88..21cb1a1 100644
--- a/sysinfo/os/cygwin.mk
+++ b/sysinfo/os/cygwin.mk
@@ -8,5 +8,6 @@ OS_LIBDEF_EXT	= .def
 OS_ARCHIVE_EXT	= .a
 OS_SONAME	= copy
 OS_BINFMT	= PE
+OS_IMPLIB_TOOL	= dlltool
 
 CFLAGS_PIC	=
diff --git a/sysinfo/os/midipix.mk b/sysinfo/os/midipix.mk
index 96c178c..b2d7096 100644
--- a/sysinfo/os/midipix.mk
+++ b/sysinfo/os/midipix.mk
@@ -8,3 +8,4 @@ OS_LIBDEF_EXT	= .so.def
 OS_ARCHIVE_EXT	= .a
 OS_SONAME	= symlink
 OS_BINFMT	= PE
+OS_IMPLIB_TOOL	= mdso
diff --git a/sysinfo/os/mingw.mk b/sysinfo/os/mingw.mk
index c13e61d..53fe2d6 100644
--- a/sysinfo/os/mingw.mk
+++ b/sysinfo/os/mingw.mk
@@ -8,6 +8,7 @@ OS_LIBDEF_EXT	= .def
 OS_ARCHIVE_EXT	= .a
 OS_SONAME	= copy
 OS_BINFMT	= PE
+OS_IMPLIB_TOOL	= dlltool
 
 CFLAGS_PIC	=
 CFLAGS_OS      += -U__STRICT_ANSI__
diff --git a/sysinfo/os/msys.mk b/sysinfo/os/msys.mk
index b70cc78..27482e0 100644
--- a/sysinfo/os/msys.mk
+++ b/sysinfo/os/msys.mk
@@ -8,6 +8,7 @@ OS_LIBDEF_EXT	= .def
 OS_ARCHIVE_EXT	= .a
 OS_SONAME	= copy
 OS_BINFMT	= PE
+OS_IMPLIB_TOOL	= dlltool
 
 CFLAGS_PIC	=
 CFLAGS_OS      += -U__STRICT_ANSI__
diff --git a/sysinfo/os/pe.mk b/sysinfo/os/pe.mk
index bbb74b2..1b02484 100644
--- a/sysinfo/os/pe.mk
+++ b/sysinfo/os/pe.mk
@@ -19,9 +19,6 @@ implib-solink:		shared-lib $(IMPLIB_SOLINK)
 
 $(IMPLIB_DEF):		shared-lib
 
-$(IMPLIB_VER):		$(IMPLIB_DEF)
-			$(DLLTOOL) -l $(IMPLIB_VER) -d $(IMPLIB_DEF) -D $(DSO_VER)
-
 install-implib:		install-implib-ver \
 			package-install-implib-soname \
 			package-install-implib-solink
@@ -38,6 +35,20 @@ clean-implib:
 			rm -f $(IMPLIB_SOLINK)
 
 
+ifeq ($(OS_IMPLIB_TOOL),mdso)
+
+$(IMPLIB_VER):		$(IMPLIB_DEF)
+			$(MDSO) -m $(HOST_BITS) -i $(IMPLIB_VER) -n $(DSO_VER) $(IMPLIB_DEF)
+
+else ifeq ($(OS_IMPLIB_TOOL),dlltool)
+
+$(IMPLIB_VER):		$(IMPLIB_DEF)
+			$(DLLTOOL) -l $(IMPLIB_VER) -d $(IMPLIB_DEF) -D $(DSO_VER)
+
+endif
+
+
+
 ifeq ($(AVOID_VERSION),yes)
 
 package-implib-soname:
@@ -53,9 +64,19 @@ package-install-implib-soname:	install-implib-soname
 package-install-implib-solink:	install-implib-solink
 
 
+ifeq ($(OS_IMPLIB_TOOL),mdso)
+
+$(IMPLIB_SONAME):	$(IMPLIB_DEF)
+			$(MDSO) -m $(HOST_BITS) -i $(IMPLIB_SONAME) -n $(DSO_SONAME) $(IMPLIB_DEF)
+
+else ifeq ($(OS_IMPLIB_TOOL),dlltool)
+
 $(IMPLIB_SONAME):	$(IMPLIB_DEF)
 			$(DLLTOOL) -l $(IMPLIB_SONAME) -d $(IMPLIB_DEF) -D $(DSO_SONAME)
 
+endif
+
+
 $(IMPLIB_SOLINK):	$(IMPLIB_SONAME)
 			rm -f $(IMPLIB_SOLINK).tmp
 			ln -s $(IMP_SONAME) $(IMPLIB_SOLINK).tmp
-- 
cgit v1.2.3