public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Include generated jni.hxx in jni.cxx.
@ 2008-05-09 19:31 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-09 19:31 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  3a67b7fb24ac50fc6ad63b2672084c5691526fb6 (commit)
      from  57fc116cd48ffb2388ccc34c8319f61eaa9c01e0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 3a67b7fb24ac50fc6ad63b2672084c5691526fb6
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri May 9 15:30:55 2008 -0400

    Include generated jni.hxx in jni.cxx.
    
    frysk-common/ChangeLog
    2008-05-09  Andrew Cagney  <cagney@redhat.com>
    
    	* Makefile.gen.sh (jni.cxx, jni.hxx): Pass header name to jnixx.
    	(jni.o): Explicitly specify dependencies.
    
    frysk-sys/frysk/jnixx/ChangeLog
    2008-05-09  Andrew Cagney  <cagney@redhat.com>
    
    	* Main.java: Add a header filename parameter; in .cxx file,
    	generate #include of header, instead of header contents.

-----------------------------------------------------------------------

Summary of changes:
 frysk-common/ChangeLog          |    5 +++++
 frysk-common/Makefile.gen.sh    |    9 +++++----
 frysk-sys/frysk/jnixx/ChangeLog |    3 +++
 frysk-sys/frysk/jnixx/Main.java |   33 +++++++++++++++++++++------------
 4 files changed, 34 insertions(+), 16 deletions(-)

First 500 lines of diff:
diff --git a/frysk-common/ChangeLog b/frysk-common/ChangeLog
index 1650286..938763a 100644
--- a/frysk-common/ChangeLog
+++ b/frysk-common/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-09  Andrew Cagney  <cagney@redhat.com>
+
+	* Makefile.gen.sh (jni.cxx, jni.hxx): Pass header name to jnixx.
+	(jni.o): Explicitly specify dependencies.
+
 2008-05-07  Andrew Cagney  <cagney@redhat.com>
 
 	* Makefile.gen.sh (JNIXX_CLASSES): Generate list of classes.
diff --git a/frysk-common/Makefile.gen.sh b/frysk-common/Makefile.gen.sh
index 42f509f..5fb1b41 100755
--- a/frysk-common/Makefile.gen.sh
+++ b/frysk-common/Makefile.gen.sh
@@ -673,7 +673,7 @@ generate_jnixx_class() {
     local j=$(echo $(dirname $dir)/$base)
     if has_java_source $j ; then
 	automake_variable JNIXX_CLASSES += $(echo $j | tr '[/]' '[.]')
-	echo "${dir}/${base}.o: $j.java"
+	echo "${dir}/${base}.o: $j.java | jni.hxx.gch"
     fi
 }
 
@@ -901,15 +901,16 @@ CLEANFILES += jni.hxx jni.cxx jni.hxx.gch
 \$(lib${GEN_MAKENAME}_jni_a_SOURCES): | jni.hxx jni.hxx.gch
 jni.hxx: \$(jnixx_sources) | ${GEN_DIRNAME}.jar
 	CLASSPATH=\$(GEN_DIRNAME).jar:\$(CLASSPATH) \
-	    \$(JAVA) frysk.jnixx.Main hxx \$(JNIXX_CLASSES) \
+	    \$(JAVA) frysk.jnixx.Main hxx jni.hxx \$(JNIXX_CLASSES) \
 	        > \$@.tmp
 	mv \$@.tmp \$@
 jni.hxx.gch: jni.hxx
 	\$(CXXCOMPILE) -c -x c++-header jni.hxx
-jni.cxx: \$(jnixx_sources) | ${GEN_DIRNAME}.jar jni.hxx.gch
+jni.cxx: \$(jnixx_sources) | ${GEN_DIRNAME}.jar
 	CLASSPATH=\$(GEN_DIRNAME).jar:\$(CLASSPATH) \
-	    \$(JAVA) frysk.jnixx.Main cxx \$(JNIXX_CLASSES) \
+	    \$(JAVA) frysk.jnixx.Main cxx jni.hxx \$(JNIXX_CLASSES) \
 	        > \$@.tmp
 	mv \$@.tmp \$@
+jni.o: jni.hxx | jni.hxx.gch
 EOF
 fi
diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog
index 9590e1b..720b855 100644
--- a/frysk-sys/frysk/jnixx/ChangeLog
+++ b/frysk-sys/frysk/jnixx/ChangeLog
@@ -1,5 +1,8 @@
 2008-05-09  Andrew Cagney  <cagney@redhat.com>
 
+	* Main.java: Add a header filename parameter; in .cxx file,
+	generate #include of header, instead of header contents.
+
 	* PrintDeclarations.java: Generate a protected constructor; and a
 	static Cast method.
 	* jnixx.hxx (jnixx::array): Add Cast method.
diff --git a/frysk-sys/frysk/jnixx/Main.java b/frysk-sys/frysk/jnixx/Main.java
index aeb1b19..7146d51 100644
--- a/frysk-sys/frysk/jnixx/Main.java
+++ b/frysk-sys/frysk/jnixx/Main.java
@@ -79,37 +79,46 @@ class Main {
 	return false;
     }
 
-    private static void printHxxFile(Printer p, Class[] classes) {
+    private static void printHxxFile(Printer p, String headerFile,
+				     Class[] classes) {
 	p.println("#include \"frysk/jnixx/jnixx.hxx\"");
 	new PrintNamespaces(p).walk(classes);
+	p.println();
+	p.println("\f");
 	new PrintDeclarations(p).walk(classes);
+	p.println();
+	p.println("\f");
 	new PrintHxxDefinitions(p).walk(classes);
     }
 
-    private static void printCxxFile(Printer p, Class[] classes) {
-	printHxxFile(p, classes); // #include
-	p.println();
-	p.println("\f");
+    private static void printCxxFile(Printer p, String headerFile,
+				     Class[] classes) {
+	p.print("#include \"");
+	p.print(headerFile);
+	p.println("\"");
 	p.println();
 	new PrintCxxDefinitions(p).walk(classes);
     }
 
     public static void main(String[] args) throws ClassNotFoundException {
-	if (args.length < 2) {
-	    throw new RuntimeException("Usage: jnixx cxx}hxx <class-name> ...");
+	if (args.length < 3) {
+	    throw new RuntimeException("Usage: jnixx cxx|hxx <header-filename> <class-name> ...");
 	}
 
-	Class[] classes = new Class[args.length - 1];
+	boolean generateHeader = args[0].equals("hxx");
+	String headerFile = args[1];
+	final int firstClass = 2;
+	Class[] classes = new Class[args.length - firstClass];
 	for (int i = 0; i < classes.length; i++) {
-	    classes[i] = Class.forName(args[i + 1], false,
+	    classes[i] = Class.forName(args[i + firstClass], false,
 				       Main.class.getClassLoader());
 	}
 
 	Printer p = new Printer(new PrintWriter(System.out));
-	if (args[0].equals("hxx"))
-	    printHxxFile(p, classes);
+	if (generateHeader)
+	    printHxxFile(p, headerFile, classes);
 	else
-	    printCxxFile(p, classes);
+	    printCxxFile(p, headerFile, classes);
 	p.flush();
     }
 }


hooks/post-receive
--
frysk system monitor/debugger


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-05-09 19:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-09 19:31 [SCM] master: Include generated jni.hxx in jni.cxx cagney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).