#
# -- Lilith emulator Makefile --
#
#  Author : Jos Dreesen 2008-2009
#
# -- main.c      : main program
# -- cpu.c       : cpu and memory model for a Lilith computer
# -- io_proc.c   : model for Lilith IO functions ( keyboard, mouse)
# -- io_MD120.c  : model for Honeywell-Bull D120 disk drive.
# -- io_ST419.c  : model for Seagate ST419 disk drive.
# -- io_floppy.c : model for Apple-II floppy, using UCSD Pascal format.
# -- fltk_cde.c  : main fltk interface for the emulator
#
# -- lifs.c      : file system tool. 
#
#

# core set of source files for emulith
corefiles   = Src/main.c Src/cpu.c Src/proms.c Src/fltk_cde.c Src/img_cde.c \

# normal IO set 
norm_io     =  Src/io_proc.c Src/io_MD120.c Src/io_ST419.c Src/io_floppy.c \

# interface to normal IDE disk	      
ide_io      =  Src/io_proc.c Src/ide_disk.c Src/io_ST419.c Src/io_floppy.c Src/io_pp_ata.c \

# defining fl_ask_H here avoids the FLTK compilation issue I do not understand.
# we do not use fl_ask anyhow
defines     = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -Dfl_ask_H	          
#
includes    = -Iinclude    -Isupport      -Ifltk      
#
fltklib     = -lfltk_forms -lfltk_images  -lfltk
#
libdirs     = -L/usr/lib   -Lfltk/lib     -Lfltk 
#
# -------------------------------------------------------------------------
#
#window libs 
wlibs       = -lole32 -luuid -lcomctl32  -lwsock32   -static-libgcc -static-libstdc++

#linux libs
xlibs64     = -L/usr/X11R6/lib64 -lX11  -lpthread  -lXft  -lXext 
xlibs       = -L/usr/X11R6/lib   -lX11  -lpthread

# OS-X libs
osxlibs     = -L/usr/X11R6/lib   -lX11  -lpthread 
# further OS- stuff
osxstuff    = -framework Cocoa   -arch i386 -arch ppc
#
# -------------------------------------------------------------------------
#
	 
win   : 
	g++ -Wall  -O3 -o emulith $(libdirs) $(includes) $(corefiles) $(norm_io) $(fltklib) $(defines) $(wlibs) -DWIN32 -D__CYGWIN__ -mwindows 

osx   : 
	g++ -Wall  -O3 -o emulith $(libdirs) $(includes) $(corefiles) $(norm_io) $(fltklib) $(defines) $(osxlibs) $(osxstuff) -D__APPLE__ -D__CYGWIN__ 
#	fltk-config --post emulith

lin   : 
	g++ -Wall  -Os -o emulith $(libdirs) $(includes) $(corefiles) $(norm_io) $(fltklib) $(defines) $(xlibs)

# target "ide" compiles emulith with an IDE disk instead of the HB120. 
# Changed firmware will result in no obvious change to MEDOS
# unchanged HB120 disk images are used
 
ide   : 
	g++ -Wall  -Os -o emulith $(libdirs) $(includes) $(corefiles)  $(ide_io) $(fltklib) $(defines) $(xlibs) -D_IDE_
        
ide_nt   : 
	g++ -Wall  -Os -o emulith $(libdirs) $(includes) $(corefiles)  $(ide_io) $(fltklib) $(defines) $(xlibs) -D_IDE_NT_
        
lin64   : 
	g++ -Wall  -Os  -fno-exceptions -fno-strict-aliasing -o emulith $(libdirs) $(includes) $(files) $(fltklib) $(defines) $(xlibs64) 

fs    : 
	gcc -Wall -pedantic  -o lft support/lft_main.c $(libdirs) $(includes)

clean:
	rm -f Src/*.o Src/*~ include/*~  
        
tar:	
	tar cvf lilith.tar emulith  lilith.png Src/* support/* include/* docu/* Makefile proms/* *.def *.ini

distr:	
	rm -f vid/*
	tar cvf lilith.tar emulith lilith.png Src/* include/* floppy/* support/* Makefile mcode/* docu/*.pdf docu/*.txt emuli* img/*.img  *.def vid
	gzip lilith.tar
	mv  lilith.tar.gz lilith.tgz
        
ed:
	nedit include/lilith.h  Src/main.c  Src/io_proc.c Src/fltk_cde.c  &

tst:   
	echo Compiling file_chooser.cxx...
	g++ -I..     -Os -Wall -Wunused -Wno-format-y2k  -fno-exceptions -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -I/usr/include/freetype2  -I/usr/include/freetype2 -Ifltk -Iinclude  -I/usr/X11R6/include -c fltk/test/file_chooser.cxx 
	echo Linking file_chooser...
	g++  -Os -Wall -Wunused -Wno-format-y2k  -fno-exceptions -fno-strict-aliasing  -L/usr/X11R6/lib64  Src/*.o -o emulith ../lib/libfltk_images.a ../lib/libfltk.a -L../lib -lpng -lz -ljpeg  -lXext -lXft -lpthread -ldl -lm  -lX11 
