PACKAGE   = biss.awt.kernel
CLASSROOT = $(HOME)/biss/lib
NATIVELIB = libkaffe_bissawt.so

VER       = 0.8
NATIVELIB_VER = $(NATIVELIB).$(VER)
LIBDIR    = /usr/local/lib

PCKGPRFX  = $(subst .,_,$(PACKAGE))_
CLSPATH   = $(CLASSROOT)/$(subst .,/,$(PACKAGE))

JINC      = -I/usr/local/include/kaffe

JH        = kaffeh
CC        = gcc
LD        = gcc

ifndef TARGET
 TARGET=linux
endif

#----------------------------------------------- linux specific settings
ifeq ($(TARGET),linux)
  CF        = -c -fPIC -Wall -Wno-format -Wno-unused \
                 -DKAFFE -DDEBUG -I. $(JINC) -I/usr/X11R6/include
  LF        = -shared -Wl,-soname,$(NATIVELIB_VER) -Wall
  LIBS      = -L/usr/X11R6/lib -lX11 -lkaffe_vm -ldl -lm

  ifdef OPTIMIZE
    CFLAGS    = -O2 $(CF)
    LDFLAGS   = $(LF)
  else
    CFLAGS    = -g $(CF)
    LDFLAGS   = -g $(LF)
  endif
endif

#----------------------------------------------- Free/NetBSD specific settings
ifeq ($(TARGET),bsd)
  CF      = -c -fPIC -Wall -Wno-format -Wno-unused \
               -DKAFFE -DDEBUG -I. $(JINC) -I/usr/X11R6/include
  LF      = -v -Wall -Xlinker -Bshareable -nostdlib
  LIBS    = -L/usr/X11R6/lib -L$(LIBDIR) -lX11 -lkaffe_vm -lm

  ifdef OPTIMIZE
    CFLAGS    = -O2 $(CF)
    LDFLAGS   = $(LF)
  else
    CFLAGS    = -g $(CF)
    LDFLAGS   = -g $(LF)
  endif
endif



vpath %.class $(CLSPATH)

#%.o : %.c
#	@echo "----- compiling C $@"
#	$(CC) $(CFLAGS) $<

%.h:
#	@echo "----- building header $@"
	$(JH) $(subst _,.,$(basename $@))

$(PCKGPRFX)%.c:
#	@echo "----- building stub $@"
	$(JH) -stubs $(subst _,.,$(basename $@))

all: header stubs $(NATIVELIB_VER)


header: $(PCKGPRFX)Toolkit.h \
	$(PCKGPRFX)NativeLib.h \
	$(PCKGPRFX)Peer.h \
	$(PCKGPRFX)Graphics.h \
	$(PCKGPRFX)FontMetrics.h \
	$(PCKGPRFX)Image.h \
	java_awt_Color.h \
	java_awt_Component.h \
	java_awt_peer_ComponentPeer.h \
	java_awt_Toolkit.h \
	java_awt_Graphics.h \
	java_awt_Rectangle.h \
	java_awt_Font.h \
	java_awt_Frame.h \
	java_awt_Event.h \
	java_awt_FontMetrics.h \
	java_awt_Insets.h \
	java_awt_image_ImageObserver.h \
	java_awt_image_IndexColorModel.h \
	biss_awt_MutableIndexClrModel.h

stubs:  $(PCKGPRFX)NativeLib.c

clean:
	rm -f $(NATIVELIB_VER)
	rm -f *.o
	rm -f *~
	rm -f $(PCKGPRFX)*.[ch]
	rm -f java_*.h

$(NATIVELIB_VER): $(PCKGPRFX)NativeLib.o \
	display.o \
	window.o \
	graphics.o \
	font.o \
	color.o \
	image.o

	$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)


install:
	cp $(NATIVELIB_VER) $(LIBDIR)
	ln -sfn $(LIBDIR)/$(NATIVELIB_VER) $(LIBDIR)/$(NATIVELIB)


display.o  : display.c awt.h
graphics.o : graphics.c awt.h
window.o   : window.c awt.h
font.o     : font.c awt.h
color.o    : color.c awt.h
image.o    : image.c awt.h


$(PCKGPRFX)NativeLib.h   : NativeLib.class
$(PCKGPRFX)NativeLib.c : NativeLib.class

$(PCKGPRFX)Toolkit.h     : Toolkit.class
$(PCKGPRFX)Peer.h        : Peer.class
$(PCKGPRFX)Graphics.h    : Graphics.class
$(PCKGPRFX)FontMetrics.h : FontMetrics.class
$(PCKGPRFX)Image.h       : Image.class




