KDEDIR?= $(shell test `kde-config --prefix` && kde-config --prefix || echo /usr/local)

QTINCS = ${QTDIR} ${QTDIR}/include /usr/include/qt /usr/include/qt3 /usr/lib/qt /usr/lib/qt3 /usr/share/qt3 ${QTDIR}/include /usr/lib/qt/include /usr/lib/qt3/include /usr/local/qt/include /usr/share/qt3/include /usr/include /usr/X11R6/include /X11/qt /usr/X11R6/include/qt /usr/qt/3 /usr/qt/3/include /usr/pkg/qt3/include
QTBINS = ${QTDIR} ${QTDIR}/bin /usr/bin /usr/X11R6/bin /usr/local/qt/bin /usr/lib/qt3 /usr/lib/qt /usr/share/qt3 /usr/lib/qt3/bin /usr/lib/qt/bin /usr/share/qt3/bin /usr/lib/qt3/src/moc /usr/lib/qt/src/moc /usr/share/qt3/src/moc
KDEINCS= ${KDEDIR}/include ${KDEDIR}/include/kde /usr/include /usr/include/kde /opt/kde3/include /opt/kde/include /usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include
KDELIBS= ${KDEDIR}/lib ${KDEDIR} $(shell kde-config --path lib | sed 's/:/ /g') /usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde3 /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde3/lib /opt/kde/lib /usr/X11R6/kde/lib

CPP    = $(shell test -x `which g++` && echo g++ || echo $(CXX))
C      = $(shell test -x `which gcc` && echo gcc || echo $(CC))
CFLAGS?= -Wall
CXXFLAGS ?= -fno-exceptions -Wall
UFLAGS = -pch klocale.h -tr tr2i18n
INSTALL= ${DESTDIR}${KDEDIR}/bin
UIC    = ${QTBIN}/uic
MOC    = ${QTBIN}/moc
QEMBED = ${QTBIN}/qembed


# =============================================================================
#           YOU PROBABLY DONT NEED TO EDIT ANYTHING UNDER HERE....
# =============================================================================


# FLAGS:
# D = debug or optimize
# I = include
# B = build
# U = uic

