CVSROOT = :pserver:anonymous@cvs.sourceforge.jp:/cvsroot/cocoamill
PROJ    = CocoaMill
MODULE  = cocoamill
VERSION = 0.1
TAG     = release-0_1

DISTDIR = dist
PROJDIR = $(DISTDIR)/$(PROJ)-$(VERSION)
TMPDIR = tmp
SRCDIR = Sources
OGREKIT = $(SRCDIR)/OgreKit.framework
FRAMEWORKDIR = Library/Frameworks
DEVTOOLSDIR = Application\ Support/Apple/Developer\ Tools
DEVEXAMPLESDIR = Developer/Examples
COMMANDDIR = usr/bin

PACKAGE = $(PROJ).pkg
INFO_PLIST = Packages/Info.plist
DESC_PLIST = Packages/Description.plist
MILL_FRAMEWORK = CocoaMill.framework
MILL_COMMAND = cocoamill
MILL_TEMPLATES = Templates/*
MILL_EXAMPLES = Examples

TMPIMAGE = $(DISTDIR)/TempImage.dmg
IMAGE  = $(DISTDIR)/$(PROJ)-$(VERSION).dmg
LABEL  = $(PROJ)
SIZE   = 5



all: clean step1 step2 step3 step4 step5

test: clean step1-test step2 step3 step4 step5

clean: clean-export clean-diskimage clean-dist

login:
	cvs -d $(CVSROOT) login


step1: ready-distdir checkout archive-src clean-rep
step1-test: ready-distdir checkout-test archive-src clean-rep

ready-distdir:
	mkdir -p $(DISTDIR)

checkout:
	cd $(DISTDIR); cvs -d$(CVSROOT) export -r $(TAG) -d $(PROJ)-$(VERSION) $(MODULE) > /dev/null 2>&1

checkout-test:
	cd $(DISTDIR); cvs -d$(CVSROOT) export -D tomorrow -d $(PROJ)-$(VERSION) $(MODULE) > /dev/null 2>&1

archive-src:
	cd $(DISTDIR); tar czf $(PROJ)-$(VERSION).tar.gz $(PROJ)-$(VERSION)

clean-rep:
	rm -rf $(PROJDIR)/Makefile

clean-export:
	rm -rf $(PROJDIR)


step2: ready-build build

ready-build:
	mkdir -p $(PROJDIR)/$(TMPDIR)/$(FRAMEWORKDIR)
	mkdir -p $(PROJDIR)/$(TMPDIR)/$(DEVTOOLSDIR)
	mkdir -p $(PROJDIR)/$(TMPDIR)/$(DEVEXAMPLESDIR)
	mkdir -p $(PROJDIR)/$(TMPDIR)/$(COMMANDDIR)
	CpMac -r $(OGREKIT) $(PROJDIR)/$(SRCDIR)

build:
	cd $(PROJDIR)/$(SRCDIR); xcodebuild -project CocoaMill.xcodeproj -target CocoaMill -buildstyle Deployment
	cd $(PROJDIR)/$(SRCDIR); xcodebuild -project CocoaMill.xcodeproj -target CommandLine -buildstyle Deployment
	cd $(PROJDIR); cp -R $(SRCDIR)/build/Deployment/$(MILL_FRAMEWORK) $(TMPDIR)/$(FRAMEWORKDIR)
	cd $(PROJDIR); cp -R $(SRCDIR)/build/Deployment/$(MILL_COMMAND) $(TMPDIR)/$(COMMANDDIR)
	cd $(PROJDIR); cp -R $(MILL_TEMPLATES) $(TMPDIR)/$(DEVTOOLSDIR)
	cd $(PROJDIR); cp -R $(MILL_EXAMPLES) $(TMPDIR)/$(DEVEXAMPLESDIR)/$(PROJ)


step3: create-package

create-package:
	cd $(PROJDIR); packagemaker -build -p $(PACKAGE) -f $(TMPDIR) -ds -i ../../$(INFO_PLIST) -d ../../$(DESC_PLIST)

clean-package:
	rm -rf $(PROJDIR)/$(TMPDIR)


step4: create-diskimage

create-diskimage: mount-diskimage copy-resources unmount-diskimage

mount-diskimage:
	hdiutil create $(TMPIMAGE) -megabytes $(SIZE) -ov
	hdid -nomount $(TMPIMAGE)
	sudo newfs_hfs -v $(LABEL) /dev/disk1s2
	hdiutil eject /dev/disk1
	hdid $(TMPIMAGE)

copy-resources:
	cp -R $(PROJDIR)/$(PACKAGE) /Volumes/$(LABEL)

unmount-diskimage:
	hdiutil eject /dev/disk1

clean-diskimage:
	rm -rf $(TMPIMAGE)


step5: make-dist

make-dist:
	hdiutil convert $(TMPIMAGE) -format UDZO -o $(IMAGE)

clean-dist:
	rm -rf $(IMAGE)


