####################################################
# MakeFile and blueMSX.mak created by Roger Filipe #
#                                                  #
# 02/01/2004 - v1.0 - Initial Version              #
# 20/01/2004 - v1.1 - Improved many things         #
####################################################

#
# Comment out if verbose comilation is wanted
#
SILENT = @

#
# Directories
#
ROOT_DIR   = ../..
OUTPUT_DIR = objs

#
# Tools
#
CC    = $(SILENT)gcc
CXX   = $(SILENT)g++
RC    = $(SILENT)windres -O COFF
LD    = $(SILENT)g++ 
RM    = $(SILENT)-rm -f
RMDIR = $(SILENT)-rm -rf
MKDIR = $(SILENT)-mkdir
ECHO  = @echo

#
# Flags
#
CFLAGS   = -g -w -O2 -D_MBCS -D__WINCRYPT_H__ -DWIN32 -D_WINDOWS -DWINDOWS -DLSB_FIRST -DNARROW -DSOUND -DDISK -DFMSX -D_WIN32_IE=0x0500 -DPROPERTIES_DEFAULTS_ALT_1 -DPROPERTIES_NO_REGISTRY -DPROPERTIES_LOCAL_INI_FILE
LDFLAGS  = -Wl,--subsystem,windows
TARGET   = blueMSX.exe
LIBS     = -L$(ROOT_DIR)/Src/Unzip -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -ldxguid -lwinmm -lComCtl32 -lddraw -ldsound -ldinput -lmsvcrt -lzlibstat

SRCS        = $(SOURCE_FILES) $(RESOURCES)
OBJS        = $(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(SRCS)))))))
OUTPUT_OBJS = $(addprefix $(OUTPUT_DIR)/, $(OBJS))

#
# Include paths
#
INCLUDE = 
INCLUDE += -I$(ROOT_DIR)/Src/Bios
INCLUDE += -I$(ROOT_DIR)/Src/BuildInfo
INCLUDE += -I$(ROOT_DIR)/Src/Common
INCLUDE += -I$(ROOT_DIR)/Src/IoDevice
INCLUDE += -I$(ROOT_DIR)/Src/Language
INCLUDE += -I$(ROOT_DIR)/Src/Memory
INCLUDE += -I$(ROOT_DIR)/Src/Resources
INCLUDE += -I$(ROOT_DIR)/Src/SoundChips
INCLUDE += -I$(ROOT_DIR)/Src/Unzip
INCLUDE += -I$(ROOT_DIR)/Src/VideoChips
INCLUDE += -I$(ROOT_DIR)/Src/VideoRender
INCLUDE += -I$(ROOT_DIR)/Src/Win32
INCLUDE += -I$(ROOT_DIR)/Src/Z80

vpath % $(ROOT_DIR)/Src/Bios
vpath % $(ROOT_DIR)/Src/BuildInfo
vpath % $(ROOT_DIR)/Src/Common
vpath % $(ROOT_DIR)/Src/IoDevice
vpath % $(ROOT_DIR)/Src/Language
vpath % $(ROOT_DIR)/Src/Memory
vpath % $(ROOT_DIR)/Src/Resources
vpath % $(ROOT_DIR)/Src/SoundChips
vpath % $(ROOT_DIR)/Src/Unzip
vpath % $(ROOT_DIR)/Src/VideoChips
vpath % $(ROOT_DIR)/Src/VideoRender
vpath % $(ROOT_DIR)/Src/Win32
vpath % $(ROOT_DIR)/Src/Z80

#
# Source files
#
SOURCE_FILES =
SOURCE_FILES += Win32.c 
SOURCE_FILES += Win32directX.c 
SOURCE_FILES += Win32directXSound.c 
SOURCE_FILES += Win32file.c 
SOURCE_FILES += Win32FileHistory.c 
SOURCE_FILES += Win32Help.c 
SOURCE_FILES += Win32keyboard.c 
SOURCE_FILES += Win32joystick.c 
SOURCE_FILES += Win32Menu.c 
SOURCE_FILES += Win32MouseEmu.c 
SOURCE_FILES += Win32properties.c 
SOURCE_FILES += Win32ScreenShot.c 
SOURCE_FILES += Win32snd.c 
SOURCE_FILES += Win32StatusBar.c 
SOURCE_FILES += Win32Timer.c 
SOURCE_FILES += Win32ToolBar.c 
SOURCE_FILES += Win32WaveCapture.c 
SOURCE_FILES += Win32wmmSound.c 
SOURCE_FILES += Language.c 
SOURCE_FILES += KeyClick.c 
SOURCE_FILES += AY8910.c
SOURCE_FILES += Fmopl.c 
SOURCE_FILES += OpenMsxYM2413.cpp 
SOURCE_FILES += SCC.c 
SOURCE_FILES += Y8950.c 
SOURCE_FILES += YM2413.cpp 
SOURCE_FILES += Ymdeltat.c 
SOURCE_FILES += VDP.c 
SOURCE_FILES += V9938.c 
SOURCE_FILES += Scalebit.c 
SOURCE_FILES += VideoRender.c 
SOURCE_FILES += I8251.c 
SOURCE_FILES += I8255.c 
SOURCE_FILES += Disk.c 
SOURCE_FILES += Casette.c 
SOURCE_FILES += Patch.c 
SOURCE_FILES += Ziphelper.c 
SOURCE_FILES += Z80.c 
SOURCE_FILES += Debug.c 
SOURCE_FILES += RomMapper.c 
SOURCE_FILES += MSX.c 
SOURCE_FILES += AudioMixer.c
SOURCE_FILES += romMapperFMPAC.c

HEADER_FILES =
HEADER_FILES += AudioMixer.h
HEADER_FILES += AY8910.h
HEADER_FILES += build_number.h
HEADER_FILES += Casette.h
HEADER_FILES += Codes.h
HEADER_FILES += CodesCB.h
HEADER_FILES += CodesED.h
HEADER_FILES += CodesXCB.h
HEADER_FILES += CodesXX.h
HEADER_FILES += Common.h
HEADER_FILES += Disk.h
HEADER_FILES += DiskUtil.h 
HEADER_FILES += fmopl.h
HEADER_FILES += I8251.h
HEADER_FILES += I8255.h
HEADER_FILES += KeyClick.h
HEADER_FILES += MSX.h
HEADER_FILES += MsxTypes.h
HEADER_FILES += OpenMsxYM2413.h
HEADER_FILES += Resource.h 
HEADER_FILES += romDISK.h
HEADER_FILES += romFMPAC.h
HEADER_FILES += romKANJI.h
HEADER_FILES += romMapper.h
HEADER_FILES += romMSX.h
HEADER_FILES += romMSX2.h
HEADER_FILES += romMSX2EXT.h
HEADER_FILES += romMSX2EXTJ.h
HEADER_FILES += romMSX2J.h
HEADER_FILES += romMSX2P.h
HEADER_FILES += romMSX2PEXT.h
HEADER_FILES += romMSXBR.h
HEADER_FILES += romMSXJ.h
HEADER_FILES += romRS232.h
HEADER_FILES += Scale2x.h
HEADER_FILES += Scale3x.h
HEADER_FILES += Scalebit.h
HEADER_FILES += SCC.h
HEADER_FILES += Tables.h
HEADER_FILES += V9938.h
HEADER_FILES += VDP.h
HEADER_FILES += VideoRender.h
HEADER_FILES += Win32directx.h
HEADER_FILES += Win32directXSound.h
HEADER_FILES += Win32file.h
HEADER_FILES += Win32FileHistory.h
HEADER_FILES += Win32Help.h
HEADER_FILES += Win32joystick.h 
HEADER_FILES += Win32keyboard.h
HEADER_FILES += Win32Menu.h
HEADER_FILES += Win32MouseEmu.h
HEADER_FILES += Win32Properties.h
HEADER_FILES += Win32ScreenShot.h
HEADER_FILES += Win32Sound.h
HEADER_FILES += Win32StatusBar.h
HEADER_FILES += Win32SystemTime.h
HEADER_FILES += Win32Timer.h
HEADER_FILES += Win32wmmSound.h
HEADER_FILES += Win32WaveCapture.h
HEADER_FILES += Y8950.h
HEADER_FILES += YM2413.h
HEADER_FILES += ymdeltat.h
HEADER_FILES += Z80.h
HEADER_FILES += ziphelper.h
HEADER_FILES += romMapperFMPAC.h

RESOURCES = 
RESOURCES += blueMSX.rc 
RESOURCES += build_info.txt 
RESOURCES += comdlg32.ico 
RESOURCES += icon13.ico 
RESOURCES += icon15.ico 
RESOURCES += icon17.ICO 
RESOURCES += icon22.ico 
RESOURCES += Icon4.ico 
RESOURCES += Icon5.ico 
RESOURCES += Icon8.ico 
RESOURCES += icon9.ico 
RESOURCES += mixerpan.ico 
RESOURCES += mixervol.ico 
RESOURCES += tape.ico 
RESOURCES += diskA.ico 
RESOURCES += diskB.ico 
RESOURCES += caps.ico 
RESOURCES += kana.ico 
RESOURCES += capskana.ico 
RESOURCES += MSX.bmp  
RESOURCES += blue.bmp 
RESOURCES += blueMSXtop.bmp


#
# Rules
#
all: $(OUTPUT_DIR) $(TARGET)

clean: clean_$(TARGET)	


$(TARGET): $(OUTPUT_OBJS)
	$(ECHO) Linking $@...
	$(LD) $(LDFLAGS) -o $@ $(OUTPUT_OBJS) $(LIBS)

clean_$(TARGET):
	$(ECHO) Cleaning files ...
	$(RMDIR) -rf $(OUTPUT_DIR)
	$(RM) -f $(TARGET)

$(OUTPUT_DIR):
	$(ECHO) Creating directory $@...
	$(MKDIR) $(OUTPUT_DIR)

$(OUTPUT_DIR)/%.o: %.c  $(HEADER_FILES)
	$(ECHO) Compiling $<...
	$(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDE) -o $@ -c $<

$(OUTPUT_DIR)/%.o: %.cc  $(HEADER_FILES)
	$(ECHO) Compiling $<...
	$(CXX) $(CPPFLAGS) $(INCLUDE) -o $@ -c $<

$(OUTPUT_DIR)/%.o: %.cpp  $(HEADER_FILES)
	$(ECHO) Compiling $<...
	$(CXX) $(CPPFLAGS) $(INCLUDE) -o $@ -c $<

$(OUTPUT_DIR)/%.o: %.cxx  $(HEADER_FILES)
	$(ECHO) Compiling $<...
	$(CXX) $(CPPFLAGS) $(INCLUDE) -o $@ -c $<

$(OUTPUT_DIR)/%.res: %.rc $(HEADER_FILES)
	$(ECHO) Compiling $<...
	$(RC) $(CPPFLAGS) $(INCLUDE) -o $@ -i $<

