CC=gcc2
CFLAGS=-O2 -mc68000 -msoft-float -fomit-frame-pointer -DDEBUG
INCS=
CSW=-c

.s.o:
	@cp $*.s x.c
	@$(CC) $(CFLAGS) -traditional -E x.c -o x.s
	$(CC) $(CFLAGS) $(INCS) $(CSW) x.s -o $*.o

.c.o:
	$(CC) $(CFLAGS) $(INCS) $(CSW) $*.c


all: ixemul.library

SRCS =  start.s version.c __close.c __fioctl.c __fselect.c __fstat.c __init_std_packet.c \
	__ioctl.c __ioerr_to_errno.c __lock.c __make_link.c __mclose.c __mread.c \
	__open.c __plock.c __read.c __swrite.c __tioctl.c __unlock.c \
	__wait_packet.c __write.c access.c chdir.c chmod.c chown.c close.c creat.c \
	fchmod.c fsync.c ftime.c ftruncate.c getegid.c geteuid.c getgid.c \
	getgrgid.c getgroups.c gethostname.c getpagesize.c getpgrp.c getpid.c \
	getppid.c getpriority.c getpwnam.c getpwuid.c getrlimit.c gettimeofday.c \
	getuid.c initgroups.c ioctl.c isatty.c ix_close.c ix_expunge.c ix_init.c \
	ix_open.c link.c lseek.c malloc.c mkdir.c open.c read.c \
	readlink.c readv.c rename.c rmdir.c select.c setgroups.c setpgrp.c \
	setpriority.c setrlimit.c settimeofday.c stat.c symlink.c truncate.c \
	umask.c unlink.c utime.c utimes.c write.c writev.c \
	ix_panic.c kern_sig.c machdep.c trap.s dsyscall.c kern_time.c ix_timer.c \
	kern_descrip.c ix_startup.c _cli_parse.c _wb_parse.c _main.c \
	createextio.c createport.c createstdio.c createtask.c \
	deleteextio.c deleteport.c deletestdio.c deletetask.c \
	getrusage.c exit.c __pipe.c pipe.c ix_get_vars.c convert_dir.c \
	opendir.c readdir.c rewinddir.c closedir.c telldir.c seekdir.c \
	ix_patch_functions.c __load_seg.c mathsup.c kmalloc.c

OBJS =  start.o version.o __close.o __fioctl.o __fselect.o __fstat.o __init_std_packet.o \
	__ioctl.o __ioerr_to_errno.o __lock.o __make_link.o __mclose.o __mread.o \
	__open.o __plock.o __read.o __swrite.o __tioctl.o __unlock.o \
	__wait_packet.o __write.o access.o chdir.o chmod.o chown.o close.o creat.o \
	fchmod.o fsync.o ftime.o ftruncate.o getegid.o geteuid.o getgid.o \
	getgrgid.o getgroups.o gethostname.o getpagesize.o getpgrp.o getpid.o \
	getppid.o getpriority.o getpwnam.o getpwuid.o getrlimit.o gettimeofday.o \
	getuid.o initgroups.o ioctl.o isatty.o ix_close.o ix_expunge.o ix_init.o \
	ix_open.o link.o lseek.o malloc.o mkdir.o open.o read.o \
	readlink.o readv.o rename.o rmdir.o select.o setgroups.o setpgrp.o \
	setpriority.o setrlimit.o settimeofday.o stat.o symlink.o truncate.o \
	umask.o unlink.o utime.o utimes.o write.o writev.o \
	ix_panic.o kern_sig.o machdep.o trap.o dsyscall.o kern_time.o ix_timer.o \
	kern_descrip.o ix_startup.o _cli_parse.o _wb_parse.o _main.o \
	createextio.o createport.o createstdio.o createtask.o \
	deleteextio.o deleteport.o deletestdio.o deletetask.o \
	getrusage.o exit.o __pipe.o pipe.o ix_get_vars.o convert_dir.o \
	opendir.o readdir.o rewinddir.o closedir.o telldir.o seekdir.o \
	ix_patch_functions.o __load_seg.o mathsup.o kmalloc.o

ixemul.library: $(OBJS) /string/libstring.a /gen_library/libgen.a /stdlib/libstdlib.a /gnulib/libgnu.a proj-data
#	gcc20:lib/gcc/ld -nostdlib $(OBJS) /string/libstring.a /gen_library/libgen.a /stdlib/libstdlib.a /gnulib/libgnu.a /gnulib20/libgnu20.a -o ixemul.library /lib.st/libdebug.a /lib.st/libsmall.a
	gcc20:lib/gcc/ld -nostdlib $(OBJS) /string/libstring.a /gen_library/libgen.a /stdlib/libstdlib.a /gnulib/libgnu.a /gnulib20/libgnu20.a -o ixemul.library debugstub.o
#	touch ixemul.library

clean:
	rm -f $(OBJS)

dep: $(SRCS)
	gcc >deps -MM $(INCS) $(SRCS)

