PROFILE = 
CFLAGS = -g -O0 -w -I. $(PROFILE)
FX_CFLAGS = $(CFLAGS) -I./FX_EM486 -DUSE_FX_CPU
BX_CFLAGS = $(CFLAGS) -I./bochs-961223 -DUSE_BOCHS_CPU
CPPFLAGS = $(CFLAGS)

THUNK_OBJS = brk.o exit.o mmap.o stat.o personality.o ioctl.o open.o \
		getrusage.o time.o execve.o utime.o llseek.o ftime.o \
		times.o uname.o fcntl.o getdents.o \
		oldselect.o rlimit.o socket.o groups.o uio.o mprotect.o \
		ioctl_list.o wait4.o

COMMON_OBJS = elfload.o syscall_thunk.o mmap4k.o pagemap.o

FX_OBJS = fx_em86.o fx_x86_signal.o $(COMMON_OBJS)

BX_OBJS = bx_em86.o bx_x86_signal.o $(COMMON_OBJS)

BX_LIBS = ./bochs-961223/libbochs_cpu.a ./bochs-961223/debug/libdebug.a

FX_LIBS = ./FX_EM486/libem486.a -lm

all:	em86 # bx_em86

em86:	$(FX_OBJS) $(THUNK_OBJS) $(FX_LIBS)
	gcc $(PROFILE) --static -Wl,-Tfx_em86.ld $(FX_OBJS) $(THUNK_OBJS) \
		$(FX_LIBS) -o em86

bx_em86:	$(BX_OBJS) $(THUNK_OBJS) $(BX_LIBS)
	gcc $(PROFILE) --static $(BX_OBJS) $(THUNK_OBJS) \
		$(BX_LIBS) -o bx_em86

syscall_thunk.o:	syscall_thunk.c
	gcc $(CFLAGS) -c syscall_thunk.c

fx_em86.o:	em86.cc
	gcc -c $(FX_CFLAGS) em86.cc -o fx_em86.o

bx_em86.o:	em86.cc
	gcc -c $(BX_CFLAGS) em86.cc -o bx_em86.o

fx_x86_signal.o:	x86_signal.cc
	gcc -c $(FX_CFLAGS) x86_signal.cc -o fx_x86_signal.o

bx_x86_signal.o:	x86_signal.cc
	gcc -c $(BX_CFLAGS) x86_signal.cc -o bx_x86_signal.o

clean:
	rm -f *.o em86 fx_em86 bx_em86
