.silent:

## debug/retail -----------------------------------------------------------

DEBUG=0

!if "$(r)" == "1"
BUILD=RETAIL
!endif

!if "$(BUILD)"==""
!message Defaulting BUILD to DEBUG
BUILD=DEBUG
!endif

!if "$(BUILD)"!="RETAIL"
DEBUG=1
!endif

!if $(DEBUG)
OUT=debug
!else
OUT=release
!endif


## language ---------------------------------------------------------------

!if "$(LANG)"==""
!message Defaulting LANG to ENGLISH
LANG=ENGLISH
!endif

!if "$(LANG)"=="FRENCH"
PILOG_COUNTRY=COUNTRY_FRANCE
PILOT_LANG=LANGUAGE_FRENCH
!else if "$(LANG)"=="GERMAN"
PILOG_COUNTRY=COUNTRY_GERMANY
PILOT_LANG=LANGUAGE_GERMAN
!else
PILOG_COUNTRY=COUNTRY_UNITED_STATES
PILOT_LANG=LANGUAGE_ENGLISH
!endif


## project ----------------------------------------------------------------

PROJECT		= HandyShop
PRC			= shop
APPID		= iShp
OBJS		= $(OUT)\shop.obj \
			  $(OUT)\details.obj \
			  $(OUT)\stores.obj \
			  $(OUT)\options.obj \
			  $(OUT)\globals.obj \
			  $(OUT)\util.obj \
!if $(DEBUG)
			  $(OUT)\debug.obj \
!endif


## tools ------------------------------------------------------------------

TOOLDIR		= d:\usr
ARCH		= m68k-palmos-coff

RESS		=
LIBS		= -L$(TOOLDIR)\$(ARCH)\lib

CC			= $(TOOLDIR)\bin\$(ARCH)-gcc
LK			= $(TOOLDIR)\bin\$(ARCH)-gcc
STRIP		= $(TOOLDIR)\bin\$(ARCH)-strip
OBJRES		= $(TOOLDIR)\bin\$(ARCH)-obj-res
MKDEP		= $(TOOLDIR)\bin\mkdep
TXT2BITM	= $(TOOLDIR)\bin\txt2bitm
PILRC		= $(TOOLDIR)\bin\pilrc
BUILDPRC	= $(TOOLDIR)\bin\build-prc
TAGS		= $(TOOLDIR)\bin\ctags --excmd=p

CP			= $(TOOLDIR)\bin\cp
RM			= $(TOOLDIR)\bin\rm

INCLUDES	= -I$(TOOLDIR)\$(ARCH)\include\PalmOS2			\
				-I$(TOOLDIR)\$(ARCH)\include\PalmOS2\UI			\
				-I$(TOOLDIR)\$(ARCH)\include\PalmOS2\System		\
				-I$(TOOLDIR)\$(ARCH)\include\PalmOS2\Hardware

DEFCOPTS	= -O2 -Wall -W -fno-inline-functions -Wlarger-than-32 -Wcast-align \
				-Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls \
				-fno-unroll-loops -fno-builtin \
				-DMEMORY_FORCE_LOCK=MEMORY_FORCE_LOCK_ON \
				-DCMD_LINE_BUILD \
				-DCOUNTRY=PILOT_COUNTRY -DLANGUAGE=PILOT_LANG
DEFLOPTS	= -O2 -Wall -W

!if "$(BUILD)"=="DEBUG"
COPTS		= $(DEFCOPTS) -DERROR_CHECK_LEVEL=ERROR_CHECK_FULL -DDEBUG=1 -g3
LOPTS		= $(DEFLOPTS) -g3
!else
COPTS		= $(DEFCOPTS) -DERROR_CHECK_LEVEL=ERROR_CHECK_NONE -DNDEBUG=1 \
				-fstrength-reduce -frerun-cse-after-loop -fexpensive-optimizations \
				-fomit-frame-pointer
LOPTS		= $(DEFLOPTS)
!endif


## rules ------------------------------------------------------------------

{}.c{$(OUT)}.obj:
	echo --- Compiling $(*B).c
	$(CC) $(COPTS) -c -o $(OUT)\$(*B).obj $<

{}.cpp{$(OUT)}.obj:
	echo --- Compiling $(*B).cpp
	$(CC) $(COPTS) -c -o $(OUT)\$(*B).obj $<

All: $(OUT)\deps $(OUT) $(OUT)\$(PROJECT).prc tags

$(OUT):
	mkdir $(OUT)

$(OUT)\$(PROJECT).prc: $(OUT)\$(PROJECT) $(OUT)\bin.res
	echo --- Building $(PROJECT).prc
	cd $(OUT)
#	$(BUILDPRC) $(PROJECT).prc $(PROJECT) $(APPID) \
#		code0001.$(PROJECT).grc code0000.$(PRC).grc \
#		data0000.$(PROJECT).grc \
#		*.bin \
#		pref0000.$(PROJECT).grc
	$(BUILDPRC) $(PROJECT).prc $(PROJECT) $(APPID) *.grc *.bin
	cd $(MAKEDIR)

$(OUT)\$(PROJECT): $(OBJS) $(RESS)
	echo --- Building $(PROJECT)
	$(LK) $(LOPTS) -o $(OUT)\$(PROJECT) $(LIBS) $(OBJS) $(RESS)
!if "$(BUILD)" != "DEBUG"
	$(STRIP) $(OUT)\$(PROJECT)
!endif
	cd $(OUT)
	$(OBJRES) $(PROJECT)
	cd $(MAKEDIR)


!if "$(BUILD)" == "DEBUG"

$(OUT)\bin.res: $(PRC).rcp debug.rcp
	echo --- Compiling resources
	$(PILRC) -q -L $(LANG) $(PRC).rcp $(OUT)
	$(PILRC) -q -L $(LANG) debug.rcp $(OUT)
	if exist *.bin copy *.bin $(OUT)
#	touch $(OUT)\bin.res

!else

$(OUT)\bin.res: $(PRC).rcp
	echo --- Compiling resources
	$(PILRC) -q -L $(LANG) $(PRC).rcp $(OUT)
	if exist *.bin copy *.bin $(OUT)
#	touch $(OUT)\bin.res

!endif


## special rules ----------------------------------------------------------

$(OUT)\deps:	$(OUT)
	$(MKDEP) -n -p $(OUT)\ -s .obj *.c *.cpp > $(OUT)\deps

tags:
	echo --- Tags
	$(TAGS) *.c *.h

depend:
	$(MKDEP) -n -p $(OUT)\ -s .obj *.c *.cpp > $(OUT)\deps

clean:
	del $(OUT)\*.obj
	del $(OUT)\*.bin
	del $(OUT)\*.grc
	del $(OUT)\*.prc
	del $(OUT)\deps
	del $(OUT)\$(PROJECT)


## automatic rules from dependencies --------------------------------------

!if exists( $(OUT)\deps )
!include $(OUT)\deps
!endif



