#!/bin/sh
RDIR=`pwd`

COMPILER="/usr/i386-linux-uclibc/bin/i386-uclibc-gcc -Os -m386 \
-malign-functions=0 -malign-jumps=0 -malign-loops=0 -DCPU=386 \
-fomit-frame-pointer -fno-builtin -fno-strength-reduce -fno-inline \
-s -DNOERROR  -D__i386__ -L/usr/i386-linux-uclibc/lib"

LD=/usr/i386-linux-uclibc/bin/i386-uclibc-ld
AR=/usr/i386-linux-uclibc/bin/i386-uclibc-ar

if [ "$1" = "clean" ]
then
cd linux-lite-v1.00 ; make clean > ../clean.out 2>&1 ; rm -f .hdepend ; cd ..
#cd uClibc ; make clean > ../clean.out 2>&1 ; rm -f xmake.err~ ; cd ..
cd zlib ; make clean > ../clean.out 2>&1 ; cd ..
cd X11 ; make distclean > ../clean.out 2>&1 ; 
rm -f ./programs/Xserver/Makefile.old
cd extras/Xpm ; make clean  > ../../../clean.out ; cd ../.. ; cd ..
cd tinylogin ; make clean >> ../clean.out 2>&1 ; cd ..
#cd busybox ; make clean >> ../clean.out 2>&1 ; cd ..
rm -rf busybox
rm -rf uClibc
rm -rf tcc
#cd tcc ; make clean >> ../clean.out 2>&1 ; rm -f libtcc.a ; cd ..
rm -f My_box/sstrip
cd mdesk-1.2.0 ; ./make_all.sh clean ; cd ..
cd My_box ; make clean  >> ../clean.out 2>&1 ; cd umsdos_progs  ; make clean >> ../../clean.out 2>&1 ; cd ../..
#rm -f umsdos_progs/util/*.o ; rm -f umsdos_progs/tests/*.o ; rm -f umsdos_progs/tests/gen/*.o ; cd ..
cd build ; ./cleanup.sh ; cd ..
rm -f clean.out
exit 0

fi

echo "This will compile all the required applications"
##########################################################################################

echo "CC = $COMPILER " > compiler

#echo "# define CppCmd			/usr/i386-linux-uclibc/bin/cpp" > Xcomp.def
#echo "#   define CcCmd		/usr/i386-linux-uclibc/bin/gcc -Os -m386 \
#-malign-functions=0 -malign-jumps=0 -malign-loops=0 -DCPU=386 \
#-fomit-frame-pointer -fno-builtin -fno-strength-reduce -fno-inline \
#-s -DNOERROR  -D__i386__ -L/usr/i386-linux-uclibc/lib" > Xcomp.def

#echo "#   define AsCmd		/usr/i386-linux-uclibc/bin/as" > Xcomp.def
#echo "#   define LdCmd		/usr/i386-linux-uclibc/bin/ld" > Xcomp.def
#echo "#   define AsmDefines		-D__ELF__" > Xcomp.def
#echo "#   define CplusplusCmd		/usr/i386-linux-uclibc/bin/c++" > Xcomp.def

echo "Making linux kernel"
cd linux-lite-v1.00 ;
if [ "$1" = "remake" ]
then 
make dep > xmake.err~ 2>&1 ; make clean > xmake.err~ 2>&1 ; make zImage > xmake.err~ 2>&1
make modules > xmake.err~ 2>&1
cp arch/i386/boot/zImage $RDIR/build/vmlinuz
cp /boot/boot.b $RDIR/build/
fi
cd ..

echo "Making uClibc"
tar xzf uClibc-0.9.21.tar.gz
mv uClibc-0.9.21 uClibc
cp uclibc.conf uClibc/.config
cd uClibc ;
if [ "$1" = "remake" ]
then 

make > xmake.err~ 2>&1 ; make install > xmake.err~ 2>&1
#cp -f lib/* /usr/i386-linux-uclibc/lib/
fi
cd ..
##########################################################################################

echo "Making zlib"
cd zlib ; 
if [ "$1" = "remake" ]
then
CC=$COMPILER AR=/usr/i386-linux-uclibc/bin/i386-uclibc-ar ./configure -s > xmake.err~ 2>&1 ; 
make >> xmake.err~ 2>&1
fi
cp zlib.h /usr/i386-linux-uclibc/include/
cp zconf.h /usr/i386-linux-uclibc/include/
cp libz.so* /usr/i386-linux-uclibc/lib/ ; cd ..
##########################################################################################