PRJNAME= kmenc15
VERSION= $(shell grep 'char version' main.cpp -m 1 | cut -d \" -f 2)

CPROGS = 
CPPROGS= kmenc15

CPPFILE= ${FPROG1}
CFILE  = ${FCPROG1}

FPROG1 = main.cpp dialog.cpp wcon.cpp images.cpp process.cpp
FCPROG1=

IFILES = process.moc images.h

UIFILES= wcon.ui
IMAGES = images/*.png
DATA   = images/*.jpg

ifeq ($(wildcard DEBUGMODE),)
DFLAGS = -O2
else
DFLAGS = -g
endif

BFLAGS = 
IFLAGS = 
BXXFLAGS = -lkdeui -lkio -lkhtml $(filter-out -L/usr/lib,-L${KDELIB})
IXXFLAGS = -I${QTINC} -I${KDEINC}

MOSTCLN=*.o *\~
CLEAN  =${MOSTCLN} *.moc $(UIFILES:.ui=.cpp) $(UIFILES:.ui=.h)
DISTCLN=${CLEAN} ${PROGS} ${PRJNAME}-*.tar.* DEBUGMODE *.dep
REALCLN=${DISTCLN} dev/ *.pcs

ifneq ($(wildcard ${IMAGES}),)
CLEAN += images.h
endif



#           From here on, mostly generic stuff, nothing to change....
# =============================================================================


PROJECT= ${PRJNAME}-${VERSION}

GZFILE = ${PROJECT}.tar.gz
BZFILE = ${PROJECT}.tar.bz2

CFLAGS+= ${DFLAGS}
CXXFLAGS += ${DFLAGS}

PROGS  = $(strip ${CPPROGS} ${CPROGS})
SOURCES= $(strip ${CPPFILE} ${CFILE} ${IFILES})
all: ${PROGS}

kmenc15: $(FPROG1:.cpp=.o) $(FCPROG1:.c=.o)


 
# ===========================PROGRAM===========================================
${CPPROGS}: ; $(strip ${CPP} ${CFLAGS} ${BXXFLAGS} -o $@ $^)
${CPROGS}:  ; $(strip ${C}   ${CFLAGS} ${BFLAGS}   -o $@ $^)

# ==========================CONFIGURE==========================================
source: ${SOURCES}
Makefile.dep: Makefile
	@rm -f Makefile.dep;
	
	@echo -n 'Finding Qt inlcude dir.. ';
	@QTINC=`for I in ${QTINCS};  do test -r $$I/qglobal.h     && { echo $$I; exit 0; }; done`; \
	if [ -d "$$QTINC" ]; then echo $$QTINC; else echo Not Found.; exit 1; fi; \
	echo 'QTINC  = '$$QTINC >> $@;
	
	@echo -n 'Finding Qt Binaries dir.. ';
	@QTBIN=`for I in ${QTBINS};  do test -r $$I/uic           && { echo $$I; exit 0; }; done`; \
	if [ -d "$$QTBIN" ]; then echo $$QTBIN; else echo Not Found.; exit 1; fi; \
	echo 'QTBIN  = '$$QTBIN >> $@;
	
	@echo -n 'Finding KDE inlcude dir.. ';
	@KDEINC=`for I in ${KDEINCS}; do test -r $$I/ksharedptr.h && { echo $$I; exit 0; }; done`; \
	if [ -d "$$KDEINC" ]; then echo $$KDEINC; else echo Not Found.; exit 1; fi; \
	echo 'KDEINC  = '$$KDEINC >> $@;
	
	@echo -n 'Finding KDE libraries dir.. ';
	@KDELIB=`for I in ${KDELIBS}; do test -r $$I/libkdeui.la  && { echo $$I; exit 0; }; done`; \
	if [ -d "$$KDELIB" ]; then echo $$KDELIB; else echo Not Found.; exit 1; fi; \
	echo 'KDELIB  = '$$KDELIB >> $@;
	
	@echo 'Generating Depends...'; ${MAKE} --no-print-directory dep;

dep: source
ifneq ($(strip ${CPPFILE}),)
	${CPP} ${IXXFLAGS} -MM ${CPPFILE} >> Makefile.dep
endif
ifneq ($(strip ${CFILE}),)
	${C} ${IFLAGS} -MM ${CFILE} >> Makefile.dep
endif 

-include Makefile.dep

# ===========================COMPILE===========================================
$(CPPFILE:.cpp=.o) : %.o : %.cpp ; $(strip ${CPP} ${CXXFLAGS} ${IXXFLAGS} -c -o $@ $<)
$(CFILE:.c=.o)     : %.o : %.c   ; $(strip ${C}   ${CFLAGS}   ${IFLAGS}   -c -o $@ $<)


# ===========================  UIC  ===========================================

ifeq ($(strip $(wildcard ${IMAGES})),)
images.h: ; @true
else
images.h: ${DATA} ${IMAGES}
	${QEMBED} ${DATA} --images ${IMAGES} > $@
endif
$(UIFILES:.ui=.cpp) : %.cpp : %.diff %.ui %.h %.moc
	${UIC} ${UFLAGS} -impl $*.h -o $@ $*.ui
	$(if $(wildcard $<),patch -s --no-backup-if-mismatch < $<)
$(UIFILES:.ui=.h) : %.h: %.ui ; ${UIC} -o $@ $<
%.moc: %.h ; ${MOC} -o $@ $<
%.diff: ; @true

# ===========================OTHER CRAP========================================
install:
	install -d ${INSTALL}
	install ${PROGS} ${INSTALL}
install-strip: install
	cd ${INSTALL}
	strip ${PROGS}
uninstall:
	cd ${INSTALL}
	rm -f ${PROGS}
mostlyclean:
	rm -f ${MOSTCLN}
clean:
	rm -f ${CLEAN}
distclean:
	rm -f ${DISTCLN}

.distmakeimg:
	rm -rf ${REALCLN}


dist:     ${GZFILE}
dist-bz2: ${BZFILE}
upload:     dist     ; dist-kmenc15.sh ${GZFILE}
upload-bz2: dist-bz2 ; dist-kmenc15.sh ${BZFILE}
%.tar.gz :
	cp -r . /tmp/${PROJECT}/
	@${MAKE} -C /tmp/${PROJECT}/ .distmakeimg
	tar zfc $@ -C /tmp ${PROJECT}
	rm -rf /tmp/${PROJECT}
%.tar.bz2: images.h
	cp -r . /tmp/${PROJECT}/
	rm -r /tmp/${PROJECT}/images
	@${MAKE} -C /tmp/${PROJECT}/ .distmakeimg
	tar jfc $@ -C /tmp ${PROJECT}
	rm -rf /tmp/${PROJECT}

# =========================DEBUG STUFF=========================================

.debugclean:
	rm -f *.o *\~ DEBUGMODE

ifeq ($(wildcard DEBUGMODE),)
debug: all
nodebug: .debugclean all
else
debug: DEBUGMODE all
nodebug: all
endif

DEBUGMODE: .debugclean ; touch $@

.PRECIOUS: %.moc %.h %.ui %.cpp %.o
