Add an option to enable building libs from dlltool with delayed imports to support ReactOS
git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3197 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 3e80706..b5ba2c6 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -32,6 +32,9 @@
AM_CFLAGS=$(cflags_underscores) -pipe -std=gnu99 @ADD_C_CXX_WARNING_FLAGS@ @ADD_C_ONLY_WARNING_FLAGS@
AM_CXXFLAGS=@ADD_C_CXX_WARNING_FLAGS@ @ADD_CXX_ONLY_WARNING_FLAGS@
AM_DLLTOOLFLAGS=$(dlltool_underscores) -k --as=$(AS) --output-lib $@
+if DELAY_IMPORT_LIBS
+ AM_DLLTOOLFLAGS += --output-delaylib $@.delayimp.a
+endif
CPPFLAGS32=-m32
CPPFLAGS64=-m64
DLLTOOLFLAGS32=--as-flags=--32 -m i386
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index 8bd4bb0..4ede23b 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -98,7 +98,8 @@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@ENABLE_TESTS_UNICODE_TRUE@am__append_1 = testcases/t_municode testcases/t_tmain
+@DELAY_IMPORT_LIBS_TRUE@am__append_1 = --output-delaylib $@.delayimp.a
+@ENABLE_TESTS_UNICODE_TRUE@am__append_2 = testcases/t_municode testcases/t_tmain
check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_4) $(am__EXEEXT_6)
TESTS = $(am__EXEEXT_2) $(am__EXEEXT_4) $(am__EXEEXT_6)
XFAIL_TESTS = testcases/t_nullptrexception$(EXEEXT) $(am__EXEEXT_7) \
@@ -111,25 +112,25 @@
build-aux/install-sh build-aux/missing
# Build the libraries
-@LIB32_TRUE@am__append_2 = $(newcomplex_test_lib32)
+@LIB32_TRUE@am__append_3 = $(newcomplex_test_lib32)
# Build the programs during make check.
-@LIB32_TRUE@am__append_3 = $(newcomplex_tests32)
+@LIB32_TRUE@am__append_4 = $(newcomplex_tests32)
# Declare the tests.
-@LIB32_TRUE@am__append_4 = $(newcomplex_tests32)
+@LIB32_TRUE@am__append_5 = $(newcomplex_tests32)
# Remove these when completed.
-@LIB32_TRUE@am__append_5 =
+@LIB32_TRUE@am__append_6 =
# Build the libraries
-@LIB64_TRUE@am__append_6 = $(newcomplex_test_lib64)
+@LIB64_TRUE@am__append_7 = $(newcomplex_test_lib64)
# Build the programs during make check.
-@LIB64_TRUE@am__append_7 = $(newcomplex_tests64)
+@LIB64_TRUE@am__append_8 = $(newcomplex_tests64)
# Declare the tests.
-@LIB64_TRUE@am__append_8 = $(newcomplex_tests64)
-@LIB64_TRUE@am__append_9 =
+@LIB64_TRUE@am__append_9 = $(newcomplex_tests64)
+@LIB64_TRUE@am__append_10 =
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -2934,7 +2935,8 @@
AM_CPPFLAGS = -D_CRTBLD $(sysincludes)
AM_CFLAGS = $(cflags_underscores) -pipe -std=gnu99 @ADD_C_CXX_WARNING_FLAGS@ @ADD_C_ONLY_WARNING_FLAGS@
AM_CXXFLAGS = @ADD_C_CXX_WARNING_FLAGS@ @ADD_CXX_ONLY_WARNING_FLAGS@
-AM_DLLTOOLFLAGS = $(dlltool_underscores) -k --as=$(AS) --output-lib $@
+AM_DLLTOOLFLAGS = $(dlltool_underscores) -k --as=$(AS) --output-lib $@ \
+ $(am__append_1)
CPPFLAGS32 = -m32
CPPFLAGS64 = -m64
DLLTOOLFLAGS32 = --as-flags=--32 -m i386
@@ -3860,7 +3862,7 @@
testcases/t_setjmp testcases/t_sigv testcases/t_speed_powl \
testcases/t_stat testcases/t_stdint testcases/t_time \
testcases/t_tls1 testcases/t_trycatch testcases/t_wreaddir \
- $(am__append_1)
+ $(am__append_2)
testcases_tstmaincpp_SOURCES = testcases/tstmaincpp.cpp
testcases_t_trycatch_SOURCES = testcases/t_trycatch.cpp
testcases_t_intrinc_CFLAGS = -std=c99
@@ -3869,7 +3871,7 @@
# Do not specify TESTS = check_PROGRAMS, because some TESTS
# may not be check_PROGRAMS.
-check_LIBRARIES = $(am__append_2) $(am__append_6)
+check_LIBRARIES = $(am__append_3) $(am__append_7)
# Complex library check sources.
check_complex_lib_sources = \
diff --git a/mingw-w64-crt/configure b/mingw-w64-crt/configure
index 1242018..861692b 100755
--- a/mingw-w64-crt/configure
+++ b/mingw-w64-crt/configure
@@ -607,6 +607,8 @@
CPP
ENABLE_TESTS_UNICODE_FALSE
ENABLE_TESTS_UNICODE_TRUE
+DELAY_IMPORT_LIBS_FALSE
+DELAY_IMPORT_LIBS_TRUE
PRIVATE_EXPORTS_FALSE
PRIVATE_EXPORTS_TRUE
UNDERSCORES_FALSE
@@ -738,6 +740,7 @@
enable_wildcard
enable_leading_underscores
enable_private_exports
+enable_delay_import_libs
enable_tests_unicode
enable_warnings
'
@@ -1388,6 +1391,8 @@
calling convention
--enable-private-exports
Enable exporting private internal functions
+ --enable-delay-import-libs
+ Enable creation of delay-import libraries
--enable-tests-unicode Enable the unicode testsuite without testing the
compiler for support.
--enable-warnings[=0-5] Enable compile time warnings [default=3]
@@ -5136,6 +5141,34 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_private_exports" >&5
$as_echo "$enable_private_exports" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable delay import libs" >&5
+$as_echo_n "checking whether to enable delay import libs... " >&6; }
+# Check whether --enable-delay-import-libs was given.
+if test "${enable_delay_import_libs+set}" = set; then :
+ enableval=$enable_delay_import_libs;
+else
+ enable_delay_import_libs=no
+fi
+
+case $enable_delay_import_libs in #(
+ yes) :
+ ;; #(
+ no) :
+ ;; #(
+ *) :
+ as_fn_error "Please only use --enable-delay-import-libs or --disable-delay-import-libs, without any additional arguments." "$LINENO" 5 ;;
+esac
+ if test $enable_delay_import_libs = yes; then
+ DELAY_IMPORT_LIBS_TRUE=
+ DELAY_IMPORT_LIBS_FALSE='#'
+else
+ DELAY_IMPORT_LIBS_TRUE='#'
+ DELAY_IMPORT_LIBS_FALSE=
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_delay_import_libs" >&5
+$as_echo "$enable_delay_import_libs" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -municode" >&5
$as_echo_n "checking whether the compiler supports -municode... " >&6; }
# Check whether --enable-tests-unicode was given.
@@ -5806,6 +5839,10 @@
as_fn_error "conditional \"PRIVATE_EXPORTS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${DELAY_IMPORT_LIBS_TRUE}" && test -z "${DELAY_IMPORT_LIBS_FALSE}"; then
+ as_fn_error "conditional \"DELAY_IMPORT_LIBS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${ENABLE_TESTS_UNICODE_TRUE}" && test -z "${ENABLE_TESTS_UNICODE_FALSE}"; then
as_fn_error "conditional \"ENABLE_TESTS_UNICODE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/mingw-w64-crt/configure.ac b/mingw-w64-crt/configure.ac
index f2bba92..3f96014 100644
--- a/mingw-w64-crt/configure.ac
+++ b/mingw-w64-crt/configure.ac
@@ -164,6 +164,19 @@
AM_CONDITIONAL([PRIVATE_EXPORTS],[test $enable_private_exports = yes])
AC_MSG_RESULT([$enable_private_exports])
+AC_MSG_CHECKING([whether to enable delay import libs])
+AC_ARG_ENABLE([delay-import-libs],
+ [AS_HELP_STRING([--enable-delay-import-libs],
+ [Enable creation of delay-import libraries])],
+ [],
+ [enable_delay_import_libs=no])
+AS_CASE([$enable_delay_import_libs],
+ [yes],[],
+ [no],[],
+ [AC_MSG_ERROR([Please only use --enable-delay-import-libs or --disable-delay-import-libs, without any additional arguments.])])
+AM_CONDITIONAL([DELAY_IMPORT_LIBS],[test $enable_delay_import_libs = yes])
+AC_MSG_RESULT([$enable_delay_import_libs])
+
AC_MSG_CHECKING([whether the compiler supports -municode])
AC_ARG_ENABLE([tests-unicode],
[AS_HELP_STRING([--enable-tests-unicode],