
#
# There is nothing to configure here.  See common.mk for all configuration
# options.
#

include common.mk

# Make sure there are no suffixes set for top-level make
%.o : %.C

%.o : %.c

%.o : %.cc

BIN 		= $(GLAUNCH_BIN) $(_GL32_BIN) $(MAMESCAN_BIN)

RUNTIME_FILES	= runit.bat runit.log glaunch.log glaunch.sta _font.pcx

GLAUNCH_DIST	= glaunch/$(GLAUNCH_BIN) glaunch/$(_GL32_BIN) \
		glaunch/$(MAMESCAN_BIN) \
		glaunch/glaunch.dat \
		glaunch/readme.htm glaunch/todo.htm glaunch/changes.htm \
		glaunch/readme.txt glaunch/todo.txt glaunch/changes.txt \
		glaunch/copying.txt glaunch/scancode.txt glaunch/slicker.ttf \
		glaunch/mamescan.cfg

GLAUNCH_CONFIG	= glaunch/playlist.txt \
		glaunch/glaunch.cfg \
		glaunch/config/*.map \
		glaunch/config/*.rom \
		glaunch/config/*.cfg \
		glaunch/logs/readme.txt

_GL32_OBJS 	= engine/engine.o engine/timer.o engine/keypress.o \
		engine/joystick.o \
		model/emumgr.o model/emulator.o model/game.o \
		view/movebmp.o view/movetext.o view/scrllist.o view/menu.o \
		view/sshot.o view/bar.o \
		view/delay.o view/bgview.o view/ssaver.o view/outline.o \
		control/main.o control/logfile.o control/fileutil.o \
		control/emumenu.o control/bgctrl.o control/launcher.o \
		control/gl_key.o

ifeq ($(USE_CD), 1)
_GL32_OBJS	+= view/cdbg.o
endif

ifeq ($(USE_MP3), 1)
_GL32_OBJS	+= view/mp3bg.o
endif

# Order *is* sensitive for libraries

ifeq ($(TARGET), MINGW)
_GL32_LDFLAGS	= -mwindows
endif

ifeq ($(USE_PNG), 1)
_GL32_LDFLAGS	+= -lldpng -lpng -lz
endif

ifeq ($(USE_JPG), 1)
#_GL32_LDFLAGS	+= -ljpeg
_GL32_LDFLAGS	+= -ljpgal
endif

ifeq ($(USE_TTF), 1)
_GL32_LDFLAGS	+= -lalttf
endif

ifeq ($(USE_CD), 1)
_GL32_LDFLAGS	+= -lbcd
endif

ifeq ($(USE_MP3), 1)
_GL32_LDFLAGS	+= -lalmp3
endif

_GL32_LDFLAGS	+= $(ALLEGRO_LDFLAGS)

GLAUNCH_OBJS 	= glaunch.obj

MAMESCAN_OBJS	= mamescan/main.o mamescan/gamelist.o mamescan/confgen.o \
		mamescan/cnstrnt.o mamescan/gameinfo.o mamescan/options.o \
		mamescan/scanner.o mamescan/excption.o \
		mamescan/getopt.o mamescan/getopt1.o

ifeq ($(TARGET), MINGW)
MAMESCAN_LDFLAGS = -liberty
endif

HTML_DOC	= readme.htm todo.htm changes.htm
TXT_DOC		= $(HTML_DOC:.htm=.txt)

INCLUDE_FLAGS	= -Iinclude

all: $(BIN)

all-optimized:
	$(MAKE) DEBUG_MODE=0 all

dist-bin: compress doc
	cd .. ; \
	$(RM) $(GLAUNCH_ZIP) ; \
	$(ZIP) $(GLAUNCH_ZIP) $(GLAUNCH_DIST) ; \
	$(ZIP) $(GLAUNCH_ZIP) $(GLAUNCH_CONFIG)

dist-src: clean
	cd .. ; \
	$(RM) $(GLAUNCH_SOURCE_ZIP) ; \
	$(ZIP) -r $(GLAUNCH_SOURCE_ZIP) glaunch -x '*/cvs*' -x '*/CVS*'

dist-all:
	@echo .
	@echo Remeber to clean up glaunch.cfg!!
	@echo .
	$(MAKE) dist-src
	$(MAKE) dist-bin

depend:
	$(MAKE) -C engine depend
	$(MAKE) -C model depend
	$(MAKE) -C view depend
	$(MAKE) -C control depend
	$(MAKE) -C mamescan depend

doc: $(TXT_DOC)

compress: all-optimized
ifeq ($(USE_UPX), 1)
	-$(UPX) $(BIN)
endif

$(_GL32_BIN): $(_GL32_OBJS)
	$(LD) -o $(_GL32_BIN) $(_GL32_OBJS) $(LDFLAGS) $(_GL32_LDFLAGS)

$(_GL32_OBJS): _gl32_objs

_gl32_objs:
	$(MAKE) -C engine all
	$(MAKE) -C model all
	$(MAKE) -C view all
	$(MAKE) -C control all

$(MAMESCAN_BIN): $(MAMESCAN_OBJS)
	$(LD) -o $(MAMESCAN_BIN) $(MAMESCAN_OBJS) $(MAMESCAN_LDFLAGS)

$(MAMESCAN_OBJS): mscan_objs

mscan_objs:
	$(MAKE) -C mamescan all

perf_objs:
	$(MAKE) -C model perf.o emulator.o game.o
	$(MAKE) -C control fileutil.o

perf: perf_objs
	gxx -pg -o perf.exe model/perf.o model/emulator.o model/game.o control/fileutil.o -lallp


clean:
	$(MAKE) -C engine clean
	$(MAKE) -C model clean
	$(MAKE) -C view clean
	$(MAKE) -C control clean
	$(MAKE) -C mamescan clean
	$(RM) config/*~
	$(RM) include/*~
	$(RM) $(BIN) $(RUNTIME_FILES)
	$(RM) logs/glaunch.*
	$(RM) logs/runit.*
	$(RM) $(TXT_DOC)
	$(RM) *.upx

readme.txt: 	readme.htm
todo.txt:	todo.htm
changes.txt:	changes.htm
