/*
 Copyright (c) 1996, 1997 Xerox Corporation.  All Rights Reserved.

 Unlimited use, reproduction, and distribution of this software is
 permitted.  Any copy of this software must include both the above
 copyright notice of Xerox Corporation and this paragraph.  Any
 distribution of this software must comply with all applicable United
 States export control laws.  This software is made available AS IS,
 and XEROX CORPORATION DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
 INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY
 AND FITNESS FOR A PARTICULAR PURPOSE, AND NOTWITHSTANDING ANY OTHER
 PROVISION CONTAINED HEREIN, ANY LIABILITY FOR DAMAGES RESULTING FROM
 THE SOFTWARE OR ITS USE IS EXPRESSLY DISCLAIMED, WHETHER ARISING IN
 CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, EVEN IF
 XEROX CORPORATION IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
/* Chris Jacobi, November 6, 1997 2:23 pm PST */

/* $Id: Imakefile,v 1.123 1997/11/06 22:27:09 jacobi Exp $ */





/* ======================================================== */


/*
 * Compiling a java source file
 * Use this for ilu itself but not for test programs
 * (Test programs need to import the java-ilu classes and shouldn't install)
 */
#define JavaCompileTarget(compiled, sources, extraSources)			@@\
all:: compiled extraSources								@@\
											@@\
compiled : sources									@@\
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAC) -g -d "$(JAVA_CLASS_DIR)" sources @@\
											@@\
install:: compiled									@@\
	@sh -c 'for i in compiled;  do  \						@@\
		if test -r $(DESTDIR)/lib/$$i ; then \				@@\
			$(RM) -f $(DESTDIR)/lib/$$i ; fi ; \			@@\
		echo "installing $$i..." ; \						@@\
		$(CP) $$i $(DESTDIR)/lib/$$i ; \					@@\
		$(CHMOD_READONLY) $(DESTDIR)/lib/$$i ; \		@@\
          done'									@@\
											@@\
CleanTarget(compiled)



/*
 * Stubbing a java class 
 * (generating both .h and .c stubs)
 * (used if the java class defines native methods)
 */
#define JavaHCStubTargets(stubdir, stubfiles, packagePrefix, className)	@@\
											@@\
all:: stubfiles										@@\
											@@\
stubfiles : className.java								@@\
	$(RM) $@									@@\
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir -stubs packagePrefix.className @@\
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir packagePrefix.className	@@\
											@@\
CleanTarget(stubfiles)



/*
 * Stubbing a java class 
 * (generating .h stubs only)
 * (used if the java class defines fields accessed by native methods of other classes)
 */
#define JavaHStubTarget(stubdir, stubfile, packagePrefix, className)	@@\
											@@\
all:: stubfile										@@\
											@@\
stubfile : className.java								@@\
	$(RM) $@									@@\
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir packagePrefix.className	@@\
											@@\
CleanTarget(stubfile)

/*
 * Stubbing a java class 
 * (generating .h stubs only)
 * (non public classes in the file of another class)
 */
#define JavaIHStubTarget(stubdir, stubfile, className, fileName)	@@\
											@@\
all:: stubfile										@@\
											@@\
stubfile : fileName								@@\
	$(RM) $@									@@\
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir className	@@\
											@@\
CleanTarget(stubfile)

/*
 * Like ObjectTarget but the .c and the o are both in subdir 
 */
#define ObjectTargetSDir(subdir, name)				@@\
all:: subdir/name.o							@@\
subdir/name.o:	subdir/name.c make.gnh $(SYSMACROS_FILE)	@@\
	$(RM) $@							@@\
	$(ANSI_C_COMPILER) -c $(CFLAGS) $(ILUCINCLUDES) subdir/name.c -o $@


/*
 * Like ObjectTarget but the .o goes into subdir 
 * (the .c is in .) 
 */
#define ObjectTargetXDir(subdir, name)				@@\
all:: subdir/name.o 							@@\
subdir/name.o:	name.c make.gnh $(SYSMACROS_FILE) 	@@\
	$(RM) $@							@@\
	$(ANSI_C_COMPILER) -c $(CFLAGS) $(ILUCINCLUDES) name.c -o $@


/* ======================================================== */

/*
 * Special handling for native methods in different ways depending 
 * on the java version...
 *
 * first compile the gnh program  (gnh = generate native headers)
 * then run gnh...
 */

