[vlc-devel] [PATCH] Win32: Check for the shared libgcc in all LIBRARY_PATHs

Edward Wang edward.c.wang at compdigitec.com
Thu Aug 30 17:51:49 CEST 2012


Some mingw-w64 3.0 toolchains like mine, for example, have those DLLs in the second or possibly third field of LIBRARY_PATH. Skipping these could lead to weird C++ dlopen errors.
---
 extras/package/win32/package.mak |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/extras/package/win32/package.mak b/extras/package/win32/package.mak
index a0d2eda..c5a7fe6 100644
--- a/extras/package/win32/package.mak
+++ b/extras/package/win32/package.mak
@@ -75,9 +75,16 @@ if !HAVE_WINCE
 endif
 
 # Compiler shared DLLs, when using compilers built with --enable-shared
-# If gcc_s_sjlj/stdc++-6 DLLs exist, our C++ modules were linked to them
-	gcc_lib_dir=`$(CXX) -v /dev/null 2>&1 | grep ^LIBRARY_PATH|cut -d= -f2|cut -d: -f1` ; \
-	cp "$${gcc_lib_dir}/libstdc++-6.dll" "$${gcc_lib_dir}/libgcc_s_sjlj-1.dll" "$(win32_destdir)/" ; true
+# The shared DLLs may not necessarily be in the first LIBRARY_PATH, we
+# should check them all.
+	library_path_list=`$(CXX) -v /dev/null 2>&1 | grep ^LIBRARY_PATH|cut -d= -f2` ;\
+	OIFS=$$IFS ;\
+	IFS=':' ;\
+	for x in $$library_path_list ;\
+	do \
+		cp "$$x/libstdc++-6.dll" "$$x/libgcc_s_sjlj-1.dll" "$(win32_destdir)/" ; true ;\
+	done ;\
+	IFS=$$OIFS
 
 # SDK
 	mkdir -p "$(win32_destdir)/sdk/lib/"
-- 
1.7.5.4




More information about the vlc-devel mailing list