# Script made by [SG-10]Cpt.Moore
# Note that this script will convert line endings in source files to LF.

SOURCEDIR=src
SMINCLUDES=env/include
ZRINCLUDES=src/include
BUILDDIR=build
SPCOMP_LINUX=env/linux/bin/spcomp
SPCOMP_DARWIN=env/darwin/bin/spcomp
DOS2UNIX_LINUX=dos2unix
DOS2UNIX_DARWIN=env/darwin/bin/dos2unix -p
VERSIONDUMP=./updateversion.sh

OS = $(shell uname -s)
ifeq "$(OS)" "Darwin"
	SPCOMP = $(SPCOMP_DARWIN)
	DOS2UNIX = $(DOS2UNIX_DARWIN)
else
	SPCOMP = $(SPCOMP_LINUX)
	DOS2UNIX = $(DOS2UNIX_LINUX)
endif

vpath %.sp $(SOURCEDIR)
vpath %.inc $(SOURCEDIR)/zr
vpath %.smx $(BUILDDIR)

SOURCEFILES=$(SOURCEDIR)/*.sp
OBJECTS=$(patsubst %.sp, %.smx, $(notdir $(wildcard $(SOURCEFILES))))

all: prepare $(OBJECTS)

prepare: clean prepare_builddir

prepare_newlines:
	@echo "Removing windows newlines"
	@find $(SOURCEDIR)  -name \*.inc -exec $(DOS2UNIX) "{}" \;
	@find $(SOURCEDIR)  -name \*.sp  -exec $(DOS2UNIX) "{}" \;
	@find $(SMINCLUDES) -name \*.inc -exec $(DOS2UNIX) "{}" \;
	@find $(ZRINCLUDES) -name \*.inc -exec $(DOS2UNIX) "{}" \;

prepare_builddir:
	@mkdir -p $(BUILDDIR)

%.smx: %.sp
	$(VERSIONDUMP)
	$(SPCOMP) -w241 -i$(SOURCEDIR) -i$(SMINCLUDES) -i$(ZRINCLUDES) -o$(BUILDDIR)/$@ $<

clean:
	@rm -fr $(BUILDDIR)