#!/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
}

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 \
	amaudio.h \
	audevcod.h \
	corerror.h \
	d2dbasetypes.h \
	d3d10_1shader.h \
	d3d10effect.h \
	d3d10misc.h \
	d3d10shader.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 \
	mediaerr.h \
	mscat.h \
	propkeydef.h \
	propkey.h \
	propvarutil.h \
	rpcsal.h \
	t2embapi.h \
	uiautomationcoreapi.h \
	uiautomation.h \
	vfwmsgs.h \
	winhttp.h \
	winineti.h \
	wmpids.h \
	xapofx.h \
	xinput.h; do
    import_header $f include
done

# IDLs
for f in \
	amstream \
	amvideo \
	asyncinfo \
	austream \
	ctfutb \
	d3d10 \
	d3d10_1 \
	d3d10sdklayers \
	d3d11 \
	d3d11on12 \
	d3d11_1 \
	d3d11_2 \
	d3d11_3 \
	d3d11_4 \
	d3d11sdklayers \
	d3d12 \
	d3d12sdklayers \
	d3d12shader \
	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 \
	endpointvolume \
	eventtoken \
	exdisp \
	fusion \
	icftypes \
	mediaobj \
	mfreadwrite \
	mmdeviceapi \
	mmstream \
	mscoree \
	msctf \
	mulres \
	netfw \
	netlistmgr \
	objectarray \
	optary \
	proofofpossessioncookieinfo \
	qedit \
	relogger \
	rtworkq \
	spatialaudioclient \
	taskschd \
	thumbcache \
	uiautomationclient \
	uiautomationcore \
	urlhist \
	vmr9 \
	wincodec \
	wincodecsdk \
	windowscontracts \
	windows.foundation \
	windows.foundation.collections \
	windows.media.speechsynthesis \
	wmdrmsdk \
	wmp \
	wmprealestate \
	wmpservices \
	wmsbuffer \
	wmsdkidl \
	wpcapi \
	wuapi \
	xapo \
	xaudio2 \
	xaudio2fx \
	xmllite; do
    import_idl $f.idl 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'

