# add -d for debugging
DDDL_FLAGS =

# apple has a no-invalid-pp-token flag
#
# Note that we must not use the -P flag to strip out the #line generation,
# as that makes syntax errors show up on the wrong line
ifeq ($(shell uname), Darwin)
  CPP		= /usr/bin/cpp -Wno-invalid-pp-token
else
  CPP		= /usr/bin/cpp
endif

# if you have your AddOn directory mounted where your Linux system can
# directly copy to it, these defines could be useful
SUDO		= sudo
CP		= cp		# maybe scp would be better for you?
SED		= sed
#ADDON_DIR	= ~localronnie/DestructionForDummies
ADDON_DIR	= /Applications/World\ of\ Warcraft/Interface/AddOns/DestructionForDummies


# Nothing below here should need modification, unless you are adding files

ADDON_NAME =	DestructionForDummies


.SUFFIXES: .L .lua .dddl .y .c .l .o

.L.lua:
	$(CPP) $< > $@.tmp
	$(SED) -e '/^#/d' -e 's/^[ \t]*--.*//' -e '/^[ \t]*$$/d' $@.tmp > $@
	rm $@.tmp

.dddl.lua: dddl/dddl
	dddl/dddl $(DDDL_FLAGS) -i $<  > $@.tmp
	mv $@.tmp $@

#		DeathKnightBlood.lua		\
#		DeathKnightFrost.lua		\
#		DeathKnightUnholy.lua		\
#		HunterBeastmaster.lua		\
#		HunterMarksman.lua		\
#		HunterSurvival.lua		\
#		MageFrost.lua			\
#		MonkWindwalker.lua		\
#		PaladinRetribution.lua		\
#		PriestShadow.lua		\
#		RogueAssassination.lua		\
#		RogueCombat.lua			\
#		RogueSubtlety.lua		\
#		WarlockDestruction.lua		\
#		MageArcane.lua			\
#		MageFire.lua			\
#		ShamanElemental.lua		\
#		ShamanEnhancement.lua		\
#		WarriorFury.lua			\
#		WarriorProtection.lua

# generated files
TARGETS =  	DestructionForDummies.lua	\
		Debug.lua			\
		LocaleLocal.lua			\
		Version.lua			\
		DemonHunterHavoc.lua		\
		DruidFeral.lua 			\
		DruidBalance.lua		\
		WarlockAffliction.lua 		\
		WarlockDemonology.lua

# Source files and directories
SOURCES	=	DestructionForDummies.L		\
		Debug.L				\
		Makefile			\
		ReadMe				\
		dddl				\
		src

# Files that are part of the executable
FILES 	=  	DestructionForDummies.toc 	\
		Classes.lua			\
		LocaleEnUS.lua			\
		LocaleDeDE.lua			\
		LocaleFrFR.lua			\
		Utilities.lua			\
	   	Variables.lua 			\
	   	$(TARGETS)

VPATH = src

all: do_dddl $(TARGETS) inst.bat

do_dddl:
	(cd dddl; make dddl)

LocaleLocal.lua: dddl/dddl
	dddl/dddl -l > tmpLocale
	mv tmpLocale LocaleLocal.lua

Version.lua: DestructionForDummies.toc tools/mk_version.sh
	tools/mk_version.sh > /tmp/Version.lua
	mv /tmp/Version.lua .

release: all
	mkdir $(ADDON_NAME)
	cp -r $(FILES) $(SOURCES) tools $(ADDON_NAME)
	rm -rf $(ADDON_NAME)/src/old
	(cd $(ADDON_NAME); make clean; make ; rm -f inst.bat)
	zip -r 'DestructionForDummies'`grep Version DestructionForDummies.toc | sed -e 's/^## Version: *//' -e 's/\./_/g'`'.zip' $(ADDON_NAME)/*
	rm -rf $(ADDON_NAME)

clean:
	rm -f *~ */*~ \#* $(TARGETS) tmpLocale
	rm -rf $(ADDON_NAME) *.zip inst.bat *.tmp
	cd dddl ; make clean

# this rule exists just for convenience--it assumes that you have your
# AddOns directory mounted so it can be viewed by your Linux system.
install: all
	chmod 644 $(FILES)
	$(CP) $(FILES) $(ADDON_DIR)

# build a bat file to install things on Windows
inst.bat: Makefile
	rm -f inst.bat
#	sh -c 'for f in $(FILES) ; do echo "copy /V /Y /Z $$f c:\Users\Public\Games\Worldo~1\Interface\AddOns\DestructionForDummies" >> inst.bat; done'
	sh -c 'for f in $(FILES) ; do echo "copy /V /Y /Z $$f c:\Progra~2\Worldo~1\Interface\AddOns\DestructionForDummies" >> inst.bat; done'
	chmod 755 inst.bat

*.lua: dddl/dddl

# include dependencies
DeathKnightBlood.lua: src/mutexes.h src/DeathKnightBlood.dddl
DeathKnightFrost.lua: src/mutexes.h src/DeathKnightFrost.dddl
DeathKnightUnholy.lua: src/mutexes.h src/DeathKnightUnholy.dddl
DruidFeral.lua: src/mutexes.h src/DruidFeral.dddl

*.lua: src/flasks.h