echo "Making X window system"
echo "You are advised to check linux.cf, kdrive.cf, site.def in X11/config/cf/" 
cd X11
if [ "$1" = "remake" ]
then
#echo "Making X window system"
echo `pwd`
make World > axmake.err~ 2>&1
mv -f ./programs/Xserver/Makefile ./programs/Xserver/Makefile.old ;
sed 's/ $@ $(LDOPTIONS) $(VESAOBJS) / $@ $(LDOPTIONS) $(VESAOBJS)  dix\/main.o /g' \
./programs/Xserver/Makefile.old > ./programs/Xserver/Makefile
cd ./programs/Xserver/ ; make >> xmake.err~ 2>&1 ; cd ../..
#make Everything >> xmake.err~ 2>&1 
fi
cp programs/Xserver/Xvesa ../build/X11R6/bin/X
cp lib/X11/libX11.so.6.2 ../build/X11R6/lib/libX11.so.6
cp lib/Xext/libXext.so.6.4 ../build/X11R6/lib/libXext.so.6
#cp lib/Xpm/libXpm.so.4.11 ../build/X11R6/lib/libXpm.so.4
cp lib/X11/libX11* /usr/i386-linux-uclibc/lib/
cp lib/Xext/libXext* /usr/i386-linux-uclibc/lib/
cp lib/Xpm/libXpm* /usr/i386-linux-uclibc/lib/

cd ..
##########################################################################################

echo "Making tinylogin"
echo "You are advised to check Config.h in tinylogin/"
cd tinylogin ; 
if [ "$1" = "remake" ]
then
make > xmake.err~ 2>&1 ;
fi
cp ./tinylogin ../build/root/bin/
cd ..
##########################################################################################
echo "Making busybox"
echo "You are advised to check Config.h in busybox/"
tar xzf busybox-1.00-pre3.tar.gz
mv busybox-1.00-pre3 busybox
cp busybox.conf busybox/.config
cd busybox ; 
if [ "$1" = "remake" ]
then
make > xmake.err~ 2>&1 ;
fi
cp ./busybox ../build/root/bin/
cd ..
##########################################################################################

#echo "Making tcc"
#tar xzf tcc-0.9.19.tar.gz
#mv tcc-0.9.19 tcc
#cd tcc ; 
#if [ "$1" = "remake" ]
#then
#make -f Makefile.uClibc > xmake.err~ 2>&1 ; 
#fi
#echo "We dont currently include tcc in the distro!"
#cp ./tcc ../build/root/bin/
#cd ..
##########################################################################################

echo "Making My_box of utils"
#cd sstrip ;
cd My_box ; make > xmake.err~ 2>&1 
#; cd ..
 gcc rdev.c -o ../build/rdev > xmake.err~ 2>&1 
cd ..
##########################################################################################

echo "Making mdesk"
cd mdesk-1.2.0 
if [ "$1" = "remake" ]
then
 ./make_all.sh 
fi
cp src/mdesk ../build/X11R6/bin/xinit ;
cd ..

##########################################################################################
LIBCVER=0.9.20
cp /usr/i386-linux-uclibc/lib/libuClibc-$LIBCVER.so $RDIR/build/root/lib/libc.so.0
cp /usr/i386-linux-uclibc/lib/ld-uClibc-$LIBCVER.so $RDIR/build/root/lib/ld-uClibc.so.0
cp /usr/i386-linux-uclibc/lib/libcrypt-$LIBCVER.so $RDIR/build/root/lib/libcrypt.so.0
cp /usr/i386-linux-uclibc/lib/libm-$LIBCVER.so $RDIR/build/X11R6/lib/libm.so.0
cp /usr/i386-linux-uclibc/lib/libz.so.1.1.4 $RDIR/build/X11R6/lib/libz.so.1
#cp /usr/i386-linux-uclibc/lib/libdl-0.9.11.so $RDIR/build/X11R6/lib/

##########################################################################################

#echo "Making linux kernel "
#cd /usr/linux ; make config ; make dep ; make bzImage
#cd $BROOT
#cp /usr/src/linux/arch/i386/boot/bzImage $RDIR/build/vmlinuz
#cp /boot/boot.b $RDIR/build/



cd $RDIR/build
../My_box/sstrip X11R6/bin/* > xmake.err~ 2>&1 
../My_box/sstrip X11R6/lib/* > xmake.err~ 2>&1 
../My_box/sstrip root/lib/* > xmake.err~ 2>&1 
../My_box/sstrip root/bin/* > xmake.err~ 2>&1 

./makeimage