#! /bin/sh
# simon@kde.org

src=$1
dst=$2

path="`echo "$PATH" | sed -e "s/\:/ /g"`"
find=""
for i in $path; do
  if test -x "$i/gfind"; then
    find="$i/gfind"
    break
  fi  
  if test -x "$i/find"; then
    find="$i/find"
    break 
  fi
done
 
if test -z "$find"; then
  echo "I need GNU find!"
  exit 1
fi    

cp_pr="cp -pr"

echo "*** preparing kde sources (from $src into $dst) ..."

if test ! -x $src; then
	echo "Cannot find kde (kdelibs) sources. Make sure they can be found"
	echo "at the same level as this module (like ../kdelibs) or set the"
	echo "KDESRC environment variable to the directory which contains the"
	echo "kdelibs directory."
	exit 255
fi

# starting with kdecore stuff

# extract KDE versioning string, for user agent
# The grep does not work anymore. 
# Include the version header instead.
#grep KDE_VERSION_STRING $src/kdecore/kapp.h | head -1 > $dst/kdecore/kdeversion.h

# find kdelibs version
KDELIBS_VERSION=`perl -ne 'if (/KDE_VERSION_STRING\s\"(.*)\"/) {print $1; }' $src/kdecore/kdeversion.h`

echo "*** using kdelibs version $KDELIBS_VERSION"

cp -p $src/kdecore/kdeversion.h $dst/kdecore/

cp -p $src/kdecore/kurl.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/krfcdate.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/ksock.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/ksockaddr.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/netsupp.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/kextsock.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/kasyncio.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/kbufferedio.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/kcharsets.{cpp,h} $dst/kdecore/

cp -p $src/kdecore/kentities.c $dst/kdecore

cp -p $src/kdecore/ksharedptr.h $dst/kdecore

cp -p $src/kdecore/kstandarddirs.{cpp,h} $dst/kdecore

cp -p $src/kdecore/ktempfile.{cpp,h} $dst/kdecore

cp -p $src/kdecore/ksavefile.{cpp,h} $dst/kdecore

cp -p $src/kdecore/kmdcodec.{cpp,h} $dst/kdecore

cp -p $src/kdecore/kmultipledrag.{cpp,h} $dst/kdecore

#Does nothing, but something else includes it
cp -p $src/kdecore/klargefile.h $dst/kdecore


case $KDELIBS_VERSION in
	3.[45].*)
		cp -p $src/kdecore/kdemacros.h.in $dst/kdecore/
		cp -p $src/kdecore/kdelibs_export.h $dst/kdecore/
		cp -p $src/kdecore/kde_file.h $dst/kdecore/
		cp -p $src/kdecore/kshell.{cpp,h} $dst/kdecore/ 
		cp -p $src/kdecore/fixx11h.h $dst/kdecore/
		cp -p $src/kdecore/kqiodevicegzip_p.{cpp,h} $dst/kdecore/
		
		cp -p $src/kdecore/network/kresolver.{cpp,h} $dst/kdecore/network
		cp -p $src/kdecore/network/kresolver_p.h $dst/kdecore/network
		cp -p $src/kdecore/network/kresolvermanager.cpp $dst/kdecore/network
		cp -p $src/kdecore/network/kresolver_p.h $dst/kdecore/network
		cp -p $src/kdecore/network/kresolverstandardworkers.cpp $dst/kdecore/network
		cp -p $src/kdecore/network/kresolverstandardworkers_p.h $dst/kdecore/network
		cp -p $src/kdecore/network/kresolverworkerbase.cpp $dst/kdecore/network
		cp -p $src/kdecore/network/kresolverworkerbase.h $dst/kdecore/network
		cp -p $src/kdecore/network/ksocketaddress.{cpp,h} $dst/kdecore/network
		
		;;		
esac

# for kdelibs v3.1
cp -p $src/kdecore/kdebugclasses.h $dst/kdecore

