SHELL=/bin/sh

TOPDIR  := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
export TOPDIR

DISTDIR=/tmp/qtarch-dist-dir
VERSION=1.3
RELEASE=1
SRCVERSION=1.2.0
QTARCHDISTDIR=qtarch-$(VERSION)
QTARCHDIST=qtarch-$(VERSION)-$(RELEASE)
INSTALLDIR=/usr/local

#
# $Source: /usr/local/cvs/qtarch/Makefile,v $
#

####### Files

HEADERS	=	\
		ProjectDialogData.h \
		MakeEditData.h \
		GridDialogData.h \
		ProjectWnd.h \
		Project.h \
		DlgObject.h \
		AssDialog.h \
		Dialog.h \
		ProjectDialog.h \
		MakeGen.h \
		MakeEdit.h \
		ObjectList.h \
		DialogWnd.h \
		WidgetLayout.h \
		WidgetFrame.h \
		GridDialog.h \
		GenerateDialog.h \
		DlgParser.h \
		Toolbar.h \
		StatusBar.h \
		GuiTools.h

SOURCES	=	\
		ProjectDialogData.cpp \
		MakeEditData.cpp \
		GridDialogData.cpp \
		main.cpp \
		ProjectWnd.cpp \
		ObjectList.cpp \
		Project.cpp \
		DlgObject.cpp \
		AssDialog.cpp \
		Dialog.cpp \
		ProjectDialog.cpp \
		MakeGen.cpp \
		MakeEdit.cpp \
		DialogWnd.cpp \
		WidgetLayout.cpp \
		WidgetFrame.cpp \
		GridDialog.cpp \
		GenerateDialog.cpp \
		DlgParser.cpp \
		Parser.cpp \
		Toolbar.cpp \
		StatusBar.cpp \
		GuiTools.cpp

OBJECTS	=	\
		ProjectDialogData.o \
		MakeEditData.o \
		GridDialogData.o \
		main.o  \
		ProjectWnd.o \
		DlgObject.o \
		Dialog.o \
		AssDialog.o \
		ObjectList.o \
		Project.o \
		ProjectDialog.o \
		MakeGen.o \
		MakeEdit.o \
		DialogWnd.o \
		WidgetLayout.o \
		WidgetFrame.o \
		GridDialog.o \
		GenerateDialog.o \
		DlgParser.o \
		Parser.o \
		Toolbar.o \
		StatusBar.o \
		GuiTools.o

SRCMETA	=	\
		mProjectDialogData.cpp \
		mMakeEditData.cpp \
		mGridDialogData.cpp \
		mProjectWnd.cpp \
		mObjectList.cpp \
		mProject.cpp \
		mDlgObject.cpp \
		mAssDialog.cpp \
		mDialog.cpp \
		mProjectDialog.cpp \
		mMakeGen.cpp \
		mMakeEdit.cpp \
		mDialogWnd.cpp \
		mWidgetLayout.cpp \
		mWidgetFrame.cpp \
		mGridDialog.cpp \
		mGenerateDialog.cpp \
		mDlgParser.cpp \
		mToolbar.cpp \
		mStatusBar.cpp

OBJMETA	=	\
		ProjectDialogData.moc.o \
		MakeEditData.moc.o \
		GridDialogData.moc.o \
		ProjectWnd.moc.o \
		ObjectList.moc.o \
		Project.moc.o \
		DlgObject.moc.o \
		AssDialog.moc.o \
		Dialog.moc.o \
		ProjectDialog.moc.o \
		MakeGen.moc.o \
		MakeEdit.moc.o \
		DialogWnd.moc.o \
		WidgetLayout.moc.o \
		WidgetFrame.moc.o \
		GridDialog.moc.o \
		GenerateDialog.moc.o \
		DlgParser.moc.o \
		Toolbar.moc.o \
		StatusBar.moc.o

TARGET	=	qtarch


include Makefile.common

####### Build rules

pixmap_d: 
	@$(MAKE) -C pixmap
	@echo

widget_d: 
	@$(MAKE) -C widget
	@echo

prop_d:	
	@$(MAKE) -C prop
	@echo

bmp_d:
	@$(MAKE) -C bmp
	@echo

layout_d:
	@$(MAKE) -C layout
	@echo

$(TARGET): bmp_d prop_d widget_d layout_d pixmap_d $(HEADERS) $(OBJECTS) $(OBJMETA)
	@echo
	@echo
	@echo "Linking $(TARGET)"
	@$(CC) $(OBJECTS) $(OBJMETA) -o $(TARGET) $(LFLAGS)


