# Makefile by Roberto Prieto - http://www.megastormsystems.com
# March 2024
# May 2018

# Application and package output names
PROGNAME64=Pac-Man Evolution
PKGNAME=PacManEvolution

# Compiler, option and source path
CC=clang++
CCFLAGS=-O3 -w -march=native -pthread --std=c++11 -fpic -lCRM64Pro 
PATHSRC=../../source/
PATHSRC2=../../source/res/
PATHOUT=../../bin/

# Object files
OBJS =  ArtificialNeuralNet.o EVNTrainer.o GeneticAlgorithm.o Brains.o BrainsFactory.o \
		GameField.o HoF.o MapSearchAStar.o MazeDynamic.o MemoryManager.o Menu.o Objects.o \
		ObjectsGhost.o ObjectsPacMan.o ResourceManager.o PME_icon.o Pac-Man_Evolution.o

# Information
all:
	@echo "Parameters supported: build64|clean|package"

# Build application tests
build64: $(PROGNAME64)
$(PROGNAME64): $(OBJS)
	@echo "Building '$(PROGNAME64)' application..."
	$(CC) $(CCFLAGS) $(OBJS) -o "$(PATHOUT)$(PROGNAME64).app"

# Clean all files
clean:
	@echo "Cleaning all binary files"
	/bin/rm -f $(PATHOUT)*.app
	/bin/rm -f $(OBJS)

# Create the distribution package
package:
	@echo "--------------------------------------------------------"
	@echo "Creating customized DMG+PKG for $(PROGNAME64)"
	@echo "--------------------------------------------------------"
	@echo ""
	@read -p "$(PROGNAME64) version (x.y.z): " APPVER; \
	cd PKG; ./build.sh "$(PROGNAME64)" "$$APPVER" "$(PKGNAME)"; cd ..; \
	cd DMG; ./build.sh "$$APPVER" "$(PKGNAME)"; cd ..; \
	mv *.pkg ../../Deploys; \
	mv *.dmg ../../Deploys 
	@echo "Done it!"

# Compiling of source files
%.o: $(PATHSRC)%.cpp 
	$(CC) $(CCFLAGS) -c $(MODE) $<
	
%.o: $(PATHSRC2)%.cpp 
	$(CC) $(CCFLAGS) -c $(MODE) $<
