#-------------------------------------------------------------------------------
#
#   Greg's Blogging - Makefile
#
#-------------------------------------------------------------------------------

MODNAME := GregsBlogging
MODSUBPKG := blogging

MC := 1.5.1
MAJVER := 1
MINVER := 0
BUGVER := 0

MODVER := $(MAJVER).$(MINVER).$(BUGVER)
MODPKG := gcewing/$(MODSUBPKG)
MODPKGNAME := gcewing.$(MODSUBPKG)

#MCP := /Local/Games/Minecraft/Modding/MCP/mcp725-mc1.4.6
MCP := /Local/Games/Minecraft/Modding/MCP/mcp744-mc1.5.1

#PROFILE := /Local/Games/Minecraft/Profiles/1.4.6-Forge-6.5.0.471
#PROFILE := /Local/Games/Minecraft/Profiles/1.4.7-Forge-6.6.0.497
#PROFILE := /Local/Games/Minecraft/Profiles/1.5.1-Forge-7.7.1.611
PROFILE := /Local/Games/Minecraft/Profiles/1.5.2-Forge-*

#SERVER := /Local/Games/Minecraft/Servers/1.4.7
SERVER := /Local/Games/Minecraft/Servers/1.5.2

export MODNAME MODTITLE MODPKG MODSUBPKG MAJVER MINVER BUGVER MODVER

PROJECT := $(MODNAME)
BACKUP_VOL := /Volumes/GREGTHUMB5
BACKUP_SUBDIR := ProjectsD/Minecraft/$(PROJECT)
BACKUP_DIR := $(BACKUP_VOL)/$(BACKUP_SUBDIR)
BACKUP_EXCLUDE := --exclude build --exclude jars --exclude lib --exclude Releases --exclude Test \
	--exclude Ancillary

DOTMC := /Users/greg/Library/Application\ Support/minecraft

SRC_INCLUDE := doc Makefile README.html src

CPATH := '$(MCP)/bin/minecraft:$(MCP)/jars/bin/*:$(MCP)/jars/bin/natives/*'
SPATH := src
CDEST := build/$(MC)
JDEST := $(MCP)/jars/mods/$(MODNAME).jar

#IC2PKG := ic2

RELJAR := $(MODNAME)-$(MODVER)-mc$(MC).jar
RELZIP := $(MODNAME)-$(MODVER)-mc$(MC).zip
RELDOC := $(MODNAME)-$(MODVER)-Doc.zip
RELSRC := $(MODNAME)-$(MODVER)-mc$(MC)-Source.zip
WEBDIR := web/minecraft/mods/$(MODNAME)

#JFLAGS = -Xlint:deprecation
MCUSER = gcewing

JC := javac $(JFLAGS)

JARCONTENTS = \
    -C $(1) $(MODPKG) \
    -C src $(MODPKG)/resources \
    -C src mods

#----------------------------------------------------------------------------------

test: compile install run

test_jar: compile install jar install_jar run_jar

release: compile install jar relpkg

#-----------------------------------------------------------------------------------------------

src_links:
	rm -f resources src-gcewing
	ln -s src/$(MODPKG)/resources .
	ln -s src/$(MODPKG) src-gcewing

texture_dirs:
	mkdir -p src/mods/$(MODPKGNAME)/textures/blocks
	mkdir -p src/mods/$(MODPKGNAME)/textures/items
	rm -f textures-blocks textures-items
	ln -s src/mods/$(MODPKGNAME)/textures/blocks textures-blocks
	ln -s src/mods/$(MODPKGNAME)/textures/items textures-items

#-----------------------------------------------------------------------------------------------

compile: $(CDEST) info
	rm -rf $(CDEST)/*
	$(JC) -classpath $(CPATH) -sourcepath $(SPATH) -d $(CDEST) \
    `find src -name '*.java'`

$(CDEST):
	mkdir -p $(CDEST)

test_info:
	geninfo.sh

info:
	geninfo.sh > src/$(MODPKG)/Info.java

install:
	rm -f $(JDEST)
	jar cf $(JDEST) $(call JARCONTENTS, build/$(MC))

run:
	cd $(MCP); ./startclient.sh $(MCUSER)

#-----------------------------------------------------------------------------------------------

jar: reob reljar

reob: reob_prep reob_run reob_cleanup

reob_prep:
	#cp -r build/$(MC)/$(IC2PKG) $(MCP)/bin/minecraft
	cp -r build/$(MC)/gcewing $(MCP)/bin/minecraft

reob_run:
	cd $(MCP); ./reobfuscate_srg.sh --client

reob_cleanup:
	#rm -rf $(MCP)/bin/minecraft/$(IC2PKG)
	rm -rf $(MCP)/bin/minecraft/$(MODPKG)

reljar:
	jar cf $(RELJAR) $(call JARCONTENTS, $(MCP)/reobf/minecraft)

#-----------------------------------------------------------------------------------------------

install_jar:
	rm -f $(PROFILE)/mods/$(MODNAME)-*
	cp $(RELJAR) $(PROFILE)/mods

#-----------------------------------------------------------------------------------------------

run_jar:
	rm -f $(DOTMC)
	ln -s $(PROFILE) $(DOTMC)
	cd $(PROFILE); \
		java -Xincgc -Xms1024M -Xmx1024M \
			-cp 'bin/*' \
			-Djava.library.path=bin/natives \
			net.minecraft.client.Minecraft $(MCUSER)

#-----------------------------------------------------------------------------------------------

relpkg: reldoc relsrc

reldoc: build/README.html
	rm -f $(RELDOC)
	cd build; zip -r ../$(RELDOC) README.html
	zip -r $(RELDOC) doc

build/%.html: %.html
	m4 -DMODVER=$(MODVER) $< > $@

relsrc:
	rm -f $(RELSRC)
	zip -r $(RELSRC) $(SRC_INCLUDE)
	
#----------------------------------------------------------------------------------

upload:
	rsync --progress --times $(RELJAR) $(RELDOC) $(RELSRC) $(COSC):$(WEBDIR)/download
	ssh $(COSC) 'cd $(WEBDIR); unzip -o download/$(RELDOC)'

#----------------------------------------------------------------------------------

backup: backup_subdir
	DATE=`date +%Y-%m-%d`; \
	TARFILE=$(BACKUP_DIR)/$(PROJECT)-$$DATE-mc$(MC).tar.gz; \
	tar zcvf $$TARFILE $(BACKUP_EXCLUDE) *; \
	ls -l $$TARFILE

backup_subdir:
	cd $(BACKUP_VOL); mkdir -p $(BACKUP_SUBDIR)
