#
# 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/jdk/include-old/linux -I/usr/local/java/jdk/include-old
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 Player.class Jcd_Drive.so
		$(JAVAC) Jcd.java
		chmod +x Jcd.class

install:	Jcd.class
		mkdir -p /usr/local/lib/jcd/Jcd
		cp README /usr/local/lib/jcd
		cp *.class /usr/local/lib/jcd/Jcd/
		cp Jcd.class /usr/local/lib/jcd/
		cp -R native /usr/local/lib/jcd
		cp -R images /usr/local/lib/jcd
		cp jcd /usr/local/bin

Player.java:	Display.class Program.class Form.class Controls.class \
		AboutJcd.class DiscInfo.class JcdProps.class

Controls.class:	SmartDrive.class FancyButton.class Form.class SmallButton.class

Display.class:	SmartDrive.class LEDfield.class CddbEntry.class CddbClient.class

DiscInfo.class:  DiscEdit.class SmartDrive.class CddbEntry.class CddbClient.class JcdProps.class

LEDfield.class:	Form.class

Form.class:	SubPanel.class

Program.class:	SmartDrive.class SubPanel.class Form.class SmallButton.class TrackList.class

SmartDrive.class: Monitor.class

Monitor.class:	Drive.class

Drive.class:	DriveException.class \
		ProductCodeException.class \
		TrackAddressException.class \
		EjectException.class \
		ResumeException.class \
		VolumeException.class \
		PauseException.class \
		SetVolumeException.class \
		PlayException.class \
		StopException.class


Jcd_Drive.so:	$(NATIVE_SRC).o 
		cc -o Jcd_Drive.so $(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 Jcd_Drive.h


$(NATIVE_SRC).c:	Jcd_Drive.h

clean: