#!/bin/bash set -e WINE_DIR=$1 if test -z $WINE_DIR; then echo "Usage: wine-import.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 sed -i 's/\b__WINE_ALLOC_SIZE([0-9]) //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 # Reverted: propkeydef.h, rpcsal.h for f in \ amaudio.h \ audevcod.h \ corerror.h \ d2dbasetypes.h \ d3d10_1shader.h \ d3d10misc.h \ d3d11shader.h \ d3d8caps.h \ d3d8.h \ d3d8types.h \ d3d9caps.h \ d3d9.h \ d3d9types.h \ d3dcaps.h \ d3dcompiler.h \ d3d.h \ d3dhal.h \ d3drmdef.h \ d3drm.h \ d3drmobj.h \ d3dtypes.h \ d3dvec.inl \ d3dx9anim.h \ d3dx9core.h \ d3dx9effect.h \ d3dx9.h \ d3dx9math.h \ d3dx9math.inl \ d3dx9mesh.h \ d3dx9shader.h \ d3dx9shape.h \ d3dx9tex.h \ d3dx9xof.h \ devpkey.h \ 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 \ dplay8.h \ dplay.h \ dplobby8.h \ dplobby.h \ dpnathlp.h \ dsconf.h \ dshow.h \ dvdmedia.h \ dxdiag.h \ dxerr8.h \ dxerr9.h \ dxfile.h \ dxva.h \ errors.h \ evcode.h \ exdispid.h \ fontsub.h \ mediaerr.h \ mscat.h \ msxml2did.h \ msxml6did.h \ propkey.h \ propvarutil.h \ t2embapi.h \ uiautomationcoreapi.h \ uiautomation.h \ vfwmsgs.h \ webservices.h \ winhttp.h \ winineti.h \ wmpids.h \ x3daudio.h \ xapofx.h \ xinput.h; do import_header $f include done # IDLs for f in \ amstream \ amvideo \ asyncinfo \ austream \ bits \ bits1_5 \ bits2_0 \ bits2_5 \ bits3_0 \ bits5_0 \ ctfutb \ ctxtcall \ d3d10 \ d3d10_1 \ d3d10effect \ d3d10sdklayers \ d3d10shader \ d3d11 \ d3d11on12 \ d3d11_1 \ d3d11_2 \ d3d11_3 \ d3d11_4 \ d3d11sdklayers \ d3d12 \ d3d12sdklayers \ d3d12shader \ d3d12video \ d3dcommon \ dcommon \ ddstream \ devicetopology \ directmanipulation \ downloadmgr \ drmexternals \ dvdif \ dwrite \ dwrite_1 \ dwrite_2 \ dwrite_3 \ dxgi \ dxgi1_2 \ dxgi1_3 \ dxgi1_4 \ dxgi1_5 \ dxgi1_6 \ dxgicommon \ dxgidebug \ dxgiformat \ dxgitype \ dxva2api \ dyngraph \ endpointvolume \ eventtoken \ evr9 \ exdisp \ fusion \ icftypes \ ivectorchangedeventargs \ mediaobj \ mfmediaengine \ mfreadwrite \ mftransform \ mmdeviceapi \ mmstream \ mscoree \ msctf \ msxml \ msxml2 \ msxml6 \ mulres \ netfw \ netlistmgr \ objectarray \ optary \ proofofpossessioncookieinfo \ qedit \ relogger \ rtworkq \ spatialaudioclient \ taskschd \ textstor \ thumbcache \ uiautomationclient \ uiautomationcore \ urlhist \ vmr9 \ weakreference \ wincodec \ wincodecsdk \ windowscontracts \ wmdrmsdk \ wmp \ wmprealestate \ wmpservices \ wmsbuffer \ wmsdkidl \ wmsecure \ wpcapi \ wuapi \ xamlom \ xapo \ xaudio2 \ xaudio2fx \ xmldom \ xmldso \ xmllite; do import_idl $f.idl include done # Import all winrt IDLs for f in $WINE_DIR/include/windows.*.idl; do import_idl $(basename $f) include done echo Import complete. You need to update headers generated from IDL files now: echo '$ ./configure --with-widl --host=i686-w64-mingw32 && make && make distclean'