# Generated automatically from Makefile.in by configure.
# This file is part of Java-GNOME.
#
# Java-GNOME is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# Java-GNOME is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Java-GNOME; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Makefile for wrappers generation
version = 0.5.0

# Set Java related stuff
JAVADOC = /usr/jdk/bin/javadoc
JAVAC = /usr/jdk/bin/javac
JAVA = /usr/jdk/bin/java
JAR = /usr/jdk/bin/jar

# genunix works for Linux JDKs, you might have to change it for other unices.
JAVA_INCLUDES = -I /usr/jdk/include -I /usr/jdk/include/linux

CLASSPATH = /usr/jdk/lib/classes.zip:tools:.

# Set C related stuff
CC = gcc
CFLAGS= -g -O2 -fPIC
GTK_CFLAGS=-I/usr/lib/glib/include -I/usr/X11R6/include
GTK_LIBS=-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm
GNOME_CFLAGS=-I/usr/include -DNEED_GNOMESUPPORT_H -I/usr/lib/gnome-libs/include -I/usr/lib/glib/include -I/usr/X11R6/include
GNOME_LIBS=-rdynamic -L/usr/lib -L/usr/X11R6/lib -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgnome -lgnomesupport -lesd -laudiofile -ldb1 -lgtk -lgdk -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm

# Get all the java class files that will make the jarfile
GTK_CLASSES := $(patsubst %.java, %.class, $(wildcard gdk/*.java gtk/*.java) gdk/Gdk.java)
GNOME_CLASSES := $(patsubst %.java, %.class, $(wildcard gnome/*.java) gnome/Gnome.java)
# Get the object files that will become the nativelib
GTK_OBJECTS := $(patsubst %.c, %.o, $(wildcard glue/gdk_*.c glue/gtk_*.c) other/callback_dispatcher.c other/gtk_wrappers.c other/gtk_GListString.c glue/gdk_Gdk.c)
GNOME_OBJECTS := $(patsubst %.c, %.o, $(wildcard glue/*.c) other/callback_dispatcher.c other/gnome_wrappers.c glue/gnome_Gnome.c)

.SUFFIXES: .java .class

#Set the suffix rules
.java.class:
	$(JAVAC) -classpath $(CLASSPATH) $<

.c.o:
	gcc -c $(CFLAGS) $< -o $@ $(GTK_CFLAGS) $(GNOME_CFLAGS) $(JAVA_INCLUDES)


# Main target
all: gtk gnome

parser:
	$(MAKE) -C tools

# GDK/GTK targets
gtk-only: gtk

gtk: gtk_generate
	$(MAKE) gtk_jarfile gtk_nativelib

gtk_generate: parser gdk/Gdk.java gtk/Gtk.java
	@(test ! -e gtk/GtkObject.java && cp other/GtkObject.java gtk) || exit 0
	@(test ! -e gtk/Callback.java && cp other/Callback.java gtk) || exit 0
	@(test ! -e gtk/GListString.java && cp other/GListString.java gtk) || exit 0

gdk/Gdk.java: defs/gdk.defs
	@(test ! -d glue && mkdir glue) || exit 0
	@(test ! -d gdk && mkdir gdk) || exit 0
	$(JAVA) -classpath $(CLASSPATH) Parser defs Gdk 

gtk/Gtk.java: defs/gtk.defs
	@(test ! -d gtk && mkdir gtk) || exit 0
	$(JAVA) -classpath $(CLASSPATH) Parser defs Gtk 

gtk_jarfile: $(GTK_CLASSES)
	@(test ! -d ../lib && mkdir ../lib) || exit 0
	$(JAR) cvf ../lib/gtk-${version}.jar gdk/*.class gtk/*.class
	@(cd ../lib; test ! -L gtk.jar && ln -s gtk-${version}.jar gtk.jar) || exit 0

gtk_nativelib: $(GTK_OBJECTS)
	@(test ! -d ../lib && mkdir ../lib) || exit 0
	$(CC) $(CFLAGS) -shared -o ../lib/libGTKJava.so.${version} other/callback_dispatcher.o other/gtk_wrappers.o other/gtk_GListString.o glue/gdk_*.o glue/gtk_*.o $(GNOME_CFLAGS) $(GNOME_LIBS) $(JAVA_INCLUDES)
	@(cd ../lib; test ! -L libGTKJava.so && ln -s libGTKJava.so.${version} libGTKJava.so) || exit 0

# GNOME targets
gnome: gnome_generate
	$(MAKE) gnome_nativelib gnome_jarfile

gnome_generate: parser gnome/Gnome.java

gnome/Gnome.java: defs/gnome.defs
	@(test ! -d gnome && mkdir gnome) || exit 0
	$(JAVA) -classpath $(CLASSPATH) Parser defs Gnome 

doc: 
	$(JAVADOC) -d javadoc -classpath $(CLASSPATH) gdk gtk gnome 

gnome_jarfile: $(GNOME_CLASSES)
	@(test ! -d ../lib && mkdir ../lib) || exit 0
	$(JAR) cvf ../lib/gnome-${version}.jar gnome/*.class
	@(cd ../lib; test ! -L gnome.jar && ln -s gnome-${version}.jar gnome.jar) || exit 0

gnome_nativelib: $(GNOME_OBJECTS)
	@(test ! -d ../lib && mkdir ../lib) || exit 0
	$(CC) $(CFLAGS) -shared -o ../lib/libGNOMEJava.so.${version} other/callback_dispatcher.o other/gnome_wrappers.o glue/gnome_*.o $(GNOME_CFLAGS) $(GNOME_LIBS) $(JAVA_INCLUDES)
	@(cd ../lib; test ! -L libGNOMEJava.so && ln -s libGNOMEJava.so.${version} libGNOMEJava.so) || exit 0

# Targets to clean up after us
.PHONY: mostlyclean clean distclean maintainer-clean

mostlyclean:
	rm -f gtk/* gdk/* gnome/* glue/* other/*.o other/*.enums javadoc/*
	$(MAKE) -C tools mostlyclean

clean:
	$(MAKE) -C tools clean

distclean:
	rm -f Makefile
	$(MAKE) -C tools distclean

maintainer-clean:
	$(MAKE) -C tools maintainer-clean