# revision/version control

start.o: start.s version.h

new-rev:
	dh4:gawk-2.13/gawk -f bumprev.awk < proj-data > proj-data.tmp
	mv -f proj-data     proj-data.bak
	mv -f proj-data.tmp proj-data
	dh4:gawk-2.13/gawk -f genvers.awk < proj-data

new-vers:
	dh4:gawk-2.13/gawk -f bumpvers.awk < proj-data > proj-data.tmp
	mv -f proj-data     proj-data.bak
	mv -f proj-data.tmp proj-data
	dh4:gawk-2.13/gawk -f genvers.awk < proj-data	

# have to omit the -fomit-frame-pointer here!
ix_timer.o: ix_timer.c
	$(CC) -O2 -mc68000 -msoft-float -DDEBUG	-c ix_timer.c

##########################################################################
__close.o : __close.c ixemul.h 
__fioctl.o : __fioctl.c ixemul.h 
__fselect.o : __fselect.c ixemul.h select.h 
__fstat.o : __fstat.c ixemul.h 
__init_std_packet.o : __init_std_packet.c ixemul.h 
__ioctl.o : __ioctl.c ixemul.h 
__ioerr_to_errno.o : __ioerr_to_errno.c ixemul.h 
__lock.o : __lock.c ixemul.h 
__make_link.o : __make_link.c ixemul.h 
__mclose.o : __mclose.c ixemul.h 
__mread.o : __mread.c ixemul.h 
__open.o : __open.c ixemul.h 
__plock.o : __plock.c ixemul.h 
__read.o : __read.c ixemul.h 
__swrite.o : __swrite.c ixemul.h 
__tioctl.o : __tioctl.c ixemul.h 
__unlock.o : __unlock.c ixemul.h 
__wait_packet.o : __wait_packet.c ixemul.h 
__write.o : __write.c ixemul.h 
access.o : access.c ixemul.h 
chdir.o : chdir.c ixemul.h 
chmod.o : chmod.c ixemul.h 
chown.o : chown.c 
close.o : close.c ixemul.h 
creat.o : creat.c ixemul.h 
falloc.o : falloc.c ixemul.h 
fchmod.o : fchmod.c ixemul.h 
fsync.o : fsync.c ixemul.h 
ftime.o : ftime.c ixemul.h 
ftruncate.o : ftruncate.c ixemul.h 
getegid.o : getegid.c 
geteuid.o : geteuid.c 
getgid.o : getgid.c 
getgrgid.o : getgrgid.c ixemul.h 
getgroups.o : getgroups.c ixemul.h 
gethostname.o : gethostname.c ixemul.h 
getpagesize.o : getpagesize.c ixemul.h 
getpgrp.o : getpgrp.c ixemul.h 
getpid.o : getpid.c ixemul.h 
getppid.o : getppid.c 
getpriority.o : getpriority.c ixemul.h 
getpwnam.o : getpwnam.c ixemul.h 
getpwuid.o : getpwuid.c ixemul.h 
getrlimit.o : getrlimit.c ixemul.h 
gettimeofday.o : gettimeofday.c ixemul.h 
getuid.o : getuid.c 
initgroups.o : initgroups.c 
ioctl.o : ioctl.c ixemul.h 
isatty.o : isatty.c ixemul.h 
ix_close.o : ix_close.c ixemul.h 
ix_expunge.o : ix_expunge.c ixemul.h 
ix_init.o : ix_init.c ixemul.h 
ix_open.o : ix_open.c ixemul.h 
kill.o : kill.c ixemul.h 
killpg.o : killpg.c ixemul.h 
link.o : link.c ixemul.h 
lseek.o : lseek.c ixemul.h 
malloc.o : malloc.c ixemul.h 
mkdir.o : mkdir.c ixemul.h 
open.o : open.c ixemul.h 
read.o : read.c ixemul.h 
readlink.o : readlink.c ixemul.h 
readv.o : readv.c ixemul.h 
rename.o : rename.c ixemul.h 
rmdir.o : rmdir.c ixemul.h 
select.o : select.c ixemul.h select.h 
setgroups.o : setgroups.c ixemul.h 
setpgrp.o : setpgrp.c ixemul.h 
setpriority.o : setpriority.c ixemul.h 
setrlimit.o : setrlimit.c ixemul.h 
settimeofday.o : settimeofday.c ixemul.h 
stat.o : stat.c ixemul.h 
symlink.o : symlink.c ixemul.h 
truncate.o : truncate.c ixemul.h 
umask.o : umask.c ixemul.h 
unlink.o : unlink.c ixemul.h 
utime.o : utime.c ixemul.h 
utimes.o : utimes.c ixemul.h 
write.o : write.c ixemul.h 
writev.o : writev.c ixemul.h 
ix_panic.o : ix_panic.c 
kern_sig.o : kern_sig.c ixemul.h 
machdep.o : machdep.c ixemul.h 
