This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Makefile patch: CNI header dependencies
- From: Bryce McKinlay <bryce at waitaki dot otago dot ac dot nz>
- To: java-patches at gcc dot gnu dot org
- Date: Fri, 23 Nov 2001 19:44:30 +1300
- Subject: 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 \