Listing 5. Makefile


# Generate Position Independent Code for dynamic linking
# and create a shared object module for JCDdriver to load at run time.
#
# Select ARCHOS, CFLAGS, and LDFLAGS for your operating system.
#
# Linux
ARCHOS=ix86-Linux
CFLAGS= -O -fPIC -I/usr/local/java/include/solaris -I/usr/local/java/include
LDFLAGS= -shared -Wl,-soname,Jcd_Drive
#
# IRIX 
#ARCHOS=mips-Irix
#CFLAGS= -O -I/usr/java/include/irix -I/usr/java/include
#LDFLAGS= -shared -Wl,-soname,Jcd_Drive -lcdaudio -lmediad -lds
#


JAVAC= javac
#JAVAC= /usr/local/java/bin/javac
#JAVAC= espresso

NATIVE_SRC= Jcd_Drive_$(ARCHOS)

%.class : %.java
                $(JAVAC) $< 

Jcd.class:      Jcd.java Jcd_Drive.so
                $(JAVAC) Jcd.java
                chmod +x Jcd.class

Jcd_Drive.so:   $(NATIVE_SRC).o Jcd_Drive.o
                cc -o Jcd_Drive.so Jcd_Drive.o $(NATIVE_SRC).o $(LDFLAGS)
                mkdir -p native/$(ARCHOS)
                cp Jcd_Drive.so native/$(ARCHOS)/Jcd_Drive.so

Jcd_Drive.h:    Drive.class
                javah Jcd.Drive
                touch Jcd_Drive.h

Jcd_Drive.c:    Drive.java
                javah -stubs Jcd.Drive
                touch Jcd_Drive.c

$(NATIVE_SRC).c:        Jcd_Drive.h