#!/bin/sh

UPPVERSION=svn

# 0. Create a temporary directory
cd ~

if [ ! $1 ]; then
	mv upp upp___orig
	rm -rf tmp-upp
	mkdir -p tmp-upp
	ln -sf tmp-upp upp
fi

cd upp

# 1. Checkout SVN repos: bazaar, examples, reference, tutorial, uppsrc
if [ ! $1 ]; then
	for i in bazaar examples reference tutorial uppsrc; do
		svn export http://upp-mirror.googlecode.com/svn/trunk/$i
	done
fi

# 2. Add a makefile in uppsrc/ide:
#  2.1  Generate a Makefile using existing theide and umk
theide uppsrc ide GCC -r -M ">SHARED,GUI"
mv Makefile Makefile.temp

#  2.2  Customize it
echo "LOCALBASE ?= /usr" > uppsrc/ide/Makefile
echo "XORG_BASE ?= /usr/X11R6" >> uppsrc/ide/Makefile
echo "" >> uppsrc/ide/Makefile
cat Makefile.temp >> uppsrc/ide/Makefile
rm Makefile.temp
sed -i -e 's,-Linux,-$(HOSTTYPE),g' uppsrc/ide/Makefile
sed -i -e 's,CINC =.*,CINC ?=  -I$(UPPDIR1) -I$(LOCALBASE)/include -I$(LOCALBASE)/include/freetype2 -I$(LOCALBASE)/include/gtk-2.0 -I$(LOCALBASE)/include/glib-2.0 -I$(LOCALBASE)/include/cairo -I$(LOCALBASE)/include/pango-1.0 -I$(LOCALBASE)/include/atk-1.0 -I$(LOCALBASE)/lib/glib-2.0/include -I$(LOCALBASE)/lib/gtk-2.0/include,g' uppsrc/ide/Makefile
sed -i -e 's,flagLINUX,flag$(HOSTTYPE),g' uppsrc/ide/Makefile
sed -i -e 's,UPPDIR1 =.*,UPPDIR1 = uppsrc/,g' uppsrc/ide/Makefile
sed -i -e 's,UPPOUT =.*,UPPOUT = out/,g' uppsrc/ide/Makefile
sed -i -e 's,CC =.*,CC = c++,g' uppsrc/ide/Makefile
sed -i -e 's,CFLAGS =.*,CFLAGS := $(CC) -c -O1 -x c $(CFLAGS),g' uppsrc/ide/Makefile
sed -i -e 's,CPPFLAGS =.*,CPPFLAGS := $(CC) -c -O1 -x c++ $(CPPFLAGS) $(CXXFLAGS),g' uppsrc/ide/Makefile
sed -i -e 's,LIBPATH =.*,LIBPATH = -L$(LOCALBASE)/lib -L$(XORG_BASE)/lib,g' uppsrc/ide/Makefile

# 3. Add a makefile in root
cat > Makefile << EOF
# change to your host type (allowed are: LINUX, FREEBSD)
HOSTTYPE = FREEBSD

UPPOUT = out/
OutFile = \$(UPPOUT)ide/GCC-Gcc-Gui-\$(HOSTTYPE)-Main-Shared/ide

.PHONY: theide-svn
theide-svn: 
	\$(MAKE) -f uppsrc/ide/Makefile HOSTTYPE=\$(HOSTTYPE)

.PHONY: install
install:
	mkdir -p \$(DESTDIR)/usr/bin
	mkdir -p \$(DESTDIR)/usr/share/applications
	mkdir -p \$(DESTDIR)/usr/share/pixmaps
	mkdir -p \$(DESTDIR)/usr/share/upp-svn
	
	install -D \$(OutFile) \$(DESTDIR)/usr/bin/theide-svn
	install -D uppsrc/ide/theide.desktop \$(DESTDIR)/usr/share/applications/theide-svn.desktop
	install -D uppsrc/ide/theide-48.png \$(DESTDIR)/usr/share/pixmaps/theide.png
	
	cp -r bazaar \$(DESTDIR)/usr/share/upp-svn
	cp -r Common \$(DESTDIR)/usr/share/upp-svn
	cp -r uppsrc \$(DESTDIR)/usr/share/upp-svn
	cp -r examples \$(DESTDIR)/usr/share/upp-svn
	cp -r reference \$(DESTDIR)/usr/share/upp-svn
	cp -r tutorial \$(DESTDIR)/usr/share/upp-svn
	
	install -D uppsrc/ide/GCC.bm \$(DESTDIR)/usr/share/upp-svn/

.PHONY: all
all:	theide-svn install

.PHONY: clean
clean:
	${RM} -r \$(UPPOUT)

.PHONY: uninstall
uninstall:
	${RM} \$(DESTDIR)/usr/bin/theide-svn
	${RM} \$(DESTDIR)/usr/share/applications/theide-svn.desktop
	${RM} \$(DESTDIR)/usr/share/pixmaps/theide.png
	
	${RM} -r \$(DESTDIR)/usr/share/upp-svn

EOF

# 4. Archive everything in ~/rpm/SOURCES/
tar czf ~/rpm/SOURCES/upp-src-$UPPVERSION.tar.gz *

# 5. Come back to previous state
if [ ! $1 ]; then
	rm ~/upp
	mv ~/upp___orig ~/upp
fi