make.gnh:	ilunative.in
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAC) -d "$(JAVA_CLASS_DIR)" gnh.java
	rm -f ilunative.h
	rm -f ilunative.c
	CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVA_HOME)/bin/java xerox.ilu.tools.gnh -oni ilunative.in
	rm -f $(JAVA_CLASS_DIR)/xerox/ilu/tools/gnh.class
	touch make.gnh

CleanTarget(make.gnh)
CleanTarget($(JAVA_CLASS_DIR)/xerox/ilu/tools/gnh.class)




BUILD_DIR = ./build
JAVA_INCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_MACH_DEP_INCLUDES) -DILU_JAVA_MAJOR_VERSION=JAVA_MAJOR_VERSION -DILU_JAVA_MINOR_VERSION=JAVA_MINOR_VERSION -DILU_JAVA_VERSION=\"JAVA_VERSION\"
LOCALINCLUDES = -I../kernel $(JAVA_INCLUDES) -I$(BUILD_DIR)
ILUCINCLUDES =
JAVA_CLASS_DIR = ./javaclasses

NormalObjectRule()

CleanTarget(sysmacros_md.h)

BuildDir($(JAVA_CLASS_DIR) $(BUILD_DIR))

MkdirTarget($(DESTDIR)/lib)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR))
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/org)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/org/omg)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/org/omg/CORBA)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/xerox)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/xerox/basics)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/xerox/ilu)
MkdirTarget($(DESTDIR)/lib/$(JAVA_CLASS_DIR)/xerox/ilu/types)

/*
below are listed Java files that need to be converted to .class
files by running the compiler.  The rule JavaCompileTarget() runs
the compiler.
*/


BASIC_CLASSES = \
	$(JAVA_CLASS_DIR)/xerox/basics/NowhereStream.class \
	$(JAVA_CLASS_DIR)/xerox/basics/NowhereWriter.class \
	$(JAVA_CLASS_DIR)/xerox/basics/Consumer0.class \
	$(JAVA_CLASS_DIR)/xerox/basics/Queue.class \
	$(JAVA_CLASS_DIR)/xerox/basics/Environment.class \
	$(JAVA_CLASS_DIR)/xerox/basics/VMExtras.class \
	$(JAVA_CLASS_DIR)/xerox/basics/VMExtrasThread.class \
	$(JAVA_CLASS_DIR)/xerox/basics/IntTab.class \
	$(JAVA_CLASS_DIR)/xerox/basics/IntTabNode.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/types/float128.class

  
BASIC_SOURCES = \
	NowhereStream.java \
	NowhereWriter.java \
	Consumer0.java \
	Queue.java \
	Environment.java \
	VMExtras.java \
	IntTab.java \
	float128.java

JavaCompileTarget($(BASIC_CLASSES), $(BASIC_SOURCES),)


PRE_CLASSES = \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluInit.class
  
PRE_SOURCES = \
	IluInit.java

JavaCompileTarget($(PRE_CLASSES), $(PRE_SOURCES),)




PRE_EXCEPTION_CLASSES = \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/CompletionStatus.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/NO_MEMORY.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/IMP_LIMIT.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/COMM_FAILURE.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/INITIALIZE.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/NO_IMPLEMENT.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BAD_TYPECODE.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/NO_RESOURCES.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/NO_RESPONSE.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/PERSIST_STORE.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BAD_INV_ORDER.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/TRANSIENT.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/FREE_MEM.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/INV_IDENT.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/INV_FLAG.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/INTF_REPOS.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BAD_CONTEXT.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/OBJ_ADAPTER.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/OBJECT_NOT_EXIST.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/TRANSACTIONREQUIRED.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/TRANSACTIONROLLEDBACK.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/MARSHAL.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/INTERNAL.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BAD_PARAM.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluBadParameterException.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/UNKNOWN.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluInconsistentCallException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluNoObjectException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSomeSystemException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluUnexpectedException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluInternalException.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/SystemException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSystemException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSystemException0.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluRuntimeError.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluUserExceptionBase.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSystemExceptionBase.class
	 

