# Please direct flames to Stephen Blackheath <stephen@blacksapphire.com>
# To use this Makefile, GNU make is required.

# ----------------------------------------------------------------------------

# These are the directories we are building.  Keep this up-to-date.
DIRECTORIES =                   \
  .                             \
  client                        \
  client/events                 \
  client/listeners              \
  client/rdf                    \
  client/rdf/impl               \
  client/rdf/util               \
  client/rdf/vocabulary         \
  contrib/fcp                   \
  contrib/fproxy                \
  contrib/fproxy/filter         \
  contrib/fproxy/mumail/mime    \
  contrib/xmlrpc                \
  contrib/xmlrpc/lib            \
  contrib/xmlrpc/xml            \
  contrib/xmlrpc/xml/sax        \
  crypt                         \
  crypt/ciphers                 \
  keys                          \
  message                       \
  node                          \
  node/gui                      \
  presentation                  \
  scripts                       \
  servlet                       \
  servlet/util                  \
  support                       \
  support/io                    \
  thread                        \
  transport                     \

# ----------------------------------------------------------------------------

CLASSPATH:=../..:$(CLASSPATH)

ifndef JAVAC
  ifdef KAFFE
    JAVAC:=kaffe at/dms/kjc/Main
    JOPT1:=-d ../..
    JOPT2:=
    IS_SUN_1_1:=false
  else    
    JAVAC:=javac
    IS_SUN_1_1:=$(shell if java -version 2>&1 | grep '1\.1' > /dev/null ; then echo true ; else echo false ; fi)
    ifeq ($(IS_SUN_1_1), true)
      JOPT1:=-d ../..
      JOPT2:=
    else
      JOPT1:=-d ../..
      JOPT2:=-target 1.1
    endif
  endif
endif

JAVA_FILES := $(shell cd .. ; for d in $(DIRECTORIES) ; do ls $$d | grep '[.]java$$' | sed "s?^?../$$d/?" ; done)

GUI_JAVA_FILES := $(shell find ../client/gui -name \*.java)

.PHONY: all clean clear_list build_list

all: clear_list $(JAVA_FILES:.java=.class) build_list

clean:
	rm -f `find .. -name '*.class'`

clear_list:
	@rm -f .java_files

build_list:
	@if test -f .java_files ; then \
           echo CLASSPATH=$(CLASSPATH) $(JAVAC) $(JOPT1) $(JOPT2) `cat .java_files` ; \
                CLASSPATH=$(CLASSPATH) $(JAVAC) $(JOPT1) $(JOPT2) `cat .java_files` ; fi
	@rm -f .java_files

%.class: %.java
	@echo $< >> .java_files

ifeq ($(IS_SUN_1_1), false)
gui: all gui_clear_list $(GUI_JAVA_FILES:.java=.class) gui_build_list clear_list

gui_clear_list:
	@rm -f .java_files

gui_build_list:
	@if test -f .java_files ; then \
          echo CLASSPATH=$(CLASSPATH) $(JAVAC) $(JOPT1) `cat .java_files` ; \
               CLASSPATH=$(CLASSPATH) $(JAVAC) $(JOPT1) `cat .java_files` ; fi
	@rm -f .java_files
else
gui:
	@echo "It appears that you are using JDK 1.1."
	@echo "JDK 1.2 or higher is required to build the GUI client"

gui_build_list:
endif
