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]

[PATCH] Fix --enable-java-maintainer-mode


Hi!

gcjh.stamp rule doesn't create only $(generic_header_files), but also
$(inner_nat_headers), but the Makefile rules weren't telling that
dependency to make.  So, if e.g. the generated files were removed,
make -j16 would result in missing dependencies.
Also, the *.jar/*.class files in libjava/testsuite/ were all created
by hand and thus e.g. changing the testcases in --enable-java-maintainer-mode
doesn't result in their rebuilding.
Fixed thusly, tested both without and with --enable-java-maintainer-mode.
Ok for trunk?

2007-01-26  Jakub Jelinek  <jakub@redhat.com>

	* Makefile.am (generic_header_files): Add $(inner_nat_headers).
	* testsuite/Makefile.am (check-dejaGNU): Depend on compile-tests.
	(MYGCJH): New variable.
	(compile-tests): New goal.
	* Makefile.in: Rebuilt.
	* testsuite/Makefile.in: Rebuilt.

--- libjava/Makefile.am	(revision 121063)
+++ libjava/Makefile.am	(revision 121204)
@@ -391,19 +391,6 @@ omitted_headers = java/lang/ClassLoader.
 	java/lang/reflect/Field.h java/lang/reflect/Method.h \
 	java/lang/reflect/Proxy.h gnu/gcj/runtime/ExtensionClassLoader.h
 
-generic_header_files = $(ordinary_header_files) $(xlib_nat_headers)
-
-MYGCJH = gjavah
-
-$(generic_header_files): gcjh.stamp
-
-gcjh.stamp: classpath/lib/compile-classes
-if JAVA_MAINTAINER_MODE
-	$(MYGCJH) --cni --all $(srcdir)/classpath/lib \
-	    --cmdfile=$(srcdir)/headers.txt -d $(srcdir) --force
-endif
-	echo > gcjh.stamp
-
 inner_nat_headers = java/io/ObjectOutputStream$$PutField.h \
 	java/io/ObjectInputStream$$GetField.h \
 	java/nio/DirectByteBufferImpl$$ReadWrite.h \
@@ -416,6 +403,20 @@ inner_nat_headers = java/io/ObjectOutput
 	gnu/java/nio/PipeImpl$$SinkChannelImpl.h \
 	gnu/java/nio/PipeImpl$$SourceChannelImpl.h
 
+generic_header_files = $(ordinary_header_files) $(inner_nat_headers) \
+	$(xlib_nat_headers)
+
+MYGCJH = gjavah
+
+$(generic_header_files): gcjh.stamp
+
+gcjh.stamp: classpath/lib/compile-classes
+if JAVA_MAINTAINER_MODE
+	$(MYGCJH) --cni --all $(srcdir)/classpath/lib \
+	    --cmdfile=$(srcdir)/headers.txt -d $(srcdir) --force
+endif
+	echo > gcjh.stamp
+
 nat_headers = $(ordinary_header_files) $(inner_nat_headers)
 nat_headers_install = $(ordinary_header_files)
 
--- libjava/testsuite/Makefile.am	(revision 121063)
+++ libjava/testsuite/Makefile.am	(revision 121204)
@@ -19,3 +19,66 @@ RUNTEST = "`if [ -f $(top_srcdir)/../dej
 
 ## Tell dejagnu whether the interpreter is enabled.
 AM_RUNTESTFLAGS = INTERPRETER=$(INTERPRETER)
+
+MYGCJH = gjavah
+
+.PHONY: compile-tests
+
+check-am: compile-tests
+
+compile-tests:
+if JAVA_MAINTAINER_MODE
+	for test in `cd $(srcdir) > /dev/null; \
+		     find libjava.cni libjava.jni libjava.jvmti libjava.lang \
+			  libjava.loader libjava.verify -name \*.java`; do \
+	  testjar=$(srcdir)/`echo $$test | sed -e 's/\.java$$/\.jar/'`; \
+	  testdep=; \
+	  genheader=; \
+	  case "$$test" in \
+	    libjava.loader/dummy.java) \
+	      testjar=$(srcdir)/libjava.loader/dummy.class;; \
+	    libjava.loader/MyLoader.java) \
+	      continue;; \
+	    libjava.loader/*.java) \
+	      testdep="libjava.loader/MyLoader.java";; \
+	    libjava.jni/register2.java) \
+	      ;; \
+	    libjava.jni/*.java) \
+	      genheader=-jni;; \
+	    libjava.jvmti/*.java|libjava.cni/*.java) \
+	      genheader=-cni;; \
+	  esac; \
+	  if test -f $$testjar; then \
+	    if ! test $(srcdir)/$$test -nt $$testjar; then \
+	      test -z "$$testdep" && continue; \
+	      test $(srcdir)/$$testdep -nt $$testjar || continue; \
+	    fi; \
+	  fi; \
+	  echo Compiling $$test; \
+	  testtmpdir=`echo $$test | sed -e 's,/,_,g'`T; \
+	  rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \
+	  if test -n "$$testdep"; then \
+	    $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+	      $(top_builddir)/libgcj-$(gcc_version).jar::$testtmpdir \
+	      -d $$testtmpdir $(srcdir)/$$testdep || exit; \
+	  fi; \
+	  $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+	    $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \
+	    -d $$testtmpdir $(srcdir)/$$test || exit; \
+	  case "$$test" in \
+	    libjava.loader/dummy.java) \
+	      cp $$testtmpdir/dummy.class $$testjar;; \
+	    *) \
+	      $(JAR) cf $$testjar \
+		`ls $$testtmpdir/*.class \
+		 | sed -e 's,^,-C ,;s,/\([^/]*\.class\)$$, \1,'` || exit ;; \
+	  esac; \
+	  if test -n "$$genheader"; then \
+	    $(MYGCJH) $$genheader $$testtmpdir/*.class \
+	      -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \
+	      -d $$testtmpdir/ || exit; \
+	    mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \
+	  fi; \
+	  rm -rf $$testtmpdir; \
+	done
+endif
--- libjava/Makefile.in	(revision 121063)
+++ libjava/Makefile.in	(revision 121204)
@@ -7729,8 +7729,6 @@ omitted_headers = java/lang/ClassLoader.
 	java/lang/reflect/Field.h java/lang/reflect/Method.h \
 	java/lang/reflect/Proxy.h gnu/gcj/runtime/ExtensionClassLoader.h
 
-generic_header_files = $(ordinary_header_files) $(xlib_nat_headers)
-MYGCJH = gjavah
 inner_nat_headers = java/io/ObjectOutputStream$$PutField.h \
 	java/io/ObjectInputStream$$GetField.h \
 	java/nio/DirectByteBufferImpl$$ReadWrite.h \
@@ -7743,6 +7741,10 @@ inner_nat_headers = java/io/ObjectOutput
 	gnu/java/nio/PipeImpl$$SinkChannelImpl.h \
 	gnu/java/nio/PipeImpl$$SourceChannelImpl.h
 
+generic_header_files = $(ordinary_header_files) $(inner_nat_headers) \
+	$(xlib_nat_headers)
+
+MYGCJH = gjavah
 nat_headers = $(ordinary_header_files) $(inner_nat_headers)
 nat_headers_install = $(ordinary_header_files)
 xlib_nat_headers = $(gnu_awt_xlib_header_files) $(gnu_gcj_xlib_header_files)
--- libjava/testsuite/Makefile.in	(revision 121063)
+++ libjava/testsuite/Makefile.in	(revision 121204)
@@ -320,6 +320,7 @@ RUNTEST = "`if [ -f $(top_srcdir)/../dej
 	    else echo runtest; fi` $(AM_RUNTESTFLAGS)"
 
 AM_RUNTESTFLAGS = INTERPRETER=$(INTERPRETER)
+MYGCJH = gjavah
 all: all-am
 
 .SUFFIXES:
@@ -518,6 +519,65 @@ uninstall-am: uninstall-info-am
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 	uninstall uninstall-am uninstall-info-am
 
+
+.PHONY: compile-tests
+
+check-am: compile-tests
+
+compile-tests:
+@JAVA_MAINTAINER_MODE_TRUE@	for test in `cd $(srcdir) > /dev/null; \
+@JAVA_MAINTAINER_MODE_TRUE@		     find libjava.cni libjava.jni libjava.jvmti libjava.lang \
+@JAVA_MAINTAINER_MODE_TRUE@			  libjava.loader libjava.verify -name \*.java`; do \
+@JAVA_MAINTAINER_MODE_TRUE@	  testjar=$(srcdir)/`echo $$test | sed -e 's/\.java$$/\.jar/'`; \
+@JAVA_MAINTAINER_MODE_TRUE@	  testdep=; \
+@JAVA_MAINTAINER_MODE_TRUE@	  genheader=; \
+@JAVA_MAINTAINER_MODE_TRUE@	  case "$$test" in \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.loader/dummy.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      testjar=$(srcdir)/libjava.loader/dummy.class;; \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.loader/MyLoader.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      continue;; \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.loader/*.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      testdep="libjava.loader/MyLoader.java";; \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.jni/register2.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      ;; \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.jni/*.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      genheader=-jni;; \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.jvmti/*.java|libjava.cni/*.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      genheader=-cni;; \
+@JAVA_MAINTAINER_MODE_TRUE@	  esac; \
+@JAVA_MAINTAINER_MODE_TRUE@	  if test -f $$testjar; then \
+@JAVA_MAINTAINER_MODE_TRUE@	    if ! test $(srcdir)/$$test -nt $$testjar; then \
+@JAVA_MAINTAINER_MODE_TRUE@	      test -z "$$testdep" && continue; \
+@JAVA_MAINTAINER_MODE_TRUE@	      test $(srcdir)/$$testdep -nt $$testjar || continue; \
+@JAVA_MAINTAINER_MODE_TRUE@	    fi; \
+@JAVA_MAINTAINER_MODE_TRUE@	  fi; \
+@JAVA_MAINTAINER_MODE_TRUE@	  echo Compiling $$test; \
+@JAVA_MAINTAINER_MODE_TRUE@	  testtmpdir=`echo $$test | sed -e 's,/,_,g'`T; \
+@JAVA_MAINTAINER_MODE_TRUE@	  rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \
+@JAVA_MAINTAINER_MODE_TRUE@	  if test -n "$$testdep"; then \
+@JAVA_MAINTAINER_MODE_TRUE@	    $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+@JAVA_MAINTAINER_MODE_TRUE@	      $(top_builddir)/libgcj-$(gcc_version).jar::$testtmpdir \
+@JAVA_MAINTAINER_MODE_TRUE@	      -d $$testtmpdir $(srcdir)/$$testdep || exit; \
+@JAVA_MAINTAINER_MODE_TRUE@	  fi; \
+@JAVA_MAINTAINER_MODE_TRUE@	  $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \
+@JAVA_MAINTAINER_MODE_TRUE@	    $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \
+@JAVA_MAINTAINER_MODE_TRUE@	    -d $$testtmpdir $(srcdir)/$$test || exit; \
+@JAVA_MAINTAINER_MODE_TRUE@	  case "$$test" in \
+@JAVA_MAINTAINER_MODE_TRUE@	    libjava.loader/dummy.java) \
+@JAVA_MAINTAINER_MODE_TRUE@	      cp $$testtmpdir/dummy.class $$testjar;; \
+@JAVA_MAINTAINER_MODE_TRUE@	    *) \
+@JAVA_MAINTAINER_MODE_TRUE@	      $(JAR) cf $$testjar \
+@JAVA_MAINTAINER_MODE_TRUE@		`ls $$testtmpdir/*.class \
+@JAVA_MAINTAINER_MODE_TRUE@		 | sed -e 's,^,-C ,;s,/\([^/]*\.class\)$$, \1,'` || exit ;; \
+@JAVA_MAINTAINER_MODE_TRUE@	  esac; \
+@JAVA_MAINTAINER_MODE_TRUE@	  if test -n "$$genheader"; then \
+@JAVA_MAINTAINER_MODE_TRUE@	    $(MYGCJH) $$genheader $$testtmpdir/*.class \
+@JAVA_MAINTAINER_MODE_TRUE@	      -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \
+@JAVA_MAINTAINER_MODE_TRUE@	      -d $$testtmpdir/ || exit; \
+@JAVA_MAINTAINER_MODE_TRUE@	    mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \
+@JAVA_MAINTAINER_MODE_TRUE@	  fi; \
+@JAVA_MAINTAINER_MODE_TRUE@	  rm -rf $$testtmpdir; \
+@JAVA_MAINTAINER_MODE_TRUE@	done
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:

	Jakub


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