PRE_EXCEPTION_SOURCES = \
	CompletionStatus.java \
	NO_MEMORY.java \
	IMP_LIMIT.java \
	COMM_FAILURE.java \
	INITIALIZE.java \
	NO_IMPLEMENT.java \
	BAD_TYPECODE.java \
	NO_RESOURCES.java \
	NO_RESPONSE.java \
	PERSIST_STORE.java \
	BAD_INV_ORDER.java \
	TRANSIENT.java \
	FREE_MEM.java \
	INV_IDENT.java \
	INV_FLAG.java \
	INTF_REPOS.java \
	BAD_CONTEXT.java \
	OBJ_ADAPTER.java \
	OBJECT_NOT_EXIST.java \
	TRANSACTIONREQUIRED.java \
	TRANSACTIONROLLEDBACK.java \
	INTERNAL.java \
	MARSHAL.java \
	BAD_PARAM.java \
	IluBadParameterException.java \
	UNKNOWN.java \
	IluInconsistentCallException.java \
	IluNoObjectException.java \
	IluInternalException.java \
	IluUnexpectedException.java \
	IluSomeSystemException.java \
	SystemException.java \
	IluSystemException.java \
	IluSystemException0.java \
	IluRuntimeError.java \
	IluUserExceptionBase.java \
	IluSystemExceptionBase.java 

JavaCompileTarget($(PRE_EXCEPTION_CLASSES), $(PRE_EXCEPTION_SOURCES),)





EXCEPTION_CLASSES = \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluCallException.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/UserException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluEnumerationRangeException.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BAD_OPERATION.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluUnionDiscriminantException.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/DATA_CONVERSION.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluCharacterRangeException.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/NO_PERMISSION.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/INV_OBJREF.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluConstantValueKind.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeKind.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/TCKind.class

EXCEPTION_SOURCES = \
	IluCallException.java \
	UserException.java \
	IluEnumerationRangeException.java \
	BAD_OPERATION.java \
	IluUnionDiscriminantException.java \
	DATA_CONVERSION.java \
	IluCharacterRangeException.java \
	NO_PERMISSION.java \
	INV_OBJREF.java \
	IluConstantValueKind.java \
	IluTypeKind.java \
	TCKind.java

JavaCompileTarget($(EXCEPTION_CLASSES), $(EXCEPTION_SOURCES),)





RT_CLASSES = \
	$(JAVA_CLASS_DIR)/xerox/ilu/CStringHolder.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/CStringHelper.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/ORB.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BOA.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluLifetimeArgs.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluLifetimeRemember.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluLifetimeForget.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluUserException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluDebugWriter.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluEnvironment.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluDebug.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluDataSupport.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluIHProposer.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluObject.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/Object.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/ObjectImpl.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluWPBase.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluObjectBase.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluFactory.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluPassport.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluPipeline.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSerializationContext.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluIdentity.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluIdentityType.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluUnixIdentityType.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSurrogateConnection.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluRegularSurrConnectionThread.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluOtherSurrogateConnForkerThread.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServiceThread.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServerConnection.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServerConnectionThread.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServerConnectionExtraThread.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluInit2.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluDebugHooks.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluClassRep.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluRootClassObjects_stub.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluClassAccess.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluRuntimeException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluExceptionRep.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluOInt.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluAlarmTech.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluForkTech.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluCall.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluMethodRep.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluMethodArgRep.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServer.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServerRelocationInfo.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServerRelocation.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluObjectTable.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluRT0.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSkeleton.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSurrogateObject.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTransportInfo.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluPort.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluPortWatcherThread.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluServantFinalizable.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/corba_ServantFinalizer.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluGCClient.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/Ilu.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSBH.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluSimpleBinding.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluFinalizeReporter.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluOIntFinalizer.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluReEnableFinalization.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeCode.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/TypeCode.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/Any.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluAny.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluIOFunctions.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluCustomMappingException.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluCustomMapping.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluPickle.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluRootObjectHelper.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/CORBA_ObjectStub.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/_CORBA_Object_skeletonClass.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/_CORBA_Object_Factory.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/CORBA_ObjectHelper.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/SpecialIOFuncs.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_Record.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_baseWithChain.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_RecordFld.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_ChainEl.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_Enum.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_EnumEl.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_Union.class \
	$(JAVA_CLASS_DIR)/xerox/ilu/IluTypeRep_UnionArm.class


