From 94353c107745b6ea5ad130b0e48e4c9602c690de Mon Sep 17 00:00:00 2001 From: midipix 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 ++++++++++++++++++++++++--- sysinfo/toolchain/binutils.mk | 1 + sysinfo/toolchain/llvm.mk | 1 + 7 files changed, 30 insertions(+), 3 deletions(-) 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 diff --git a/sysinfo/toolchain/binutils.mk b/sysinfo/toolchain/binutils.mk index 3232915..728eb66 100644 --- a/sysinfo/toolchain/binutils.mk +++ b/sysinfo/toolchain/binutils.mk @@ -16,3 +16,4 @@ ELFEDIT = $(CROSS_COMPILE)elfedit OBJCOPY = $(CROSS_COMPILE)objcopy READELF = $(CROSS_COMPILE)readelf DLLTOOL = $(CROSS_COMPILE)dlltool +MDSO = $(CROSS_COMPILE)mdso diff --git a/sysinfo/toolchain/llvm.mk b/sysinfo/toolchain/llvm.mk index 65b5396..b863456 100644 --- a/sysinfo/toolchain/llvm.mk +++ b/sysinfo/toolchain/llvm.mk @@ -16,3 +16,4 @@ ELFEDIT = $(CROSS_COMPILE)elfedit OBJCOPY = $(CROSS_COMPILE)objcopy READELF = $(CROSS_COMPILE)readelf DLLTOOL = $(CROSS_COMPILE)dlltool +MDSO = $(CROSS_COMPILE)mdso -- cgit v1.2.3