summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2012-03-18 09:18:28 +0100
committerDavid Tardon <dtardon@redhat.com>2012-03-18 21:23:40 +0100
commit1118f57582aaa7275a8fe1d1460e1515c111ac2e (patch)
tree43b7c2752ad86d643709d4df6b08fc22d584fbf0
parentc7b319d2f1f1daef509cd1ac53035294b39a6299 (diff)
mingw: avoid hardcoded dll versions and deps
The idea is to use libo_MINGW_CHECK_DLL for libs that must be available (typically that would be the "main" library, e.g., libxml2 or libcurl) and libo_MINGW_TRY_DLL for possible dependencies (that may not be the same on different systems). All further references to the dlls are exclusively through the configured variables or defines set from these variables (e.g., instead of hardcoding libxml2-2.dll, use $(MINGW_LIBXML2_DLL)). The macros are documented in m4/mingw.m4 . Files that must be changed when adding a new dll: * configure.in * config_host.mk.in * external/mingw-dlls/makefile.mk * scp2/source/ooo/makefile.mk * scp2/source/ooo/mingw_dlls.scp
-rw-r--r--config_host.mk.in41
-rw-r--r--configure.in111
-rw-r--r--external/mingw-dlls/makefile.mk42
-rw-r--r--m4/mingw.m4170
-rw-r--r--scp2/source/ooo/makefile.mk160
-rw-r--r--scp2/source/ooo/mingw_dlls.scp163
6 files changed, 540 insertions, 147 deletions
diff --git a/config_host.mk.in b/config_host.mk.in
index 77d149871c11..b487e4f48fa3 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -276,13 +276,52 @@ export MFC_INCLUDE=@MFC_INCLUDE@
export MFC_LIB=@MFC_LIB@
export MINGWCXX=@MINGWCXX@
export MINGWSTRIP=@MINGWSTRIP@
+export MINGW_CAIRO_DLL=@MINGW_CAIRO_DLL@
export MINGW_CLIB_DIR=@MINGW_CLIB_DIR@
-export MINGW_EXTERNAL_DLLS=@MINGW_EXTERNAL_DLLS@
+export MINGW_CRYPTO_DLL=@MINGW_CRYPTO_DLL@
+export MINGW_CURL_DLL=@MINGW_CURL_DLL@
+export MINGW_DB_DLL=@MINGW_DB_DLL@
+export MINGW_EXPAT_DLL=@MINGW_EXPAT_DLL@
+export MINGW_FONTCONFIG_DLL=@MINGW_FONTCONFIG_DLL@
+export MINGW_FREETYPE_DLL=@MINGW_FREETYPE_DLL@
export MINGW_GCCDLL=@MINGW_GCCDLL@
+export MINGW_GCRYPT_DLL=@MINGW_GCRYPT_DLL@
+export MINGW_GNUTLS_DLL=@MINGW_GNUTLS_DLL@
+export MINGW_GPG_ERROR_DLL=@MINGW_GPG_ERROR_DLL@
+export MINGW_GRAPHITE2_DLL=@MINGW_GRAPHITE2_DLL@
export MINGW_GXXDLL=@MINGW_GXXDLL@
+export MINGW_HUNSPELL_DLL=@MINGW_HUNSPELL_DLL@
+export MINGW_HYPHEN_DLL=@MINGW_HYPHEN_DLL@
+export MINGW_ICUDATA_DLL=@MINGW_ICUDATA_DLL@
+export MINGW_ICUI18N_DLL=@MINGW_ICUI18N_DLL@
+export MINGW_ICUUC_DLL=@MINGW_ICUUC_DLL@
+export MINGW_IDN_DLL=@MINGW_IDN_DLL@
+export MINGW_INTL_DLL=@MINGW_INTL_DLL@
+export MINGW_LCMS2_DLL=@MINGW_LCMS2_DLL@
+export MINGW_LIBXML_DLL=@MINGW_LIBXML_DLL@
+export MINGW_LIBXSLT_DLL=@MINGW_LIBXSLT_DLL@
+export MINGW_LPSOLVE_DLL=@MINGW_LPSOLVE_DLL@
+export MINGW_MYTHES_DLL=@MINGW_MYTHES_DLL@
+export MINGW_NEON_DLL=@MINGW_NEON_DLL@
+export MINGW_NSPR4_DLL=@MINGW_NSPR4_DLL@
+export MINGW_NSS3_DLL=@MINGW_NSS3_DLL@
+export MINGW_NSSUTIL3_DLL=@MINGW_NSSUTIL3_DLL@
+export MINGW_PIXMAN_DLL=@MINGW_PIXMAN_DLL@
+export MINGW_PLC4_DLL=@MINGW_PLC4_DLL@
+export MINGW_PLDS4_DLL=@MINGW_PLDS4_DLL@
+export MINGW_PNG15_DLL=@MINGW_PNG15_DLL@
+export MINGW_RAPTOR_DLL=@MINGW_RAPTOR_DLL@
+export MINGW_RASQAL_DLL=@MINGW_RASQAL_DLL@
+export MINGW_REDLAND_DLL=@MINGW_REDLAND_DLL@
export MINGW_SHARED_GCCLIB=@MINGW_SHARED_GCCLIB@
export MINGW_SHARED_GXXLIB=@MINGW_SHARED_GXXLIB@
export MINGW_SHARED_LIBSTDCPP=@MINGW_SHARED_LIBSTDCPP@
+export MINGW_SQLITE3_DLL=@MINGW_SQLITE3_DLL@
+export MINGW_SSH2_DLL=@MINGW_SSH2_DLL@
+export MINGW_SSL3_DLL=@MINGW_SSL3_DLL@
+export MINGW_SSL_DLL=@MINGW_SSL_DLL@
+export MINGW_TASN1_DLL=@MINGW_TASN1_DLL@
+export MINGW_ZLIB_DLL=@MINGW_ZLIB_DLL@
export MKDEPENDSOLVER=TRUE
export ML_EXE=@ML_EXE@
export MOC4=@MOC4@
diff --git a/configure.in b/configure.in
index b7c22760fed4..fa5cac5473b0 100644
--- a/configure.in
+++ b/configure.in
@@ -11,7 +11,6 @@ save_CXX=$CXX
BUILD_TYPE="LibO"
SCPDEFS=""
GIT_REPO_NAMES=""
-MINGW_EXTERNAL_DLLS=""
LO_PATH= # used by path_munge to construct a PATH variable
PathFormat()
@@ -5807,13 +5806,14 @@ if test "$with_system_expat" = "yes"; then
[AC_MSG_ERROR(expat.h not found. install expat)], [])
AC_CHECK_LIB([expat], [XML_ParserCreate], [:],
[AC_MSG_RESULT(expat library not found or functional.)], [])
- libo_ADD_MINGW_EXTERNAL_DLLS([libexpat],[MINGW_EXTERNAL_DLLS],[libexpat-1.dll])
+ libo_MINGW_CHECK_DLL([EXPAT], [libexpat])
else
AC_MSG_RESULT([internal])
SYSTEM_EXPAT=NO
BUILD_TYPE="$BUILD_TYPE EXPAT"
fi
AC_SUBST(SYSTEM_EXPAT)
+AC_SUBST([MINGW_EXPAT_DLL])
dnl ===================================================================
dnl Check for system libcdr
@@ -5900,6 +5900,7 @@ if test "$with_system_lcms2" = "yes"; then
AC_MSG_RESULT([external])
SYSTEM_LCMS2=YES
PKG_CHECK_MODULES( LCMS2, lcms2 )
+ libo_MINGW_CHECK_DLL([LCMS2], [liblcms2])
else
AC_MSG_RESULT([internal])
SYSTEM_LCMS2=NO
@@ -5908,6 +5909,7 @@ fi
AC_SUBST(SYSTEM_LCMS2)
AC_SUBST(LCMS2_CFLAGS)
AC_SUBST(LCMS2_LIBS)
+AC_SUBST([MINGW_LCMS2_DLL])
dnl ===================================================================
dnl Check for system cppunit
@@ -6022,7 +6024,7 @@ if test "$with_system_libxml" = "yes"; then
AC_MSG_ERROR([xsltproc is required])
fi
- libo_ADD_MINGW_EXTERNAL_DLLS([libxslt],[MINGW_EXTERNAL_DLLS],[libxslt-1.dll])
+ libo_MINGW_CHECK_DLL([LIBXSLT], [libxslt])
else
AC_MSG_RESULT([internal])
SYSTEM_LIBXSLT=NO
@@ -6044,6 +6046,7 @@ AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
AC_SUBST(LIBXSLT_CFLAGS)
AC_SUBST(LIBXSLT_LIBS)
AC_SUBST(XSLTPROC)
+AC_SUBST([MINGW_LIBXSLT_DLL])
# ===================================================================
# Check for system libxml
@@ -6072,7 +6075,8 @@ if test "$with_system_libxml" = "yes"; then
AC_MSG_ERROR([xmllint is required])
fi
- libo_ADD_MINGW_EXTERNAL_DLLS([libxml2],[MINGW_EXTERNAL_DLLS],[zlib1.dll libxml2-2.dll])
+ libo_MINGW_CHECK_DLL([LIBXML],[libxml2])
+ libo_MINGW_TRY_DLL([ZLIB],[zlib1])
else
AC_MSG_RESULT([internal])
SYSTEM_LIBXML=NO
@@ -6082,7 +6086,8 @@ AC_SUBST(SYSTEM_LIBXML)
AC_SUBST(LIBXML_CFLAGS)
AC_SUBST(LIBXML_LIBS)
AC_SUBST(XMLLINT)
-
+AC_SUBST([MINGW_LIBXML_DLL])
+AC_SUBST([MINGW_ZLIB_DLL])
dnl ===================================================================
dnl Checks for Python
dnl ===================================================================
@@ -6309,7 +6314,7 @@ or install the Berkeley db development package.])
fi
SCPDEFS="$SCPDEFS -DSYSTEM_DB"
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libdb-4.8.dll"
+ libo_MINGW_CHECK_DLL([DB], [libdb])
elif test $_os != iOS -a $_os != Android; then
AC_MSG_RESULT([internal])
SYSTEM_DB=NO
@@ -6321,6 +6326,7 @@ AC_SUBST(SYSTEM_DB)
AC_SUBST(SYSTEM_DB_CFLAGS)
AC_SUBST(DB_LIB)
AC_SUBST(DB_CPPLIB)
+AC_SUBST([MINGW_DB_DLL])
AC_MSG_CHECKING([whether to build the MySQL Connector extension])
if test "x$enable_ext_mysql_connector" = "xyes" -a "x$enable_extension_integration" != "xno"; then
@@ -6802,7 +6808,18 @@ if test "$with_system_curl" = "yes"; then
;;
esac
- libo_ADD_MINGW_EXTERNAL_DLLS([libcurl],[MINGW_EXTERNAL_DLLS],[libintl-8.dll libidn-11.dll libnspr4.dll nssutil3.dll libplc4.dll libplds4.dll nss3.dll ssl3.dll libgpg-error-0.dll libgcrypt-11.dll libssh2-1.dll libcurl-4.dll])
+ libo_MINGW_CHECK_DLL([CURL], [libcurl])
+ libo_MINGW_TRY_DLL([INTL], [libintl])
+ libo_MINGW_TRY_DLL([IDN], [libidn])
+ libo_MINGW_TRY_DLL([NSPR4], [libnspr4])
+ libo_MINGW_TRY_DLL([NSSUTIL3], [nssutil3])
+ libo_MINGW_TRY_DLL([PLC4], [libplc4])
+ libo_MINGW_TRY_DLL([PLDS4], [libplds4])
+ libo_MINGW_TRY_DLL([NSS3], [nss3])
+ libo_MINGW_TRY_DLL([SSL3], [ssl3])
+ libo_MINGW_TRY_DLL([GPG_ERROR], [libgpg-error])
+ libo_MINGW_TRY_DLL([GCRYPT], [libgcrypt])
+ libo_MINGW_TRY_DLL([SSH2], [libssh2])
else
AC_MSG_RESULT([internal])
SYSTEM_CURL=NO
@@ -6811,6 +6828,18 @@ fi
AC_SUBST(SYSTEM_CURL)
AC_SUBST(CURL_CFLAGS)
AC_SUBST(CURL_LIBS)
+AC_SUBST([MINGW_CURL_DLL])
+AC_SUBST([MINGW_GCRYPT_DLL])
+AC_SUBST([MINGW_GPG_ERROR_DLL])
+AC_SUBST([MINGW_IDN_DLL])
+AC_SUBST([MINGW_INTL_DLL])
+AC_SUBST([MINGW_NSPR4_DLL])
+AC_SUBST([MINGW_NSS3_DLL])
+AC_SUBST([MINGW_NSSUTIL3_DLL])
+AC_SUBST([MINGW_PLC4_DLL])
+AC_SUBST([MINGW_PLDS4_DLL])
+AC_SUBST([MINGW_SSH2_DLL])
+AC_SUBST([MINGW_SSL3_DLL])
dnl ===================================================================
dnl Check for system boost
@@ -7418,7 +7447,9 @@ if test "$with_system_icu" = "yes"; then
fi
fi
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS icui18n$ICU_MAJOR$ICU_MINOR.dll icuuc$ICU_MAJOR$ICU_MINOR.dll icudata$ICU_MAJOR$ICU_MINOR.dll"
+ libo_MINGW_CHECK_DLL([ICUDATA], [icudata][$ICU_MAJOR][$ICU_MINOR])
+ libo_MINGW_CHECK_DLL([ICU18N], [icui18n][$ICU_MAJOR][$ICU_MINOR])
+ libo_MINGW_CHECK_DLL([ICUUC], [icuuc][$ICU_MAJOR][$ICU_MINOR])
else
AC_MSG_RESULT([internal])
SYSTEM_ICU="NO"
@@ -7434,6 +7465,9 @@ AC_SUBST(ICU_MAJOR)
AC_SUBST(ICU_MINOR)
AC_SUBST(ICU_MICRO)
AC_SUBST(ICU_RECLASSIFIED_CLOSE_PARENTHESIS)
+AC_SUBST([MINGW_ICUDATA_DLL])
+AC_SUBST([MINGW_ICUI18N_DLL])
+AC_SUBST([MINGW_ICUUC_DLL])
dnl ===================================================================
dnl Graphite
@@ -7448,7 +7482,7 @@ if test "$_os" = "WINNT" -o "$_os" = "Linux" && test "$enable_graphite" = "" -o
AC_MSG_RESULT([external])
SYSTEM_GRAPHITE=YES
PKG_CHECK_MODULES( GRAPHITE, graphite2 >= 0.9.3 )
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libgraphite2.dll"
+ libo_MINGW_CHECK_DLL([GRAPHITE2], [libgraphite2])
else
AC_MSG_RESULT([internal])
SYSTEM_GRAPHITE=NO
@@ -7461,6 +7495,7 @@ AC_SUBST(ENABLE_GRAPHITE)
AC_SUBST(SYSTEM_GRAPHITE)
AC_SUBST(GRAPHITE_LIBS)
AC_SUBST(GRAPHITE_CFLAGS)
+AC_SUBST([MINGW_GRAPHITE2_DLL])
dnl ===================================================================
dnl SampleICC
@@ -7647,7 +7682,9 @@ if test "$with_system_neon" = "yes"; then
NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
NEON_CFLAGS="$NEON_CFLAGS -DSYSTEM_NEON -DUSE_DAV_LOCKS=1"
SYSTEM_NEON=YES
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libtasn1-3.dll libgnutls-26.dll libneon-27.dll"
+ libo_MINGW_CHECK_DLL([NEON], [libneon])
+ libo_MINGW_TRY_DLL([TASN1], [libtasn1])
+ libo_MINGW_TRY_DLL([GNUTLS], [libgnutls])
else
AC_MSG_RESULT([internal])
SYSTEM_NEON=NO
@@ -7659,6 +7696,9 @@ AC_SUBST(SYSTEM_NEON)
AC_SUBST(NEON_VERSION)
AC_SUBST(NEON_LIBS)
AC_SUBST(NEON_CFLAGS)
+AC_SUBST([MINGW_GNUTLS_DLL])
+AC_SUBST([MINGW_NEON_DLL])
+AC_SUBST([MINGW_TASN1_DLL])
fi
dnl ===================================================================
@@ -7681,7 +7721,8 @@ if test "$with_system_openssl" = "yes"; then
PKG_CHECK_MODULES( OPENSSL, openssl )
fi
SYSTEM_OPENSSL=YES
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libssl-8.dll libcrypto-8.dll"
+ libo_MINGW_CHECK_DLL([SSL], [libssl])
+ libo_MINGW_CHECK_DLL([CRYPTO], [libcrypto])
else
AC_MSG_RESULT([internal])
SYSTEM_OPENSSL=NO
@@ -7690,6 +7731,8 @@ fi
AC_SUBST(SYSTEM_OPENSSL)
AC_SUBST(OPENSSL_CFLAGS)
AC_SUBST(OPENSSL_LIBS)
+AC_SUBST([MINGW_SSL_DLL])
+AC_SUBST([MINGW_CRYPTO_DLL])
dnl ===================================================================
dnl Check for system redland
@@ -7700,7 +7743,10 @@ if test "$with_system_redland" = "yes"; then
SYSTEM_REDLAND=YES
dnl versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
PKG_CHECK_MODULES(REDLAND, redland >= 1.0.8)
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libraptor-1.dll librasqal-2.dll libsqlite3-0.dll librdf-0.dll"
+ libo_MINGW_CHECK_DLL([REDLAND], [librdf])
+ libo_MINGW_TRY_DLL([RAPTOR], [libraptor])
+ libo_MINGW_TRY_DLL([RASQAL], [librasqal])
+ libo_MINGW_TRY_DLL([SQLITE3], [libsqlite3])
else
AC_MSG_RESULT([internal])
BUILD_TYPE="$BUILD_TYPE REDLAND"
@@ -7709,6 +7755,10 @@ fi
AC_SUBST(SYSTEM_REDLAND)
AC_SUBST(REDLAND_CFLAGS)
AC_SUBST(REDLAND_LIBS)
+AC_SUBST([MINGW_RAPTOR_DLL])
+AC_SUBST([MINGW_RASQAL_DLL])
+AC_SUBST([MINGW_REDLAND_DLL])
+AC_SUBST([MINGW_SQLITE3_DLL])
dnl ===================================================================
dnl Check for system hunspell
@@ -7730,7 +7780,7 @@ if test "$with_system_hunspell" = "yes"; then
HUNSPELL_LIBS=-lhunspell
fi
AC_LANG_POP([C++])
- libo_ADD_MINGW_EXTERNAL_DLLS([libhunspell],[MINGW_EXTERNAL_DLLS],[libhunspell-1.3-0.dll])
+ libo_MINGW_CHECK_DLL([HUNSPELL], [libhunspell-1.3])
else
AC_MSG_RESULT([internal])
SYSTEM_HUNSPELL=NO
@@ -7739,6 +7789,7 @@ fi
AC_SUBST(SYSTEM_HUNSPELL)
AC_SUBST(HUNSPELL_CFLAGS)
AC_SUBST(HUNSPELL_LIBS)
+AC_SUBST([MINGW_HUNSPELL_DLL])
dnl ===================================================================
dnl Checking for altlinuxhyph
@@ -7762,7 +7813,7 @@ if test "$with_system_altlinuxhyph" = "yes"; then
AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
[ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
fi
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libhyphen-0.dll"
+ libo_MINGW_CHECK_DLL([HYPHEN], [libhyphen])
else
AC_MSG_RESULT([internal])
SYSTEM_HYPH=NO
@@ -7770,6 +7821,7 @@ else
fi
AC_SUBST(SYSTEM_HYPH)
AC_SUBST(HYPHEN_LIB)
+AC_SUBST([MINGW_HYPHEN_DLL])
dnl ===================================================================
dnl Checking for mythes
@@ -7794,7 +7846,7 @@ if test "$with_system_mythes" = "yes"; then
fi
fi
AC_LANG_POP([C++])
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS libmythes-1.2-0.dll"
+ libo_MINGW_CHECK_DLL([MYTHES], [libmythes-1.2])
else
AC_MSG_RESULT([internal])
SYSTEM_MYTHES=NO
@@ -7803,6 +7855,7 @@ fi
AC_SUBST(SYSTEM_MYTHES)
AC_SUBST(MYTHES_CFLAGS)
AC_SUBST(MYTHES_LIBS)
+AC_SUBST([MINGW_MYTHES_DLL])
dnl ===================================================================
dnl Checking for lpsolve
@@ -7820,13 +7873,14 @@ if test "$with_system_lpsolve" = "yes"; then
AC_CHECK_LIB([lpsolve55], [make_lp], [:],
[ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
LIBS=$save_LIBS
- MINGW_EXTERNAL_DLLS="$MINGW_EXTERNAL_DLLS lpsolve55.dll"
+ libo_MINGW_CHECK_DLL([LPSOLVE], [lpsolve55])
else
AC_MSG_RESULT([internal])
SYSTEM_LPSOLVE=NO
BUILD_TYPE="$BUILD_TYPE LPSOLVE"
fi
AC_SUBST(SYSTEM_LPSOLVE)
+AC_SUBST([MINGW_LPSOLVE_DLL])
dnl ===================================================================
dnl Checking for libexttextcat
@@ -9929,7 +9983,11 @@ if test "$enable_cairo_canvas" = "yes" -a "$with_system_cairo" = "yes"; then
AC_LANG_POP([C])
fi
fi
- libo_ADD_MINGW_EXTERNAL_DLLS([libcairo],[MINGW_EXTERNAL_DLLS],[libfontconfig-1.dll libfreetype-6.dll libpixman-1-0.dll libpng15-15.dll libcairo-2.dll])
+ libo_MINGW_CHECK_DLL([CAIRO], [libcairo])
+ libo_MINGW_TRY_DLL([FONTCONFIG], [libfontconfig])
+ libo_MINGW_TRY_DLL([FREETYPE], [libfreetype])
+ libo_MINGW_TRY_DLL([PIXMAN], [libpixman])
+ libo_MINGW_TRY_DLL([PNG15], [libpng15])
else
AC_MSG_RESULT([no])
@@ -9955,6 +10013,11 @@ fi
AC_SUBST(SYSTEM_CAIRO)
AC_SUBST(CAIRO_CFLAGS)
AC_SUBST(CAIRO_LIBS)
+AC_SUBST([MINGW_CAIRO_DLL])
+AC_SUBST([MINGW_FONTCONFIG_DLL])
+AC_SUBST([MINGW_FREETYPE_DLL])
+AC_SUBST([MINGW_PIXMAN_DLL])
+AC_SUBST([MINGW_PNG15_DLL])
dnl ===================================================================
@@ -11012,20 +11075,6 @@ AC_SUBST(WIN_TOUCH)
AC_SUBST(BUILD_TYPE)
-if test "$WITH_MINGW" != "yes"; then
- MINGW_EXTERNAL_DLLS=
-else
- mingw_dlldir=`$CC -print-sysroot`/mingw/bin
- for DLL in $MINGW_EXTERNAL_DLLS; do
- AC_MSG_CHECKING([for $DLL])
- if ! test -f "$mingw_dlldir/$DLL"; then
- AC_MSG_ERROR([Could not find $DLL, install the appropriate mingw32-<package>, not only mingw32-<package>-devel.])
- fi
- AC_MSG_RESULT([$mingw_dlldir/$DLL])
- done
-fi
-AC_SUBST(MINGW_EXTERNAL_DLLS)
-
AC_SUBST(SOLARINC)
AC_SUBST(SOLARLIB)
diff --git a/external/mingw-dlls/makefile.mk b/external/mingw-dlls/makefile.mk
index e2e51a0b5697..7ca7cacc7dca 100644
--- a/external/mingw-dlls/makefile.mk
+++ b/external/mingw-dlls/makefile.mk
@@ -41,7 +41,47 @@ dummy:
.ELSE
-MINGW_DLLS:=$(MINGW_EXTERNAL_DLLS)
+MINGW_DLLS:= \
+ $(MINGW_CAIRO_DLL) \
+ $(MINGW_CRYPTO_DLL) \
+ $(MINGW_CURL_DLL) \
+ $(MINGW_DB_DLL) \
+ $(MINGW_EXPAT_DLL) \
+ $(MINGW_FONTCONFIG_DLL) \
+ $(MINGW_FREETYPE_DLL) \
+ $(MINGW_GCRYPT_DLL) \
+ $(MINGW_GNUTLS_DLL) \
+ $(MINGW_GPG_ERROR_DLL) \
+ $(MINGW_GRAPHITE2_DLL) \
+ $(MINGW_HUNSPELL_DLL) \
+ $(MINGW_HYPHEN_DLL) \
+ $(MINGW_ICUDATA_DLL) \
+ $(MINGW_ICUI18N_DLL) \
+ $(MINGW_ICUUC_DLL) \
+ $(MINGW_IDN_DLL) \
+ $(MINGW_INTL_DLL) \
+ $(MINGW_LCMS2_DLL) \
+ $(MINGW_LIBXML_DLL) \
+ $(MINGW_LIBXSLT_DLL) \
+ $(MINGW_LPSOLVE_DLL) \
+ $(MINGW_MYTHES_DLL) \
+ $(MINGW_NEON_DLL) \
+ $(MINGW_NSPR4_DLL) \
+ $(MINGW_NSS3_DLL) \
+ $(MINGW_NSSUTIL3_DLL) \
+ $(MINGW_PIXMAN_DLL) \
+ $(MINGW_PLC4_DLL) \
+ $(MINGW_PLDS4_DLL) \
+ $(MINGW_PNG15_DLL) \
+ $(MINGW_RAPTOR_DLL) \
+ $(MINGW_RASQAL_DLL) \
+ $(MINGW_REDLAND_DLL) \
+ $(MINGW_SQLITE3_DLL) \
+ $(MINGW_SSH2_DLL) \
+ $(MINGW_SSL3_DLL) \
+ $(MINGW_SSL_DLL) \
+ $(MINGW_TASN1_DLL) \
+ $(MINGW_ZLIB_DLL)
.IF "$(MINGW_SHARED_GCCLIB)" == "YES"
MINGW_DLLS+=$(MINGW_GCCDLL)
diff --git a/m4/mingw.m4 b/m4/mingw.m4
index 35d638c9565d..1cf5649e5014 100644
--- a/m4/mingw.m4
+++ b/m4/mingw.m4
@@ -1,82 +1,104 @@
-# libo_FIND_MINGW_EXTERNAL_DLLS([library-names],[variable],[?exclude],[?default-value])
-# uses: CC, SED, WITH_MINGW
-# --------------------------------------------------------------------
-AC_DEFUN([libo_FIND_MINGW_EXTERNAL_DLLS],
-[if test "$WITH_MINGW" = yes -a -n "$CC"; then
- _libo_mingw_libdir=`$CC -print-sysroot`/mingw/lib
- _libo_mingw_found_la=
- _libo_mingw_test_la([$1],[_libo_mingw_found_la],[$_libo_mingw_libdir])
- if test "$_libo_mingw_found_la" = yes; then
- _libo_mingw_find_dlls([$1],[$2],[$3],[$_libo_mingw_libdir])
- else
- # no .la files found, use defaults
- $2="$4"
- fi
-fi[]dnl
-]) # libo_FIND_MINGW_EXTERNAL_DLLS
+dnl Version: MPL 1.1 / GPLv3+ / LGPLv3+
+dnl
+dnl The contents of this file are subject to the Mozilla Public License Version
+dnl 1.1 (the "License"); you may not use this file except in compliance with
+dnl the License or as specified alternatively below. You may obtain a copy of
+dnl the License at http://www.mozilla.org/MPL/
+dnl
+dnl Software distributed under the License is distributed on an "AS IS" basis,
+dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+dnl for the specific language governing rights and limitations under the
+dnl License.
+dnl
+dnl Major Contributor(s):
+dnl Copyright (C) 2012 Red Hat, Inc., David Tardon <dtardon@redhat.com>
+dnl (initial developer)
+dnl
+dnl All Rights Reserved.
+dnl
+dnl For minor contributions see the git repository.
+dnl
+dnl Alternatively, the contents of this file may be used under the terms of
+dnl either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+dnl the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+dnl in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+dnl instead of those above.
-# libo_ADD_MINGW_EXTERNAL_DLLS([library-names],[variable],[?default-value])
-# uses: CC, SED, WITH_MINGW
-# --------------------------------------------------------
-AC_DEFUN([libo_ADD_MINGW_EXTERNAL_DLLS],
-[libo_FIND_MINGW_EXTERNAL_DLLS([$1],[_libo_mingw_found_dlls],[$$2],[$3])
-if test -n "$_libo_mingw_found_dlls"; then
- $2="$$2 $_libo_mingw_found_dlls"
-fi[]dnl
-]) # libo_ADD_MINGW_EXTERNAL_DLLS
+# libo_MINGW_CHECK_DLL(variable-infix,dll-name-stem,[action-if-found],[action-if-not-found])
+#
+# Checks for presence of dll dll-name-stem . Sets variable
+# MINGW_variable-infix_DLL if found, issues an error otherwise.
+#
+# It recognizes these dll patterns (x, y match any character, but they
+# are supposed to be numerals):
+# * name-x.dll
+# * name-xy.dll
+# * name-x.y.dll
+# * name.dll
+#
+#
+# Example:
+# libo_MINGW_CHECK_DLL([EXPAT], [libexpat])
+# might result in MINGW_EXPAT_DLL=libexpat-1.dll being set.
+#
+# uses CC, WITH_MINGW
+# ------------------------------------------------------------------------------------------
+AC_DEFUN([libo_MINGW_CHECK_DLL],
+[AC_ARG_VAR([MINGW_][$1][_DLL],[output variable containing the found dll name])dnl
-# _libo_mingw_get_libtool_var([key],[lib],[out-var])
-m4_define([_libo_mingw_get_libtool_var],
-[$3=`$SED -n -e '/^$1=/{' -e "s/.*='//" -e "s/'//" -e p -e '}' $2`[]dnl
-]) # _libo_mingw_get_libtool_var
+if test -n "$WITH_MINGW"; then
+ dnl TODO move this to configure: there is no need to call $CC more than once
+ _libo_mingw_dlldir=`$CC -print-sysroot`/mingw/bin
+ _libo_mingw_dllname=
+ AC_MSG_CHECKING([for $2 dll])
-# _libo_mingw_find_dll([library],[dlls],[out-var])
-m4_define([_libo_mingw_find_dll],
-[_libo_mingw_get_libtool_var([dlname],[$1],[_libo_mingw_dlname])
-_libo_mingw_dlname=`basename $_libo_mingw_dlname`
-_libo_mingw_dll_present=
-for _libo_mingw_dll in $2; do
- if test "$_libo_mingw_dlname" = "$_libo_mingw_dll"; then
- _libo_mingw_dll_present=yes
- break
+ dnl try one- or two-numbered version
+ _libo_mingw_try_dll([$2][-?.dll])
+ if test "$_libo_mingw_dllname" = ""; then
+ _libo_mingw_try_dll([$2][-??.dll])
+ fi
+ dnl maybe the version contains a dot (e.g., libdb)
+ if test "$_libo_mingw_dllname" = ""; then
+ _libo_mingw_try_dll([$2][-?.?.dll])
+ fi
+ dnl maybe it is not versioned
+ if test "$_libo_mingw_dllname" = ""; then
+ _libo_mingw_try_dll([$2][.dll])
fi
-done
-if test -z "$_libo_mingw_dll_present"; then
- $3="$_libo_mingw_dlname"
-fi[]dnl
-]) # _libo_mingw_find_dll
-# _libo_mingw_find_dlls([libraries],[dlls],[out-var],[libdir])
-m4_define([_libo_mingw_find_dlls],
-[_libo_mingw_new_dlls=
-for _libo_mingw_lib in $1; do
- _libo_mingw_lib="$4/$_libo_mingw_lib.la"
- _libo_mingw_new_dll=
- _libo_mingw_find_dll([$_libo_mingw_lib],[$3 $_libo_mingw_new_dlls],[_libo_mingw_new_dll])
- if test -n "$_libo_mingw_new_dll"; then
- _libo_mingw_new_dlls="$_libo_mingw_new_dlls $_libo_mingw_new_dll"
+ if test "$_libo_mingw_dllname" = ""; then
+ AC_MSG_RESULT([no])
+ m4_default([$4],[AC_MSG_ERROR([no dll found for $2])])
+ else
+ AC_MSG_RESULT([$_libo_mingw_dllname])
+ [MINGW_][$1][_DLL]="$_libo_mingw_dllname"
+ m4_default([$3],[])
fi
+fi[]dnl
+]) # libo_MINGW_CHECK_DLL
+
+# libo_MINGW_TRY_DLL(variable-infix,dll-name-stem)
+#
+# Checks for presence of dll dll-name-stem . Sets variable
+# MINGW_variable-infix_DLL if found, does nothing otherwise.
+#
+# See libo_MINGW_CHECK_DLL for further info.
+#
+# uses CC, WITH_MINGW
+# ------------------------------------------------
+AC_DEFUN([libo_MINGW_TRY_DLL],
+[dnl shortcut: do not test for already found dlls
+if test -z "$[MINGW_][$1][_DLL]"; then
+ libo_MINGW_CHECK_DLL([$1],[$2],[[]],[[]])
+fi[]dnl
+]) # libo_MINGW_TRY_DLL
- _libo_mingw_get_libtool_var([dependency_libs],[$_libo_mingw_lib],[_libo_mingw_dep_libs])
- for _libo_mingw_dep_lib in $_libo_mingw_dep_libs; do
- if test "${_libo_mingw_dep_lib%.la}" != "$_libo_mingw_dep_lib"; then
- _libo_mingw_new_dll=''
- _libo_mingw_find_dll([$_libo_mingw_dep_lib],[$3 $_libo_mingw_new_dlls],[_libo_mingw_new_dll])
- if test -n "$_libo_mingw_new_dll"; then
- _libo_mingw_new_dlls="$_libo_mingw_new_dlls $_libo_mingw_new_dll"
- fi
- fi
- done
-done
-$2="$_libo_mingw_new_dlls"[]dnl
-]) # _libo_mingw_find_dlls
+# _libo_mingw_try_dll(dll-name,dll-dir)
+m4_define([_libo_mingw_try_dll],
+[_libo_mingw_trying_dll=`ls "[$_libo_mingw_dlldir]"/[$1] 2>/dev/null`
+if test -f "$_libo_mingw_trying_dll"; then
+ _libo_mingw_dllname=`basename "$_libo_mingw_trying_dll"`
+fi[]dnl
+]) # _libo_mingw_try_dll
-# _libo_mingw_test_la([libraries],[out-var],[libdir])
-m4_define([_libo_mingw_test_la],
-[for _libo_mingw_lib in $1; do
- if test -f "$3/$_libo_mingw_lib.la"; then
- $2=yes
- break
- fi
-done[]dnl
-]) # _libo_mingw_test_la
+dnl vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/scp2/source/ooo/makefile.mk b/scp2/source/ooo/makefile.mk
index 0987f6f3b37f..f0ceb8333ab3 100644
--- a/scp2/source/ooo/makefile.mk
+++ b/scp2/source/ooo/makefile.mk
@@ -257,6 +257,166 @@ SCPDEFS+=-DMINGW_GCCDLL=\""$(MINGW_GCCDLL)"\"
SCPDEFS+=-DMINGW_GXXDLL=\""$(MINGW_GXXDLL)"\"
.ENDIF
+.IF "$(MINGW_CAIRO_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_CAIRO_DLL -DMINGW_CAIRO_DLL=\""$(MINGW_CAIRO_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_CURL_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_CURL_DLL -DMINGW_CURL_DLL=\""$(MINGW_CURL_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_CRYPTO_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_CRYPTO_DLL -DMINGW_CRYPTO_DLL=\""$(MINGW_CRYPTO_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_DB_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_DB_DLL -DMINGW_DB_DLL=\""$(MINGW_DB_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_EXPAT_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_EXPAT_DLL -DMINGW_EXPAT_DLL=\""$(MINGW_EXPAT_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_FONTCONFIG_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_FONTCONFIG_DLL -DMINGW_FONTCONFIG_DLL=\""$(MINGW_FONTCONFIG_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_FREETYPE_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_FREETYPE_DLL -DMINGW_FREETYPE_DLL=\""$(MINGW_FREETYPE_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_GCRYPT_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_GCRYPT_DLL -DMINGW_GCRYPT_DLL=\""$(MINGW_GCRYPT_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_GNUTLS_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_GNUTLS_DLL -DMINGW_GNUTLS_DLL=\""$(MINGW_GNUTLS_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_GPG_ERROR_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_GPG_ERROR_DLL -DMINGW_GPG_ERROR_DLL=\""$(MINGW_GPG_ERROR_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_GRAPHITE2_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_GRAPHITE2_DLL -DMINGW_GRAPHITE2_DLL=\""$(MINGW_GRAPHITE2_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_HUNSPELL_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_HUNSPELL_DLL -DMINGW_HUNSPELL_DLL=\""$(MINGW_HUNSPELL_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_HYPHEN_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_HYPHEN_DLL -DMINGW_HYPHEN_DLL=\""$(MINGW_HYPHEN_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_ICUDATA_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_ICUDATA_DLL -DMINGW_ICUDATA_DLL=\""$(MINGW_ICUDATA_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_ICUI18N_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_ICUI18N_DLL -DMINGW_ICUI18N_DLL=\""$(MINGW_ICUI18N_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_ICUUC_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_ICUUC_DLL -DMINGW_ICUUC_DLL=\""$(MINGW_ICUUC_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_IDN_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_IDN_DLL -DMINGW_IDN_DLL=\""$(MINGW_IDN_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_INTL_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_INTL_DLL -DMINGW_INTL_DLL=\""$(MINGW_INTL_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_LCMS2_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_LCMS2_DLL -DMINGW_LCMS2_DLL=\""$(MINGW_LCMS2_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_LIBXML_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_LIBXML_DLL -DMINGW_LIBXML_DLL=\""$(MINGW_LIBXML_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_LIBXSLT_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_LIBXSLT_DLL -DMINGW_LIBXSLT_DLL=\""$(MINGW_LIBXSLT_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_LPSOLVE_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_LPSOLVE_DLL -DMINGW_LPSOLVE_DLL=\""$(MINGW_LPSOLVE_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_MYTHES_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_MYTHES_DLL -DMINGW_MYTHES_DLL=\""$(MINGW_MYTHES_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_NEON_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_NEON_DLL -DMINGW_NEON_DLL=\""$(MINGW_NEON_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_NSPR4_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_NSPR4_DLL -DMINGW_NSPR4_DLL=\""$(MINGW_NSPR4_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_NSS3_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_NSS3_DLL -DMINGW_NSS3_DLL=\""$(MINGW_NSS3_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_NSSUTIL3_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_NSSUTIL3_DLL -DMINGW_NSSUTIL3_DLL=\""$(MINGW_NSSUTIL3_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_PIXMAN_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_PIXMAN_DLL -DMINGW_PIXMAN_DLL=\""$(MINGW_PIXMAN_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_PLC4_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_PLC4_DLL -DMINGW_PLC4_DLL=\""$(MINGW_PLC4_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_PLDS4_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_PLDS4_DLL -DMINGW_PLDS4_DLL=\""$(MINGW_PLDS4_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_PNG15_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_PNG15_DLL -DMINGW_PNG15_DLL=\""$(MINGW_PNG15_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_RAPTOR_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_RAPTOR_DLL -DMINGW_RAPTOR_DLL=\""$(MINGW_RAPTOR_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_RASQAL_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_RASQAL_DLL -DMINGW_RASQAL_DLL=\""$(MINGW_RASQAL_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_REDLAND_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_REDLAND_DLL -DMINGW_REDLAND_DLL=\""$(MINGW_REDLAND_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_SQLITE3_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_SQLITE3_DLL -DMINGW_SQLITE3_DLL=\""$(MINGW_SQLITE3_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_SSH2_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_SSH2_DLL -DMINGW_SSH2_DLL=\""$(MINGW_SSH2_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_SSL_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_SSL_DLL -DMINGW_SSL_DLL=\""$(MINGW_SSL_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_SSL3_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_SSL3_DLL -DMINGW_SSL3_DLL=\""$(MINGW_SSL3_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_TASN1_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_TASN1_DLL -DMINGW_TASN1_DLL=\""$(MINGW_TASN1_DLL)"\"
+.ENDIF
+
+.IF "$(MINGW_ZLIB_DLL)" != ""
+SCPDEFS += -DNEEDS_MINGW_ZLIB_DLL -DMINGW_ZLIB_DLL=\""$(MINGW_ZLIB_DLL)"\"
+.ENDIF
+
.IF "$(SYSTEM_GDKPIXBUF)" == "YES"
SCPDEFS+=-DSYSTEM_GDKPIXBUF
.ENDIF
diff --git a/scp2/source/ooo/mingw_dlls.scp b/scp2/source/ooo/mingw_dlls.scp
index 8e4d7eeae14f..062d4ae3401c 100644
--- a/scp2/source/ooo/mingw_dlls.scp
+++ b/scp2/source/ooo/mingw_dlls.scp
@@ -37,92 +37,175 @@
Styles = (PACKED); \
End
+#define MINGW_DLL_COND(cond,id,name) \
+
+
#ifdef SYSTEM_EXPAT
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libexpat, libexpat-1.dll )
+#ifdef NEEDS_MINGW_EXPAT_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libexpat, MINGW_EXPAT_DLL )
+#endif
#endif
#ifdef SYSTEM_LIBXSLT
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libxslt, libxslt-1.dll )
+#ifdef NEEDS_MINGW_LIBXSLT_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libxslt, MINGW_LIBXSLT_DLL )
+#endif
#endif
#ifdef SYSTEM_LIBXML
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Zlib, zlib1.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libxml2, libxml2-2.dll )
+#ifdef NEEDS_MINGW_ZLIB_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Zlib, MINGW_ZLIB_DLL )
+#endif
+#ifdef NEEDS_MINGW_LIBXML_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libxml2, MINGW_LIBXML_DLL )
+#endif
#endif
#ifdef SYSTEM_DB
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libdb, libdb-4.8.dll )
+#ifdef NEEDS_MINGW_DB_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libdb, MINGW_DB_DLL )
+#endif
#endif
#ifdef SYSTEM_CURL
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libintl, libintl-8.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libdn, libidn-11.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libnspr, libnspr4.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Nssutil, nssutil3.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libplc, libplc4.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libplds, libplds4.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_nss, nss3.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_ssl, ssl3.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgpgerror, libgpg-error-0.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgcrypt, libgcrypt-11.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libssh, libssh2-1.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libcurl, libcurl-4.dll )
+#ifdef NEEDS_MINGW_INTL_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libintl, MINGW_INTL_DLL )
+#endif
+#ifdef NEEDS_MINGW_IDN_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libdn, MINGW_IDN_DLL )
+#endif
+#ifdef NEEDS_MINGW_NSPR4_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libnspr, MINGW_NSPR4_DLL )
+#endif
+#ifdef NEEDS_MINGW_NSSUTIL3_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Nssutil, MINGW_NSSUTIL3_DLL )
+#endif
+#ifdef NEEDS_MINGW_PLC4_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libplc, MINGW_PLC4_DLL )
+#endif
+#ifdef NEEDS_MINGW_PLDS4_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libplds, MINGW_PLDS4_DLL )
+#endif
+#ifdef NEEDS_MINGW_NSS3_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_nss, MINGW_NSS3_DLL )
+#endif
+#ifdef NEEDS_MINGW_SSL3_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_ssl, MINGW_SSL3_DLL )
+#endif
+#ifdef NEEDS_MINGW_GPG_ERROR_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgpgerror, MINGW_GPG_ERROR_DLL )
+#endif
+#ifdef NEEDS_MINGW_GCRYPT_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgcrypt, MINGW_GCRYPT_DLL )
+#endif
+#ifdef NEEDS_MINGW_SSH2_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libssh, MINGW_SSH2_DLL )
+#endif
+#ifdef NEEDS_MINGW_CURL_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libcurl, MINGW_CURL_DLL )
+#endif
#endif
#ifdef SYSTEM_ICU
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Icui18n, STRING(CONCAT4(icui18n,ICU_MAJOR,ICU_MINOR,.dll)) )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Icuuc, STRING(CONCAT4(icuuc,ICU_MAJOR,ICU_MINOR,.dll)) )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Icudata, STRING(CONCAT4(icudata,ICU_MAJOR,ICU_MINOR,.dll)) )
+#ifdef NEEDS_MINGW_ICUI18N_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Icui18n, MINGW_ICUI18N_DLL )
+#endif
+#ifdef NEEDS_MINGW_ICUUC_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Icuuc, MINGW_ICUUC_DLL )
+#endif
+#ifdef NEEDS_MINGW_ICUDATA_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Icudata, MINGW_ICUDATA_DLL )
+#endif
#endif
#ifdef SYSTEM_GRAPHITE
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgrahpite, libgraphite2.dll )
+#ifdef NEEDS_MINGW_GRAPHITE2_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgrahpite, MINGW_GRAPHITE2_DLL )
+#endif
#endif
#ifdef SYSTEM_NEON
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libtasn, libtasn1-3.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgnutls, libgnutls-26.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libneon, libneon-27.dll )
+#ifdef NEEDS_MINGW_TASN1_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libtasn, MINGW_TASN1_DLL )
+#endif
+#ifdef NEEDS_MINGW_GNUTLS_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libgnutls, MINGW_GNUTLS_DLL )
+#endif
+#ifdef NEEDS_MINGW_NEON_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libneon, MINGW_NEON_DLL )
+#endif
#endif
#ifdef SYSTEM_OPENSSL
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libssl, libssl-8.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libcrypto, libcrypto-8.dll )
+#ifdef NEEDS_MINGW_SSL_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libssl, MINGW_SSL_DLL )
+#endif
+#ifdef NEEDS_MINGW_CRYPTO_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libcrypto, MINGW_CRYPTO_DLL )
+#endif
#endif
#ifdef SYSTEM_REDLAND
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libraptor, libraptor-1.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Librasqal, librasqal-2.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libqslite, libsqlite3-0.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Librdf, librdf-0.dll )
+#ifdef NEEDS_MINGW_RAPTOR_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libraptor, MINGW_RAPTOR_DLL )
+#endif
+#ifdef NEEDS_MINGW_RASQAL_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Librasqal, MINGW_RASQAL_DLL )
+#endif
+#ifdef NEEDS_MINGW_SQLITE3_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libqslite, MINGW_SQLITE3_DLL )
+#endif
+#ifdef NEEDS_MINGW_REDLAND_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Librdf, MINGW_REDLAND_DLL )
+#endif
#endif
#ifdef SYSTEM_HUNSPELL
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libhunspell, libhunspell-1.3-0.dll )
+#ifdef NEEDS_MINGW_HUNSPELL_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libhunspell, MINGW_HUNSPELL_DLL )
+#endif
#endif
#ifdef SYSTEM_HYPH
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libhyphen, libhyphen-0.dll )
+#ifdef NEEDS_MINGW_HYPHEN_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libhyphen, MINGW_HYPHEN_DLL )
+#endif
#endif
#ifdef SYSTEM_MYTHES
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libmythes, libmythes-1.2-0.dll )
+#ifdef NEEDS_MINGW_MYTHES_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libmythes, MINGW_MYTHES_DLL )
+#endif
#endif
#ifdef SYSTEM_LPSOLVE
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Lpsolve, lpsolve55.dll )
+#ifdef NEEDS_MINGW_LPSOLVE_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Lpsolve, MINGW_LPSOLVE_DLL )
+#endif
#endif
#ifdef SYSTEM_CAIRO
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libfontconfig, libfontconfig-1.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libfreetype, libfreetype-6.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libpixman, libpixman-1-0.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libpng, libpng15-15.dll )
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Libcairo, libcairo-2.dll )
+#ifdef NEEDS_MINGW_FONTCONFIG_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libfontconfig, MINGW_FONTCONFIG_DLL )
+#endif
+#ifdef NEEDS_MINGW_FREETYPE_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libfreetype, MINGW_FREETYPE_DLL )
+#endif
+#ifdef NEEDS_MINGW_PIXMAN_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libpixman, MINGW_PIXMAN_DLL )
+#endif
+#ifdef NEEDS_MINGW_PNG15_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libpng, MINGW_PNG15_DLL )
+#endif
+#ifdef NEEDS_MINGW_CAIRO_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Libcairo, MINGW_CAIRO_DLL )
+#endif
#endif
#ifdef SYSTEM_LCMS2
-MINGW_DLL( gid_Brand_File_Lib_Mingw_Liblcms2, liblcms2-2.dll )
+#ifdef NEEDS_MINGW_LCMS2_DLL
+MINGW_DLL( gid_Brand_File_Lib_Mingw_Liblcms2, MINGW_LCMS2_DLL )
+#endif
#endif
#if defined(MINGW_GCCDLL)