# fast malloc support
mkdir $dst/kdecore/malloc
cp -p $src/kdecore/malloc/*.{c,h} $dst/kdecore/malloc
cp -p $src/kdecore/malloc/Makefile.am $dst/kdecore/malloc
cp -p $src/kdecore/malloc/configure.in.in $dst/kdecore/malloc

# let's move over Waldo's KCookieJar

cp -p $src/kioslave/http/kcookiejar/kcookie*.{cpp,h} $dst/kio/http/kcookiejar/

# now the http ioslave

cp -p $src/kioslave/http/*.{cpp,cc,h} $dst/kio/http/

#This is needed for kdelibs v3.1 - ML
case $KDELIBS_VERSION in
	3.[45].*) 
		cp -p $src/kio/httpfilter/httpfilter.{cc,h} $dst/kio/http/
		;;
	*)
		;;
esac

cp -p $src/kioslave/http/http_cache_cleaner.cpp $dst/kio/http/

perl -pi -e "s,main\(,http_cache_cleaner_main\(," $dst/kio/http/http_cache_cleaner.cpp


# some more kio stuff

case $KDELIBS_VERSION in
	3.[45].*)
		mkdir -p $dst/kio/kfile
		cp -p $src/kio/kfile/kfile.h $dst/kio/kfile
		;;
	*)
		;;
esac

cp -p $src/kio/kio/slaveconfig.h $dst/kio

cp -p $src/kio/kio/global.h $dst/kio

cp -p $src/kio/kio/slaveinterface.{cpp,h} $dst/kio

cp -p $src/kio/kio/connection.{cpp,h} $dst/kio

cp -p $src/kio/kio/authinfo.{cpp,h} $dst/kio

cp -p $src/kio/kio/http_slave_defaults.h $dst/kio

cp -p $src/kio/kio/ioslave_defaults.h $dst/kio

cp -p $src/kio/kio/tcpslavebase.{cpp,h} $dst/kio

cp -p $src/kioslave/ftp/ftp.{cc,h} $dst/kio


perl -pi -e "s,kdemain\(,ftp_kdemain\(,g" $dst/kio/ftp.cc

# Harri's javascript

cp -p $src/kjs/*.{cpp,h} $dst/kjs

cp -p $src/kjs/README $dst/kjs

cp -p $src/kjs/THANKS $dst/kjs

cp -p $src/kjs/configure.in.in $dst/kjs


echo "Fixing configure.in.in for kdelibs 3.4/3.5"
cp -p $src/kjs/global.h.in $dst/kjs
perl -pi -e "s,kjs/global.h,konq-embed/kdesrc/kjs/global.h,g" $dst/kjs/configure.in.in
case $KDELIBS_VERSION in
	3.4.*)
		cp -p $dst/kjs/Makefile.am.3.4 $dst/kjs/Makefile.am
		;;
	3.5.*)
		cp -p $dst/kjs/Makefile.am.3.5 $dst/kjs/Makefile.am
		;;
esac

# for kdelibs v3.2 - should be harmless for 3.1
cp -p $src/kjs/keywords.table $dst/kjs
cp -p $src/kjs/create_hash_table $dst/kjs

# we need the partmanager and some other stuff from kparts

cp -p $src/kparts/partmanager.{cpp,h} $dst/kparts

cp -p $src/kparts/event.{cpp,h} $dst/kparts

cp -p $src/kparts/browserextension.{cpp,h} $dst/kparts

# for kdelibs 3.2 or greater

case $KDELIBS_VERSION in
	3.[45].*)
		cp -p $src/kparts/statusbarextension.{cpp,h} $dst/kparts
		;;
esac

cp -p $src/kparts/factory.{cpp,h} $dst/kparts

# now let's get the big baby :-)

cp -p $src/khtml/*.{cpp,h,cc} $dst/khtml/

rm $dst/khtml/khtml_ext.*
rm $dst/khtml/khtml_find.*
rm $dst/khtml/khtml_run.*
rm $dst/khtml/htmlpageinfo.*

mkdir -p $dst/khtml/rendering
mkdir -p $dst/khtml/html
mkdir -p $dst/khtml/dom
mkdir -p $dst/khtml/xml
mkdir -p $dst/khtml/css
mkdir -p $dst/khtml/ecma
mkdir -p $dst/khtml/misc

cp -p $src/khtml/rendering/*.{cpp,h} $dst/khtml/rendering/

cp -p $src/khtml/html/*.{cpp,h} $dst/khtml/html/

cp -p $src/khtml/dom/*.{cpp,h} $dst/khtml/dom/

cp -p $src/khtml/xml/*.{cpp,h} $dst/khtml/xml/

cp -p $src/khtml/css/*.{cpp,h} $dst/khtml/css/
cp -p $src/khtml/css/*.c $dst/khtml/css/

cp -p $src/khtml/css/html4.css $dst/khtml/css
cp -p $src/khtml/css/quirks.css  $dst/khtml/css

cp -p $src/khtml/ecma/*.{cpp,h} $dst/khtml/ecma/

cp -p $src/khtml/misc/*.{cpp,h} $dst/khtml/misc/
cp -p $src/khtml/misc/*.c $dst/khtml/misc/
cp -p $src/khtml/misc/htmltags.gperf $dst/khtml/misc/

cp -p $src/khtml/rendering/Makefile.am $dst/khtml/rendering/
cp -p $src/khtml/html/Makefile.am $dst/khtml/html/
cp -p $src/khtml/dom/Makefile.am $dst/khtml/dom/
cp -p $src/khtml/xml/Makefile.am $dst/khtml/xml/
cp -p $src/khtml/css/Makefile.am $dst/khtml/css/
cp -p $src/khtml/ecma/Makefile.am $dst/khtml/ecma/
cp -p $src/khtml/misc/Makefile.am $dst/khtml/misc/

# don't forget KSSL :)
cp -p $src/kio/kssl/kssl.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcertificatehome.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslsettings.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcertificate.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslconnectioninfo.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcertificatefactory.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcertificatecache.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslpeerinfo.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcertdlg.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslutils.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcertchain.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslx509map.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslpkcs12.{cc,h} $dst/kssl
#cp -p $src/kio/kssl/configure.in.in $dst/kssl
cp -p $src/kio/kssl/ksslconfig.h.in $dst/kssl
cp -p $src/kio/kssl/kopenssl.{cc,h} $dst/kssl
cp -p $src/kio/kssl/ksslcallback.c $dst/kssl
cp -p $src/kio/kssl/kssldefs.h $dst/kssl
cp -p $src/kio/kssl/ksslsigners.h $dst/kssl
cp -p $src/kio/kssl/ksslall.h $dst/kssl
cp -p $src/kio/kssl/ksslx509v3.h $dst/kssl
cp -p $src/kio/kssl/ksslx509v3.cc $dst/kssl
cp -p $src/kio/kssl/ksslpkcs7.h $dst/kssl
cp -p $src/kio/misc/kssld/kssld.{cpp,h} $dst/kssl
#cp -p $src/kio/kssl/ksslinfodlg.{cc,h} $dst/kssl
# for kdelibs v3.2
case $KDELIBS_VERSION in
	3.[45].*) 
		cp $dst/kssl/Makefile.am.3.4 $dst/kssl/Makefile.am
		cp -p $src/kio/kssl/ksslsession.{cc,h} $dst/kssl
		cp -p $src/kio/kssl/ksslinfodlg.{cc,h} $dst/kssl
		;;
esac

mkdir -p $dst/kssl/kssl
$cp_pr $src/kio/kssl/kssl/* $dst/kssl/kssl

# Temporary hack, needed for kdelibs 3.1
perl -pi -e "s/^data/kssldata/" $dst/kssl/kssl/caroot/Makefile.am

# Copy the needed interface
mkdir -p $dst/interfaces/kio
cp -p $src/interfaces/kio/Makefile.am $dst/interfaces/kio
cp -p $src/interfaces/kio/http.h $dst/interfaces/kio

# Copy the kfind class definition. khtml v3.1 requires it.
mkdir -p $dst/kutils
cp -p $src/kutils/kfind.h $dst/kutils/kfind.h
cp -p $src/kutils/kfinddialog.h $dst/kutils/kfinddialog.h
# Copy kreplace classes as well, for khtml v3.2.
cp -p $src/kutils/kreplace.h $dst/kutils/kreplace.h
cp -p $src/kutils/kreplacedialog.h $dst/kutils/kreplacedialog.h

# XXX Try to make this work in some reliable way.
# This part is quite difficult to handle correctly.
#
#mkdir $dst/dcop/dcopidl
#mkdir $dst/dcop/dcopidl2cpp
#cp -p $src/dcop/dcopidl/*.{cpp,h,cc,ll,yy} $dst/dcop/dcopidl
#cp -p $src/dcop/dcopidl/Makefile.am $dst/dcop/dcopidl

#cp -p $src/dcop/dcopidli2cpp/*.{cpp,h} $dst/dcop/dcopidl2cpp
#cp -p $src/dcop/dcopidl2cpp/Makefile.am $dst/dcop/dcopidl2cpp

for i in ./kdesrc/khtml/rendering/Makefile.am \
	 ./kdesrc/khtml/html/Makefile.am \
	 ./kdesrc/khtml/dom/Makefile.am \
 	 ./kdesrc/khtml/xml/Makefile.am \
	 ./kdesrc/khtml/misc/Makefile.am \
	 ./kdesrc/khtml/ecma/Makefile.am \
	 ./kdesrc/khtml/css/Makefile.am ; do
    perl -pi -e "s,\\$\(all_includes\),-I\\$\(top_builddir\)/konq-embed/kdesrc -I\\$\(top_builddir\)/konq-embed/kdesrc/kssl -I\\$\(top_srcdir\)/konq-embed/dropin -I\\$\(top_srcdir\)/konq-embed/kdesrc/kio -I\\$\(top_srcdir\)/konq-embed/kdesrc/kdecore -I\\$\(top_srcdir\)/konq-embed/kdesrc/kutils -I\\$\(srcdir\)/../.. -I\\$\(srcdir\)/.. -I\\$\(srcdir\)/../misc -I\\$\(srcdir\)/../misc -I\\$\(srcdir\)/../css -I\\$\(srcdir\)/../dom -I\\$\(srcdir\)/../xml -I\\$\(srcdir\)/../html -I\\$\(top_srcdir\)/konq-embed/dropin/kio -I\\$\(srcdir\)/../.. -I\\$\(srcdir\)/../../kjs -I\\$\(top_srcdir\)/konq-embed/dropin/kssl -I\\$\(srcdir\)/../../../dropin/khtml -I\\$\(top_srcdir\)/konq-embed/dropin/khtml/java \\\$\(QT_INCLUDES\) \\$\(X_INCLUDES\) \\$\(all_includes\)," $i
    perl -pi -e "s,-DQT_NO_CAST_ASCII,,g" $i
    echo "KDE_OPTIONS = qtonly" >> $i
done;

perl -pi -e "s,kde_module_LTLIBRARIES,noinst_LTLIBRARIES," ./kdesrc/khtml/ecma/Makefile.am
perl -pi -e "s,(lib|)kjs_html\.la,libkjs_html_i.la,g" ./kdesrc/khtml/ecma/Makefile.am
perl -pi -e "s,(lib|)kjs_html_la,libkjs_html_i_la,g" ./kdesrc/khtml/ecma/Makefile.am
perl -pi -e "s,libkjs_html_i_la_LIBADD.*,," ./kdesrc/khtml/ecma/Makefile.am
perl -pi -e "s,libkjs_html_i_la_LDFLAGS.*,," ./kdesrc/khtml/ecma/Makefile.am
perl -pi -e "s,\\$\(top_srcdir\)/kjs/create_hash_table,\\$\(srcdir\)/../../kjs/create_hash_table," ./kdesrc/khtml/ecma/Makefile.am

perl -pi -e "s,kjs_debugwin\.cpp ,," ./kdesrc/khtml/ecma/Makefile.am

cat >> ./kdesrc/khtml/ecma/Makefile.am << EOT
if DLOPEN_JAVASCRIPT
lib_LTLIBRARIES = kjs_html.la
kjs_html_la_LIBADD = libkjs_html_i.la ../libkhtml.la ../../kjs/libkjs.la \$(LIBPCRE)
kjs_html_la_LDFLAGS = -module -avoid-version -no-undefined \$(all_libraries)
kjs_html_la_SOURCES = dummy.cc

endif
dummy.cc:
	echo > dummy.cc
EOT

perl -pi -e "s,\\$\(top_builddir\)/kjs/libkjs.la,../../kjs/libkjs.la," ./kdesrc/khtml/ecma/Makefile.am
perl -pi -e "s,myinclude_HEADERS,noinst_HEADERS," ./kdesrc/khtml/dom/Makefile.am

#echo "*** applying khtml add-on patch ..."
#( cd ./kdesrc/khtml && patch -p0 < ./khtml_scaling_patch.txt )

case $KDELIBS_VERSION in
        3.5.*)
                echo "*** applying khtml ecma embedded patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/khtml_ecma_embedded_3.5.patch )
                echo "*** applying disable-printing patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/disable_printing_3.5.patch )
                echo "*** applying disable-spelling patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/disable_spelling_3.5.patch )
                echo "*** applying no-find patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/khtml_no_find_3.5.patch )
                echo "*** applying kdelibs_export patch..."
                ( cd ./kdesrc/kssl &&
                  patch -p0 < kdelibs_export.patch )
		echo "*** applying khtml_ecma_debugwin_3.4 patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/khtml_ecma_debugwin_3.4.patch )
		echo "*** applying browserextension_no_clipboard patch..."
		( cd ./kdesrc/kparts && 
		  patch -p0 < patches/browserextension_no_clipboard_3.5.patch )
		echo "*** applying no_popupmenu patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/no_popupmenu_3.5.patch )
		echo "*** applying fix-khtmlview-for-qtembedded patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/fix-khtmlview-for-qtembedded.patch )
                ;;		
        3.4.*)
                echo "*** applying khtml ecma embedded patch.."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/khtml_ecma_embedded_3.3.patch )
                echo "*** applying disable-printing patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/disable_printing_3.4.patch )
                echo "*** applying disable-spelling patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/disable_spelling_3.4.patch )
                echo "*** applying no_find_3.4 patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/khtml_no_find_3.4.patch )
                echo "*** applying disable-wallet patch..."
                ( cd ./kdesrc/khtml &&
                  patch -p0 < patches/disable_wallet_3.4.patch )
                echo "*** applying kdelibs_export patch..."
                ( cd ./kdesrc/kssl &&
                  patch -p0 < kdelibs_export.patch )
		echo "*** applying disable_ahead_find_3.3 patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/disable_ahead_find_3.3.patch )
		echo "*** applying khtml_ecma_window_3.4 patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/khtml_ecma_window_3.4.4.patch )
		echo "*** applying khtml_ecma_debugwin_3.4 patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/khtml_ecma_debugwin_3.4.patch )
		echo "*** applying browserextension_no_clipboard patch..."
		( cd ./kdesrc/kparts && 
		  patch -p0 < patches/browserextension_no_clipboard_3.4.patch )
		echo "*** applying khtml_nox11 patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/khtml_no_x11_3.4.patch )
		echo "*** applying no_popupmenu patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/no_popupmenu_3.4.patch )
		echo "*** applying fix-khtmlview-for-qtembedded patch..."
		( cd ./kdesrc/khtml && 
		  patch -p0 < patches/fix-khtmlview-for-qtembedded.patch )
                ;;		
	*) echo "Unknown kdelibs version. Patches NOT applied.\n" ;;
esac
case $KDELIBS_VERSION in
        3.4.*)
                echo "*** applying no-webdav patch ..."
                ( cd ./kdesrc/kio/http &&
                  patch -p0 < patches/disable_webdav_ntlp_3.4.2.patch )
		  ;;
        3.5.*)
                echo "*** applying no-webdav patch ..."
                ( cd ./kdesrc/kio/http &&
                  patch -p0 < patches/disable_webdav_ntlp_3.5.patch )
		  ;;
	*) echo "Unknown kdelibs version. Patches NOT applied.\n" ;;
  esac


#echo "*** applying kcharset unicode patch ..."
#
#( cd ./kdesrc/kdecore && patch -p0 < ./charset_unicode_patch.txt )

