This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Makefile patch: CNI header dependencies


Modifying a .java file seems to be causing a random set of gcjh commands 
to be run that don't include the class that was modified and do include 
things like java/lang/String which in turn causes a bunch of native 
files to be rebuilt when they shouldn't.

This patch fixes the problem by making CNI header files depend on their 
.class file. It reduces the rebuild time after touching some random 
.java file by lots.

Jeff, it looks like you may have introduced this problem with this patch:

2001-07-07  Jeff Sturm  <jsturm@one-point.com>

    * Makefile.am (libgcj.jar): Don't recursively make
    built_java_source_files.  Avoid long command lines.
    Don't change to $(srcdir) to invoke javac.
    (libgcj.la, libgcjx.la); Avoid long command lines.
    ($(nat_headers),$(x_nat_headers)): Depend on libgcj.jar.
    * Makefile.in: Rebuilt.

Why make the nat_headers depend on libgcj.jar?

Does this patch look okay to you guys? And BTW does anyone know why 
libtool is now doing the following during make install? its very annoying!

/bin/sh ./libtool  --mode=install /usr/bin/install -c libgcj.la 
/home/bryce/gcc/lib/libgcj.la
libtool: install: warning: relinking `libgcj.la'
cd /home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava; /bin/sh 
./libtool --mode=relink /home/bryce/cvs/gcc/build/gcc/xgcc 
-B/home/bryce/cvs/gcc/build/gcc/ 
-B/home/bryce/gcc/i686-pc-linux-gnu/bin/ 
-B/home/bryce/gcc/i686-pc-linux-gnu/lib/ -isystem 
/home/bryce/gcc/i686-pc-linux-gnu/include 
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava -ffloat-store -g 
-O2 -o libgcj.la -objectlist libgcj.objectlist 
../libffi/libfficonvenience.la -rpath /home/bryce/gcc/lib -rpath 
/home/bryce/gcc/lib -lpthread ./libltdl/libltdlc.la 
./../boehm-gc/libgcjgc.la 
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../boehm-gc/.libs 
./../zlib/libzgcj.la 
-L/home/bryce/cvs/gcc/build/i686-pc-linux-gnu/libjava/../zlib/.libs 
-version-info 2:0:0

regards

Bryce.


2001-11-23  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* Makefile.am (nat_headers, x_nat_headers): Depend on .class files, not
	libgcj.jar.
	(gnu/gcj/runtime/FirstThread.h): Remove explicit rule and friend
	declarations.

Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/libjava/Makefile.am,v
retrieving revision 1.183
diff -u -r1.183 Makefile.am
--- Makefile.am	2001/11/13 17:43:38	1.183
+++ Makefile.am	2001/11/23 06:18:21
@@ -266,23 +266,16 @@
 
 x_nat_headers = $(x_java_source_files:.java=.h)
 
-$(nat_headers) $(x_nat_headers): libgcj.jar
+$(nat_headers) $(x_nat_headers): %.h: %.class
 
-java/lang/ClassLoader.h: java/lang/ClassLoader.class libgcj.jar
+java/lang/ClassLoader.h: java/lang/ClassLoader.class
 	$(GCJH) -classpath $(top_builddir) \
 		-friend 'jclass _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader);' \
 		-friend 'void _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv, bool is_jar);' \
 		$(basename $<)
 
-## Our internal main program needs to be able to create a FirstThread.
-gnu/gcj/runtime/FirstThread.h: gnu/gcj/runtime/FirstThread.class libgcj.jar
+java/lang/Thread.h: java/lang/Thread.class
 	$(GCJH) -classpath $(top_builddir) \
-		-friend 'void JvRunMain (jclass, int, const char **);' \
-		-friend 'void _Jv_RunMain (const char*, int, const char **);' \
-		$(basename $<)
-
-java/lang/Thread.h: java/lang/Thread.class libgcj.jar
-	$(GCJH) -classpath $(top_builddir) \
 		-prepend 'class _Jv_JNIEnv;' \
 		-prepend '#define _JV_NOT_OWNER 1' \
 		-prepend '#define _JV_INTERRUPTED 2' \
@@ -294,7 +287,7 @@
 		-friend 'jint _Jv_DetachCurrentThread ();' \
 		$(basename $<)
 
-java/lang/String.h: java/lang/String.class libgcj.jar
+java/lang/String.h: java/lang/String.class
 	$(GCJH) -classpath $(top_builddir) \
 	    -friend 'jchar* _Jv_GetStringChars (jstring str);' \
 	    -friend 'jstring* _Jv_StringFindSlot (jchar*, jint, jint);' \
@@ -304,37 +297,37 @@
 	    -friend 'jstring _Jv_AllocString (jsize);' \
 	    $(basename $<)
 
-java/lang/reflect/Constructor.h: java/lang/reflect/Constructor.class libgcj.jar
+java/lang/reflect/Constructor.h: java/lang/reflect/Constructor.class
 	$(GCJH) -classpath $(top_builddir) \
 	    -friend 'jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);' \
 	    -friend 'class java::lang::Class;' \
 	    -friend 'jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);' \
 	    $(basename $<)
 
-java/lang/reflect/Field.h: java/lang/reflect/Field.class libgcj.jar
+java/lang/reflect/Field.h: java/lang/reflect/Field.class
 	$(GCJH) -classpath $(top_builddir) \
 	    -friend 'jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);' \
 	    -friend 'jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);' \
 	    -friend 'class java::lang::Class;' \
 	    $(basename $<)
 
-java/lang/reflect/Method.h: java/lang/reflect/Method.class libgcj.jar
+java/lang/reflect/Method.h: java/lang/reflect/Method.class
 	$(GCJH) -classpath $(top_builddir) \
 	    -friend 'jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);' \
 	    -friend 'class java::lang::Class;' \
 	    -friend 'jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);' \
 	    $(basename $<)
 
-gnu/gcj/runtime/VMClassLoader.h: gnu/gcj/runtime/VMClassLoader.class libgcj.jar
+gnu/gcj/runtime/VMClassLoader.h: gnu/gcj/runtime/VMClassLoader.class
 	$(GCJH) -classpath $(top_builddir) \
 	    -friend 'class java::lang::ClassLoader;' \
 	    $(basename $<)
 
-java/io/ObjectInputStream$$GetField.h: libgcj.jar
+java/io/ObjectInputStream$$GetField.h: java/io/ObjectInputStream.class
 	$(GCJH) -classpath $(top_builddir) \
 	'java/io/ObjectInputStream$$GetField'
 
-java/io/ObjectOutputStream$$PutField.h: libgcj.jar
+java/io/ObjectOutputStream$$PutField.h: java/io/ObjectOutputStream.class
 	$(GCJH) -classpath $(top_builddir) \
 	'java/io/ObjectOutputStream$$PutField'
 
@@ -1208,6 +1201,7 @@
 java/util/Iterator.java	\
 java/util/LinkedList.java \
 java/util/LinkedHashMap.java \
+java/util/LinkedHashSet.java \
 java/util/List.java \
 java/util/ListIterator.java \
 java/util/ListResourceBundle.java \

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]