#############################################################################
#
#						Realmode X86 Emulator Library
#
#            	Copyright (C) 1996-1999 SciTech Software, Inc.
#
#  ========================================================================
#
#  Permission to use, copy, modify, distribute, and sell this software and
#  its documentation for any purpose is hereby granted without fee,
#  provided that the above copyright notice appear in all copies and that
#  both that copyright notice and this permission notice appear in
#  supporting documentation, and that the name of the authors not be used
#  in advertising or publicity pertaining to distribution of the software
#  without specific, written prior permission.  The authors makes no
#  representations about the suitability of this software for any purpose.
#  It is provided "as is" without express or implied warranty.
#
#  THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
#  EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
#  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
#  USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
#  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
#  PERFORMANCE OF THIS SOFTWARE.
#
#  ========================================================================
#
# Descripton:   Linux specific makefile for the x86emu library.
#
#############################################################################
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar
TARGETLIB = libx86emu.a
TARGETDEBUGLIB =libx86emud.a

OBJS=\
decode.o \
fpu.o \
ops.o \
ops2.o \
prim_ops.o \
sys.o

DEBUGOBJS=debug.d \
          decode.d \
	  fpu.d \
	  ops.d \
	  ops2.d \
	  prim_ops.d \
	  sys.d

.SUFFIXES: .d

all: $(TARGETLIB) $(TARGETDEBUGLIB)

$(TARGETLIB): $(OBJS)
	$(AR) rv $(TARGETLIB) $(OBJS)

$(TARGETDEBUGLIB): $(DEBUGOBJS)
	$(AR) rv $(TARGETDEBUGLIB) $(DEBUGOBJS)

INCS   = -I. -Ix86emu -I../../include
CFLAGS = -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -Dprintk=printf -fsigned-char  -fomit-frame-pointer -fPIC -ffixed-r14 -meabi
CDEBUGFLAGS = -DDEBUG

.c.o:
	$(CC) -g -O2 -Wall -c $(CFLAGS) $(INCS) $*.c

.c.d:
	$(CC) -g -O2 -Wall -c -o$*.d $(CFLAGS) $(CDEBUGFLAGS) $(INCS) $*.c

.cpp.o:
	$(CC) -c $(CFLAGS) $(INCS) $*.cpp

clean:
	rm -f *.a *.o *.d

validate:	validate.o libx86emu.a
	$(CC) -o validate validate.o -lx86emu -L.