efence: bmp_d prop_d widget_d layout_d pixmap_d $(OBJECTS) $(OBJMETA) 
	$(CC) $(OBJECTS) $(OBJMETA) -o $(TARGET) -lefence $(LFLAGS) 

run: all
	./qtarch

depend:
	@makedepend $(SOURCES) -f- >.depend 2> /dev/null
	@$(MAKE) -C pixmap depend
	@$(MAKE) -C widget depend
	@$(MAKE) -C prop depend
	@$(MAKE) -C bmp depend
	@$(MAKE) -C layout depend

gen:
	$(QTARCHBIN) -g *.dlg
	@$(MAKE) -C pixmap gen
	@$(MAKE) -C widget gen
	@$(MAKE) -C prop gen
	@$(MAKE) -C bmp gen
	@$(MAKE) -C layout gen

clean:
	-rm -f `find . -name '*.bak' -o -name '*~' -o -name '*%' -o -name '#*' `
	-rm -f *.moc.cpp $(OBJECTS) $(OBJMETA)
	@$(MAKE) -C pixmap clean
	@$(MAKE) -C widget clean
	@$(MAKE) -C prop clean
	@$(MAKE) -C bmp clean
	@$(MAKE) -C layout clean

cleaner: clean
	-rm -f $(TARGET)
	@$(MAKE) -C pixmap cleaner
	@$(MAKE) -C widget cleaner
	@$(MAKE) -C prop cleaner
	@$(MAKE) -C bmp cleaner
	@$(MAKE) -C layout cleaner

status:
	cvs status | grep Loc

doc:
	@$(MAKE) -C doc doc

dist: $(DISTDIR)/$(QTARCHDIST).tar.gz
execdist: $(DISTDIR)/$(QTARCHDIST)-i486-unknown-linux.tar.gz
rpm: $(DISTDIR)/$(QTARCHDIST).i386.rpm $(DISTDIR)/$(QTARCHDIST).src.rpm

SPEC=$(DISTDIR)/redhat/SPECS/$(QTARCHDIST).spec

$(DISTDIR)/$(QTARCHDIST).i386.rpm:
$(DISTDIR)/$(QTARCHDIST).src.rpm: \
		$(DISTDIR)/$(QTARCHDIST).tar.gz \
		$(DISTDIR)/$(QTARCHDIST)-i486-unknown-linux.tar.gz

	ln -sf $(DISTDIR)/$(QTARCHDIST).tar.gz \
		$(DISTDIR)/redhat/SOURCES/$(QTARCHDIST).tar.gz

	@echo "Creating spec file"
	@echo "Description: Qt Architect"			 > $(SPEC)
	@echo "Summary: Qt Architect" 				>> $(SPEC)
	@echo "Name: qtarch" 					>> $(SPEC)
	@echo "Version: $(VERSION)" 				>> $(SPEC)
	@echo "Release: $(RELEASE)" 				>> $(SPEC)
	@echo "Source: http://www.primenet.com/~jtharris/qtarch/$(QTARCHDIST).tar.gz" >> $(SPEC)
	@echo "Copyright: GPL" 					>> $(SPEC)
	@echo "Group: Development/Tools" 			>> $(SPEC)
	@echo "Icon: QtArch.xpm" 				>> $(SPEC)
	@echo "" 						>> $(SPEC)
	@echo "%prep" 						>> $(SPEC)
	@echo "%setup" 						>> $(SPEC)
	@echo "" 						>> $(SPEC)
	@echo "%build" 						>> $(SPEC)
	@echo "cd .." 						>> $(SPEC)
	@echo "rm -rf $(QTARCHDISTDIR)"				>> $(SPEC)
	@echo "tar xzf ../../$(QTARCHDIST)-i486-unknown-linux.tar.gz" >> $(SPEC)
	@echo "cd $(QTARCHDISTDIR)" 				>> $(SPEC)
	@echo "" 						>> $(SPEC)
	@echo "%install"					>> $(SPEC)
	@echo "install -m 755 -s qtarch /usr/bin" 		>> $(SPEC)
	@echo "" 						>> $(SPEC)
	@echo "%files" 						>> $(SPEC)
	@echo "/usr/bin/qtarch" 				>> $(SPEC)
	@echo "%doc COPYING" 					>> $(SPEC)
	@echo "%doc TODO" 					>> $(SPEC)
	@echo "%doc README" 					>> $(SPEC)
	@echo "%doc misc/DlgEdit.Template.Makefile" 		>> $(SPEC)
	@echo "%doc misc/dlgUpdate.pl" 				>> $(SPEC)
	@echo "%doc help/*.html"				>> $(SPEC)
	@echo "%doc doc/QtArch.ps"				>> $(SPEC)

	@echo "Need root access to begin rpm creation"
	@su - -c "cd $(DISTDIR)/redhat/SPECS; \
		rpm -ba --rcfile rpmrc --clean --quiet $(SPEC)"
	@mv $(DISTDIR)/redhat/RPMS/i386/$(QTARCHDIST).i386.rpm $(DISTDIR)
	@mv $(DISTDIR)/redhat/SRPMS/$(QTARCHDIST).src.rpm $(DISTDIR)
	@rm $(SPEC)


