I use it for imports from Wine for years. It used to be in experimental
SVN branch, but got lost from official repos during move to Git. I think
that mingw-w64-headers is the right place to store it, esp. given that
this way we'd track what's imported a bit better. Also others will be
able to use it again.

Signed-off-by: Jacek Caban <[email protected]>
---
 mingw-w64-headers/wine-import.sh | 189
+++++++++++++++++++++++++++++++++++++++
 1 file changed, 189 insertions(+)
 create mode 100755 mingw-w64-headers/wine-import.sh


diff --git a/mingw-w64-headers/wine-import.sh b/mingw-w64-headers/wine-import.sh
new file mode 100755
index 00000000..1f611d16
--- /dev/null
+++ b/mingw-w64-headers/wine-import.sh
@@ -0,0 +1,189 @@
+#!/bin/bash
+
+set -e
+
+WINE_DIR=$1
+
+if test -z $WINE_DIR; then
+    echo "Usage: wine-impot.sh wine_dir"
+    exit 1
+fi
+
+import_header() {
+    dstfile=$2/$1
+    srcfile=$WINE_DIR/include/$1
+    rm -f $dstfile
+    unicode_fix=
+    if test -n "$(grep WINELIB_NAME_AW\\\|DECL_WINELIB_TYPE_AW $srcfile)"; then
+        unicode_fix="yes"
+        echo '#include <_mingw_unicode.h>' >>$dstfile
+    fi
+    if test -n "$(grep -w INTERFACE $srcfile)"; then
+        echo '#undef INTERFACE' >>$dstfile
+    fi
+    cat $srcfile >>$dstfile
+    if test -n "$(grep WINELIB_NAME_AW\\\|DECL_WINELIB_TYPE_AW $srcfile)"; then
+        sed -i 's/\bWINELIB_NAME_AW\b/__MINGW_NAME_AW/g' $dstfile
+        sed -i 's/\bDECL_WINELIB_TYPE_AW\b/__MINGW_TYPEDEF_AW/g' $dstfile
+    fi
+    sed -i 's/\bBOOL    /WINBOOL /g' $dstfile
+    sed -i 's/\bBOOL\b/WINBOOL/g' $dstfile
+    sed -i 's/DECLSPEC_HIDDEN//g' $dstfile
+}
+
+import_idl() {
+    dstfile=$2/$1
+    srcfile=$WINE_DIR/include/$1
+    cp $srcfile $dstfile
+
+    # HACK:
+    sed -i 's/cpp_quote\(.*\)\bBOOL\b/cpp_quote\1WINBOOL/' $dstfile
+    sed -i 's/cpp_quote\(.*\)\bBOOL\b/cpp_quote\1WINBOOL/' $dstfile
+    sed -i 's/cpp_quote\(.*\)\bBOOL\b/cpp_quote\1WINBOOL/' $dstfile
+}
+
+# headers
+for f in \
+	corerror.h \
+	mscat.h \
+	propkey.h \
+	propkeydef.h \
+	rpcsal.h \
+	t2embapi.h \
+	uiautomation.h \
+	uiautomationcoreapi.h \
+	winhttp.h \
+	winineti.h; do
+    import_header $f include
+done
+
+# IDLs
+for f in \
+	ctfutb \
+	devicetopology \
+	downloadmgr \
+	drmexternals \
+	endpointvolume \
+	fusion \
+	icftypes \
+	mmdeviceapi \
+	mscoree \
+	msctf \
+	netfw \
+	objectarray \
+	optary \
+	taskschd \
+	uiautomationclient \
+	uiautomationcore \
+	urlhist \
+	wmdrmsdk \
+	wmsbuffer \
+	wmsdkidl \
+	wpcapi \
+	xmllite; do
+    import_idl $f.idl include
+done
+
+# DirectX headers
+for f in \
+	amaudio.h \
+	audevcod.h \
+	d3d.h \
+	d3d10_1shader.h \
+	d3d10effect.h \
+	d3d10misc.h \
+	d3d10shader.h \
+	d3d11shader.h \
+	d3d8.h \
+	d3d8caps.h \
+	d3d8types.h \
+	d3d9.h \
+	d3d9caps.h \
+	d3d9types.h \
+	d3dcaps.h \
+	d3dcompiler.h \
+	d3dhal.h \
+	d3drm.h \
+	d3drmdef.h \
+	d3drmobj.h \
+	d3dtypes.h \
+	d3dx9.h \
+	d3dx9anim.h \
+	d3dx9core.h \
+	d3dx9effect.h \
+	d3dx9math.h \
+	d3dx9math.inl \
+	d3dx9mesh.h \
+	d3dx9shader.h \
+	d3dx9shape.h \
+	d3dx9tex.h \
+	d3dx9xof.h \
+	d3dvec.inl \
+	dls1.h \
+	dls2.h \
+	dmerror.h \
+	dmo.h \
+	dmoreg.h \
+	dmort.h \
+	dmplugin.h \
+	dmusbuff.h \
+	dmusicc.h \
+	dmusicf.h \
+	dmusici.h \
+	dmusics.h \
+	dpaddr.h \
+	dplay.h \
+	dplay8.h \
+	dplobby.h \
+	dplobby8.h \
+	dpnathlp.h \
+	dshow.h \
+	dvdmedia.h \
+	dxdiag.h \
+	dxerr8.h \
+	dxerr9.h \
+	dxfile.h \
+	errors.h \
+	evcode.h \
+	mediaerr.h \
+	vfwmsgs.h \
+	xinput.h; do
+    import_header $f direct-x/include
+done
+
+# DirectX IDLs
+for f in \
+	amstream \
+	amvideo \
+	austream \
+	d3d10 \
+	d3d10_1 \
+	d3d10sdklayers \
+	d3d11 \
+	d3d11_1 \
+	d3d11_2 \
+	d3d11_3 \
+	d3d11_4 \
+	d3d11sdklayers \
+	d3dcommon \
+	ddstream \
+	dxgi \
+	dxgi1_2 \
+	dxgi1_3 \
+	dxgi1_4 \
+	dxgi1_5 \
+	dxgi1_6 \
+	mediaobj \
+	dxgicommon \
+	dxgiformat \
+	dxgitype \
+	mmstream \
+	qedit; do
+    import_idl $f.idl direct-x/include
+done
+
+echo Import complete. You need to update headers generated from IDL files now:
+echo $ ./configure --with-widl --host=i686-w64-mingw32
+echo $ make
+echo $ make distclean
+

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to