RT_SOURCES = \
	CStringHolder.java \
	CStringHelper.java \
	BOA.java \
	ORB.java \
	IluLifetimeArgs.java \
	IluLifetimeRemember.java \
	IluLifetimeForget.java \
	IluUserException.java \
	IluDebugWriter.java \
	IluEnvironment.java \
	IluDebug.java \
	IluDataSupport.java \
	IluIHProposer.java \
	IluObject.java \
	Object.java \
	ObjectImpl.java \
	IluWPBase.java \
	IluObjectBase.java \
	IluFactory.java \
	IluPassport.java \
	IluPipeline.java \
	IluSerializationContext.java \
	IluIdentity.java \
	IluIdentityType.java \
	IluUnixIdentityType.java \
	IluSurrogateConnection.java \
	IluServerConnection.java \
	IluServiceThread.java \
	IluInit2.java \
	IluDebugHooks.java \
	IluClassRep.java \
	IluClassAccess.java \
	IluRuntimeException.java \
	IluExceptionRep.java \
	IluOInt.java \
	IluAlarmTech.java \
	IluForkTech.java \
	IluCall.java \
	IluMethodRep.java \
	IluMethodArgRep.java \
	IluServer.java \
	IluServerRelocation.java \
	IluServerRelocationInfo.java \
	IluObjectTable.java \
	IluRT0.java \
	IluSkeleton.java \
	IluSurrogateObject.java \
	IluTransportInfo.java \
	IluPort.java \
	IluServantFinalizable.java \
	corba_ServantFinalizer.java \
	IluGCClient.java \
	Ilu.java \
	IluSBH.java \
	IluSimpleBinding.java \
	IluTypeCode.java \
	TypeCode.java \
	IluTypeRep.java \
	Any.java \
	IluAny.java \
	IluIOFunctions.java \
	IluCustomMappingException.java \
	IluCustomMapping.java \
	IluPickle.java \
	IluRootObjectHelper.java \
	CORBA_ObjectStub.java \
	CORBA_ObjectHelper.java

JavaCompileTarget($(RT_CLASSES), $(RT_SOURCES),)




/* holder classes with and without ilu dependencies */

HOLDER_CLASSES = \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/ShortHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/IntHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/LongHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/ByteHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/FloatHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/DoubleHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/CharHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/BooleanHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/StringHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/ObjectHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/AnyHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/TypeCodeHolder.class \
	$(JAVA_CLASS_DIR)/org/omg/CORBA/PrincipalHolder.class

HOLDER_SOURCES = \
	ShortHolder.java \
	IntHolder.java \
	LongHolder.java \
	ByteHolder.java \
	FloatHolder.java \
	DoubleHolder.java \
	CharHolder.java \
	BooleanHolder.java \
	StringHolder.java \
	ObjectHolder.java \
	AnyHolder.java \
	TypeCodeHolder.java \
	PrincipalHolder.java 

JavaCompileTarget($(HOLDER_CLASSES), $(HOLDER_SOURCES),)



