#!/usr/bin/make -s
#
# i.Task Make File (C) Matthew Allen <fret@memecode.com>
#

.SILENT :
	

CC = g++
target = itask
Build = Release
Gui = X
BuildDir = $(Build)$(Gui)
LgiPath = ../Lgi
VPATH = %.cpp \
		$(BuildDir):\
		Code:\
		$(LgiPath)/$(BuildDir):\
		$(LgiPath)/src/common/Db:\
		$(LgiPath)/src/common/Lgi:\
		$(LgiPath)/src/common/Resource:\
		$(LgiPath)/src/common/General:\
		$(LgiPath)/src/common/Text:\
		$(LgiPath)/src/common/Storage:\
		$(LgiPath)/src/common/INet:\
		$(LgiPath)/src/common/INet/AuthNtlm:\
		$(LgiPath)/src/common/INet/Ber:\
		$(LgiPath)/src/common/Gdc2:\
		$(LgiPath)/src/common/Gdc2/Font:\
		$(LgiPath)/src/common/Gdc2/Filters:\
		$(LgiPath)/src/common/Widgets:\
		$(LgiPath)/src/linux/General:\
		$(LgiPath)/src/linux/Lgi:\
		$(LgiPath)/src/linux/Gdc2:\
		$(LgiPath)/src/linux/$(Gui)

ccflags = -fPIC -w -fno-inline -fexceptions
defs = -DLGI_RES -DLINUX -D_REENTRANT -D$(Gui)WIN
release = itask-linux

ifeq ($(Build),Debug)
	#debug builds..
	flags = -g $(ccflags) $(defs)
	defs += -D_DEBUG
	tag = d
else
	#release builds
	flags = -s -Os $(ccflags) $(defs)
endif

# libraries
libs =		-L/usr/X11R6/lib \
			-L$(LgiPath)/$(BuildDir) \
			-lpthread \
			-static-libgcc \
			-llgi-x$(tag)

#include paths for .h files
incpath =	-I$(LgiPath)/include/common \
			-I$(LgiPath)/include/linux/$(Gui) \
			-ICode \
			-I/usr/X11R6/include \
			-I/usr/X11R6/include/X11/Xft \
			-I/usr/X11R6/include/X11/extensions \
			-I/usr/include/freetype2

# all the objects required
depends =	ProcessView.o \
			\
			GAbout.o \
			LgiMain.o \
			Gif.o \
			Lzw.o \
			Png.o \
			GHtml.o

# Executable target
$(target) : Lgi $(depends)
	@echo Linking $(target) [$(Gui)/$(Build)]
	$(CC) -Wl,-export-dynamic -f -o $(target) $(addprefix $(BuildDir)/,$(depends)) $(libs)
	@echo Done.

#-shared  

# Source files
%.o : %.cpp
	@echo $(<F) [$(Gui)]
	$(CC) $(incpath) $(flags) -c $< -o $(BuildDir)/$(@F)

Lgi :
	ls $(BuildDir) > /dev/null 2> /dev/null || mkdir $(BuildDir)
	export BUILD=$(Build); export gui=$(Gui); $(MAKE) -C $(LgiPath)
	export Build=$(Build); export Gui=$(Gui); $(MAKE) -C $(LgiPath)/Gel
	
# Clean the directory out
clean :
	rm -f $(BuildDir)/*.o $(target)
	@echo Cleaned.

cleanall :
	rm -f $(BuildDir)/* $(target)
	rm -f $(LgiPath)/$(BuildDir)/*
	@echo Cleaned All.

core :
	-rm core* 2> /dev/null
	-rm .nfs* 2> /dev/null

release :
	-rm $(release).tar.bz2 2> /dev/null
	ls $(release) > /dev/null 2> /dev/null || mkdir $(release)
	ls $(release)/Code > /dev/null 2> /dev/null || mkdir $(release)/Code
	cp $(LgiPath)/$(BuildDir)/liblgi-x$(tag).so $(release)
	cp $(LgiPath)/Gel/$(BuildDir)/liblgiskin-x$(tag).so $(release)
	strip $(release)/*.so
	cp $(target) $(release)
	strip $(release)/$(target)
	cp *makefile $(release)
	cp Code/* $(release)/Code
	cp Code/*.lr8 $(release)
	cp run-itask $(release)
	chmod 760 $(release)/*.so $(release)/itask $(release)/run-itask
	tar -cf $(release).tar $(release)/*
	bzip2 -z $(release).tar 
	rm -r $(release)
	ls -l $(release).tar.bz2