$(DISTDIR)/$(QTARCHDIST).tar.gz:
	-mkdir $(DISTDIR)
	rm -rf $(DISTDIR)/qtarch
	rm -rf $(DISTDIR)/$(QTARCHDISTDIR)
	( \
		cd $(DISTDIR); \
		cvs export -D now qtarch; \
		mv qtarch $(QTARCHDISTDIR); \
		cd $(QTARCHDISTDIR); \
		cd bmp; $(MAKE); cd ..; \
		cd prop; $(QTARCHBIN) -g *.dlg; cd ..; \
		cd layout; $(QTARCHBIN) -g *.dlg; cd ..; \
		cd pixmap; $(QTARCHBIN) -g *.dlg; cd ..; \
		cd doc; $(MAKE) doc; cd ..; \
		$(MAKE) Parser.cpp; \
		$(QTARCHBIN) -g *.dlg; \
		chmod +w Makefile Makefile.common widget/Makefile prop/Makefile bmp/Makefile; \
		cd ..; \
                tar czvf $(QTARCHDIST).tar.gz `find $(QTARCHDISTDIR) \
                        -name *.cpp -o \
                        -name *.h -o \
                        -name *.y -o \
                        -name *.dlg -o \
                        -name *.bmp -o \
                        -name *.xpm -o \
			-name *.html -o \
			-name *.ps -o \
			-name *.gif -o \
			-name *.tex -o \
                        -name Makefile -o \
                        -name Makefile.common -o \
                        -name Makefile.librules -o \
                        -name Makefile.install -o \
                        -name DlgEdit.Template.Makefile -o \
                        -name dlgUpdate.pl -o \
                        -name COPYING -o \
                        -name README -o \
                        -name TODO`; \
	)
	rm -rf $(DISTDIR)/$(QTARCHDISTDIR)


$(DISTDIR)/$(QTARCHDIST)-i486-unknown-linux.tar.gz: $(DISTDIR)/$(QTARCHDIST).tar.gz
	(cd $(DISTDIR); \
		tar xzf $(QTARCHDIST).tar.gz; \
		cd $(DISTDIR)/$(QTARCHDISTDIR); \
		time $(MAKE) && \
			strip qtarch && \
			mv Makefile.install Makefile && \
			cd .. && \
			tar czvf $(QTARCHDIST)-i486-unknown-linux.tar.gz \
				$(QTARCHDISTDIR)/qtarch \
				$(QTARCHDISTDIR)/misc/DlgEdit.Template.Makefile \
				$(QTARCHDISTDIR)/misc/dlgUpdate.pl \
				$(QTARCHDISTDIR)/help/ \
				$(QTARCHDISTDIR)/doc/QtArch.ps \
				$(QTARCHDISTDIR)/Makefile \
				$(QTARCHDISTDIR)/COPYING \
				$(QTARCHDISTDIR)/TODO \
				$(QTARCHDISTDIR)/README && \
			rm -rf $(DISTDIR)/$(QTARCHDISTDIR) \
	)


srcdist:
	-mkdir $(DISTDIR)
	( \
		cd $(DISTDIR); \
		cvs export -D now qtarch; \
		mv qtarch $(QTARCHDISTDIR); \
		cd $(QTARCHDISTDIR); \
		cd bmp; $(MAKE); cd ..; \
		cd prop; $(QTARCHBIN) -g *.dlg; cd ..; \
		cd layout; $(QTARCHBIN) -g *.dlg; cd ..; \
		cd pixmap; $(QTARCHBIN) -g *.dlg; cd ..; \
		$(MAKE) Parser.cpp; \
		$(QTARCHBIN) -g *.dlg; \
		chmod +w Makefile Makefile.common widget/Makefile prop/Makefile bmp/Makefile; \
		cd ..; \
		tar czvhf qtarch-source-$(SRCVERSION).tar.gz qtarch; \
		rm -rf $(DISTDIR)/qtarch \
	)


include Makefile.install