/*
below are files which need to have both .c code and .h header files
generated by running javah -stubs and javah on them. 
(Classes requiring native methods for implementation)
*/
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluInit2.c $(BUILD_DIR)/xerox_ilu_IluInit2.h,xerox.ilu,IluInit2)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluPassport.c $(BUILD_DIR)/xerox_ilu_IluPassport.h,xerox.ilu,IluPassport)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluPipeline.c $(BUILD_DIR)/xerox_ilu_IluPipeline.h,xerox.ilu,IluPipeline)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluSerializationContext.c $(BUILD_DIR)/xerox_ilu_IluSerializationContext.h,xerox.ilu,IluSerializationContext)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluIdentityType.c $(BUILD_DIR)/xerox_ilu_IluIdentityType.h,xerox.ilu,IluIdentityType)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluUnixIdentityType.c $(BUILD_DIR)/xerox_ilu_IluUnixIdentityType.h,xerox.ilu,IluUnixIdentityType)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluIdentity.c $(BUILD_DIR)/xerox_ilu_IluIdentity.h,xerox.ilu,IluIdentity)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluServerConnection.c $(BUILD_DIR)/xerox_ilu_IluServerConnection.h,xerox.ilu,IluServerConnection)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluSurrogateConnection.c $(BUILD_DIR)/xerox_ilu_IluSurrogateConnection.h,xerox.ilu,IluSurrogateConnection)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluOInt.c $(BUILD_DIR)/xerox_ilu_IluOInt.h,xerox.ilu,IluOInt)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluClassRep.c $(BUILD_DIR)/xerox_ilu_IluClassRep.h,xerox.ilu,IluClassRep)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluServer.c $(BUILD_DIR)/xerox_ilu_IluServer.h,xerox.ilu,IluServer)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluAlarmTech.c $(BUILD_DIR)/xerox_ilu_IluAlarmTech.h,xerox.ilu,IluAlarmTech)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluForkTech.c $(BUILD_DIR)/xerox_ilu_IluForkTech.h,xerox.ilu,IluForkTech)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluCall.c $(BUILD_DIR)/xerox_ilu_IluCall.h,xerox.ilu,IluCall)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluExceptionRep.c $(BUILD_DIR)/xerox_ilu_IluExceptionRep.h,xerox.ilu,IluExceptionRep)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluRT0.c $(BUILD_DIR)/xerox_ilu_IluRT0.h,xerox.ilu,IluRT0)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluTransportInfo.c $(BUILD_DIR)/xerox_ilu_IluTransportInfo.h,xerox.ilu,IluTransportInfo)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluPort.c $(BUILD_DIR)/xerox_ilu_IluPort.h,xerox.ilu,IluPort)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluDebugHooks.c $(BUILD_DIR)/xerox_ilu_IluDebugHooks.h,xerox.ilu,IluDebugHooks)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluGCClient.c $(BUILD_DIR)/xerox_ilu_IluGCClient.h,xerox.ilu,IluGCClient)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluDebug.c $(BUILD_DIR)/xerox_ilu_IluDebug.h,xerox.ilu,IluDebug)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluDebugWriter.c $(BUILD_DIR)/xerox_ilu_IluDebugWriter.h,xerox.ilu,IluDebugWriter)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluPickle.c $(BUILD_DIR)/xerox_ilu_IluPickle.h,xerox.ilu,IluPickle)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluTypeCode.c $(BUILD_DIR)/xerox_ilu_IluTypeCode.h,xerox.ilu,IluTypeCode)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluTypeRep.c $(BUILD_DIR)/xerox_ilu_IluTypeRep.h,xerox.ilu,IluTypeRep)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluSBH.c $(BUILD_DIR)/xerox_ilu_IluSBH.h,xerox.ilu,IluSBH)
JavaHCStubTargets($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluWPBase.c $(BUILD_DIR)/xerox_ilu_IluWPBase.h,xerox.ilu,IluWPBase)




/*
below are files which need to have only .h header files generated
by running javah on them.
(Classes permitting field access by native methods of other classes)
*/
JavaHStubTarget($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluObject.h,xerox.ilu,IluObject)
JavaHStubTarget($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluMethodRep.h,xerox.ilu,IluMethodRep)
JavaHStubTarget($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluMethodArgRep.h,xerox.ilu,IluMethodArgRep)
JavaHStubTarget($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluObjectTable.h,xerox.ilu,IluObjectTable)
JavaHStubTarget($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluSurrogateObject.h,xerox.ilu,IluSurrogateObject)
JavaHStubTarget($(BUILD_DIR),$(BUILD_DIR)/xerox_ilu_IluServerRelocationInfo.h,xerox.ilu,IluServerRelocationInfo)

/*
below are files which need to have only .h header files generated
by running javah on them.
(non public classes in the file of another class)
*/

/* Use poll(2) form of wait tech if possible, select(2) form otherwise */
#ifdef HAVE_POLL
JAVA_WAITTECH_CALL=IluJava_pollwt
#else
JAVA_WAITTECH_CALL=IluJava_selectwt
#endif

/* 
below are C source files which need to be compiled to link into the
Java extension .so file
*/
ObjectTargetXDir($(BUILD_DIR),IluJava_IluConnOps)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluAlarmTech)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluOInt)
ObjectTargetXDir($(BUILD_DIR),IluJava_JOps)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluCall)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluClassRep)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluServer)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluRT0)
ObjectTargetXDir($(BUILD_DIR),IluJava_LockTech)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluDebug)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluPort)
ObjectTargetXDir($(BUILD_DIR),$(JAVA_WAITTECH_CALL))
ObjectTargetXDir($(BUILD_DIR),IluJava_GCClient)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluInit)
ObjectTargetXDir($(BUILD_DIR),IluJava_IluPickle)
ObjectTargetXDir($(BUILD_DIR),IluJava_JMon)
ObjectTargetXDir($(BUILD_DIR),ilunative)

