This is the mail archive of the frysk-cvs@sources.redhat.com mailing list for the frysk 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]

[SCM] master: Include generated jni.hxx in jni.cxx.


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


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