/*
below are C stub files which need to be compiled to link into the
Java extension .so file
*/
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluInit2)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluAlarmTech)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluForkTech)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluSurrogateConnection)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluServerConnection)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluServer)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluOInt)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluCall)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluClassRep)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluExceptionRep)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluRT0)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluPassport)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluSerializationContext)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluPipeline)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluIdentity)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluIdentityType)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluUnixIdentityType)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluTransportInfo)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluPort)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluSBH)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluDebugHooks)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluGCClient)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluDebug)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluDebugWriter)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluPickle)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluTypeCode)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluTypeRep)
ObjectTargetSDir($(BUILD_DIR),xerox_ilu_IluWPBase)


/*
the following var OBJS is a list of all object files which get 
linked into our extension
*/
OBJS = \
$(BUILD_DIR)/xerox_ilu_IluInit2.o \
$(BUILD_DIR)/xerox_ilu_IluAlarmTech.o \
$(BUILD_DIR)/xerox_ilu_IluForkTech.o \
$(BUILD_DIR)/xerox_ilu_IluSurrogateConnection.o \
$(BUILD_DIR)/xerox_ilu_IluServerConnection.o \
$(BUILD_DIR)/xerox_ilu_IluServer.o \
$(BUILD_DIR)/xerox_ilu_IluOInt.o \
$(BUILD_DIR)/xerox_ilu_IluCall.o \
$(BUILD_DIR)/xerox_ilu_IluClassRep.o \
$(BUILD_DIR)/xerox_ilu_IluExceptionRep.o \
$(BUILD_DIR)/xerox_ilu_IluRT0.o \
$(BUILD_DIR)/xerox_ilu_IluSBH.o \
$(BUILD_DIR)/xerox_ilu_IluTransportInfo.o \
$(BUILD_DIR)/xerox_ilu_IluPort.o \
$(BUILD_DIR)/xerox_ilu_IluDebugHooks.o \
$(BUILD_DIR)/xerox_ilu_IluGCClient.o \
$(BUILD_DIR)/xerox_ilu_IluDebug.o \
$(BUILD_DIR)/xerox_ilu_IluDebugWriter.o \
$(BUILD_DIR)/xerox_ilu_IluPickle.o \
$(BUILD_DIR)/xerox_ilu_IluTypeCode.o \
$(BUILD_DIR)/xerox_ilu_IluTypeRep.o \
$(BUILD_DIR)/xerox_ilu_IluWPBase.o \
$(BUILD_DIR)/xerox_ilu_IluPassport.o \
$(BUILD_DIR)/xerox_ilu_IluPipeline.o \
$(BUILD_DIR)/xerox_ilu_IluSerializationContext.o \
$(BUILD_DIR)/xerox_ilu_IluIdentityType.o \
$(BUILD_DIR)/xerox_ilu_IluUnixIdentityType.o \
$(BUILD_DIR)/xerox_ilu_IluIdentity.o \
$(BUILD_DIR)/IluJava_IluConnOps.o \
$(BUILD_DIR)/IluJava_IluAlarmTech.o \
$(BUILD_DIR)/IluJava_IluOInt.o \
$(BUILD_DIR)/IluJava_JOps.o \
$(BUILD_DIR)/IluJava_IluCall.o \
$(BUILD_DIR)/IluJava_IluClassRep.o \
$(BUILD_DIR)/IluJava_IluServer.o \
$(BUILD_DIR)/IluJava_IluRT0.o \
$(BUILD_DIR)/IluJava_LockTech.o \
$(BUILD_DIR)/IluJava_IluDebug.o \
$(BUILD_DIR)/IluJava_IluPort.o \
$(BUILD_DIR)/$(JAVA_WAITTECH_CALL).o \
$(BUILD_DIR)/IluJava_GCClient.o \
$(BUILD_DIR)/IluJava_IluPickle.o \
$(BUILD_DIR)/IluJava_IluInit.o \
$(BUILD_DIR)/IluJava_JMon.o \
$(BUILD_DIR)/ilunative.o

/* ======================================================== */

/*
 * make a java jar file...
 */

CleanTarget(ilu.jar)

all:: ilu.jar

ilu.jar:
	cd $(JAVA_CLASS_DIR); $(JAR) -0cf ../ilu.jar *

InstallRO(ilu.jar, $(DESTDIR)/lib)

/* ======================================================== */


/* don't modify this rule without help... */
JavaExtension(libIluJava, $(OBJS), ../kernel/libilu.a,)

