public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Generate a single jni wrapper; pre-compile.
@ 2008-05-08  3:41 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-05-08  3:41 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  2a7c99edb7f6fde358b17281aa82837b0a1b4229 (commit)
      from  59e7154ee8e6ca7416560444f29180583e11f346 (commit)

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

- Log -----------------------------------------------------------------
commit 2a7c99edb7f6fde358b17281aa82837b0a1b4229
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed May 7 23:37:37 2008 -0400

    Generate a single jni wrapper; pre-compile.
    
    frysk-common/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* Makefile.gen.sh (JNIXX_CLASSES): Generate list of classes.
    	(jni.hxx, jni.cxx, jni.hxx.gch): Generate JNIXX file rules.
    	(JNIXX_BUILT): Delete.
    	* Makefile.rules (JNIXX): Delete.
    	(%-jni.hxx, %-jni.cxx): Delete.
    
    frysk-sys/frysk/config/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/BuildCompiler.cxx: Include "jni.hxx".
    	* jni/PrefixFactory.cxx-in: Ditto.
    	* jni/Host.cxx-in: Ditto.
    	* jni/FryskVersion.cxx-in: Ditto.
    
    frysk-sys/frysk/jnixx/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Native.cxx: Include jni.hxx; fully qualify jnixx::env.
    	* print.cxx: Ditto.
    	* print.hxx: Ditto.
    	* exceptions.cxx: Ditto.
    	* exceptions.hxx: Ditto.
    	* Main.java: Accept a list of classes.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Log.cxx: Include jni.hxx; fully qualify jnixx::env.
    	* jni/Log.hxx: Ditto.
    
    frysk-sys/frysk/sys/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/AuditLibs.cxx: Include jni.hxx; fully qualify jnixx::env.
    	* jni/Wait.cxx: Ditto.
    	* jni/Tid.cxx: Ditto.
    	* jni/Uname.cxx: Ditto.
    	* jni/StatelessFile.cxx: Ditto.
    	* jni/SignalSet.cxx: Ditto.
    	* jni/Signal.cxx-sh: Ditto.
    	* jni/PseudoTerminal.cxx: Ditto.
    	* jni/Poll.cxx: Ditto.
    	* jni/Pipe.cxx: Ditto.
    	* jni/Pid.cxx: Ditto.
    	* jni/Itimer.cxx: Ditto.
    	* jni/Fork.cxx: Ditto.
    	* jni/FileDescriptor.cxx: Ditto.
    	* jni/Exec.cxx: Ditto.
    	* jni/DaemonFactory.cxx: Ditto.
    	* jni/ChildFactory.cxx: Ditto.
    
    frysk-sys/frysk/sys/proc/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/AuxvBuilder.cxx: Include jni.hxx.
    	* jni/Status.cxx: Ditto.
    	* jni/Stat.cxx: Ditto.
    	* jni/ProcBuilder.cxx: Ditto.
    	* jni/MapsBuilder.cxx: Ditto.
    	* jni/Exe.cxx: Ditto.
    	* jni/CmdLineBuilder.cxx: Ditto.
    
    frysk-sys/frysk/sys/ptrace/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/AddressSpace.cxx: Include jni.hxx.
    	* jni/Utrace.cxx: Ditto.
    	* jni/RegisterSet.cxx: Ditto.
    	* jni/Ptrace.cxx: Ditto.
    
    frysk-sys/frysk/sys/termios/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Control.cxx: Include jni.hxx.
    	* jni/Termios.cxx: Ditto.
    	* jni/Speed.cxx: Ditto.
    	* jni/Special.cxx: Ditto.
    	* jni/Output.cxx: Ditto.
    	* jni/Mode.cxx: Ditto.
    	* jni/Local.cxx: Ditto.
    	* jni/Input.cxx: Ditto.
    	* jni/Flush.cxx: Ditto.
    	* jni/Flow.cxx: Ditto.
    
    frysk-sys/frysk/testbed/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/LocalMemory.cxx: Include jni.hxx; fully qualify names.
    	* jni/Tee.cxx: Ditto.
    
    frysk-sys/lib/dwfl/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/DwarfDie.cxx: Include jni.hxx.
    	* jni/ElfSymbol.cxx: Ditto.
    	* jni/ElfSection.cxx: Ditto.
    	* jni/ElfRel.cxx: Ditto.
    	* jni/ElfPrXFPRegSet.cxx: Ditto.
    	* jni/ElfPrstatus.cxx: Ditto.
    	* jni/ElfPrpsinfo.cxx: Ditto.
    	* jni/ElfPrFPRegSet.cxx: Ditto.
    	* jni/ElfPrAuxv.cxx: Ditto.
    	* jni/ElfNhdr.cxx: Ditto.
    	* jni/ElfDynamic.cxx: Ditto.
    	* jni/ElfData.cxx: Ditto.
    	* jni/Elf.cxx: Ditto.
    	* jni/Dwarf.cxx: Ditto.
    	* jni/ElfArchiveSymbol.cxx: Ditto.
    	* jni/DwflModule.cxx: Ditto.
    	* jni/DwflLine.cxx: Ditto.
    	* jni/Dwfl.cxx: Ditto.
    	* jni/DwException.cxx: Ditto.
    
    frysk-sys/lib/opcodes/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Disassembler.cxx: Include jni.hxx.
    
    frysk-sys/lib/stdcpp/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/Demangler.cxx: Include jni.hxx; fully qualify names.
    
    frysk-sys/lib/unwind/ChangeLog
    2008-05-07  Andrew Cagney  <cagney@redhat.com>
    
    	* jni/ElfImage.cxx: Include jni.hxx.
    	* jni/UnwindX86.cxx: Ditto.
    	* jni/UnwindX8664.cxx: Ditto.
    	* jni/UnwindPPC64.cxx: Ditto.
    	* jni/UnwindPPC32.cxx: Ditto.
    	* jni/Unwind.cxx: Ditto.

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

Summary of changes:
 frysk-common/ChangeLog                          |    6 ++
 frysk-common/Makefile.gen.sh                    |   99 +++++++----------------
 frysk-common/Makefile.rules                     |   20 -----
 frysk-sys/frysk/config/ChangeLog                |    5 +
 frysk-sys/frysk/config/jni/BuildCompiler.cxx    |   10 +-
 frysk-sys/frysk/config/jni/FryskVersion.cxx-in  |    4 +-
 frysk-sys/frysk/config/jni/Host.cxx-in          |    6 +-
 frysk-sys/frysk/config/jni/PrefixFactory.cxx-in |   18 ++--
 frysk-sys/frysk/jnixx/ChangeLog                 |    7 ++
 frysk-sys/frysk/jnixx/ClassVisitor.java         |    5 +
 frysk-sys/frysk/jnixx/ClassWalker.java          |    2 +-
 frysk-sys/frysk/jnixx/Main.java                 |   49 +++++------
 frysk-sys/frysk/jnixx/exceptions.cxx            |    8 +-
 frysk-sys/frysk/jnixx/exceptions.hxx            |    6 +-
 frysk-sys/frysk/jnixx/jni/Native.cxx            |    2 +-
 frysk-sys/frysk/jnixx/print.cxx                 |    6 +-
 frysk-sys/frysk/jnixx/print.hxx                 |    4 +-
 frysk-sys/frysk/rsl/ChangeLog                   |    5 +
 frysk-sys/frysk/rsl/jni/Log.cxx                 |   10 +-
 frysk-sys/frysk/rsl/jni/Log.hxx                 |    8 +-
 frysk-sys/frysk/sys/ChangeLog                   |   18 ++++
 frysk-sys/frysk/sys/jni/AuditLibs.cxx           |    2 +-
 frysk-sys/frysk/sys/jni/ChildFactory.cxx        |    2 +-
 frysk-sys/frysk/sys/jni/DaemonFactory.cxx       |    2 +-
 frysk-sys/frysk/sys/jni/Exec.cxx                |    2 +-
 frysk-sys/frysk/sys/jni/FileDescriptor.cxx      |    2 +-
 frysk-sys/frysk/sys/jni/Fork.cxx                |    2 +-
 frysk-sys/frysk/sys/jni/Itimer.cxx              |    2 +-
 frysk-sys/frysk/sys/jni/Pid.cxx                 |    6 +-
 frysk-sys/frysk/sys/jni/Pipe.cxx                |    2 +-
 frysk-sys/frysk/sys/jni/Poll.cxx                |    2 +-
 frysk-sys/frysk/sys/jni/PseudoTerminal.cxx      |    8 +-
 frysk-sys/frysk/sys/jni/Signal.cxx-sh           |   20 +++---
 frysk-sys/frysk/sys/jni/SignalSet.cxx           |    2 +-
 frysk-sys/frysk/sys/jni/StatelessFile.cxx       |    2 +-
 frysk-sys/frysk/sys/jni/Tid.cxx                 |    4 +-
 frysk-sys/frysk/sys/jni/Uname.cxx               |    2 +-
 frysk-sys/frysk/sys/jni/Wait.cxx                |    2 +-
 frysk-sys/frysk/sys/proc/ChangeLog              |   10 +++
 frysk-sys/frysk/sys/proc/jni/AuxvBuilder.cxx    |    2 +-
 frysk-sys/frysk/sys/proc/jni/CmdLineBuilder.cxx |    2 +-
 frysk-sys/frysk/sys/proc/jni/Exe.cxx            |    2 +-
 frysk-sys/frysk/sys/proc/jni/MapsBuilder.cxx    |    2 +-
 frysk-sys/frysk/sys/proc/jni/ProcBuilder.cxx    |    2 +-
 frysk-sys/frysk/sys/proc/jni/Stat.cxx           |    2 +-
 frysk-sys/frysk/sys/proc/jni/Status.cxx         |    2 +-
 frysk-sys/frysk/sys/ptrace/ChangeLog            |    7 ++
 frysk-sys/frysk/sys/ptrace/jni/AddressSpace.cxx |    2 +-
 frysk-sys/frysk/sys/ptrace/jni/Ptrace.cxx       |    2 +-
 frysk-sys/frysk/sys/ptrace/jni/RegisterSet.cxx  |    2 +-
 frysk-sys/frysk/sys/ptrace/jni/Utrace.cxx       |    2 +-
 frysk-sys/frysk/sys/termios/ChangeLog           |   13 +++
 frysk-sys/frysk/sys/termios/jni/Control.cxx     |    2 +-
 frysk-sys/frysk/sys/termios/jni/Flow.cxx        |    2 +-
 frysk-sys/frysk/sys/termios/jni/Flush.cxx       |    2 +-
 frysk-sys/frysk/sys/termios/jni/Input.cxx       |    2 +-
 frysk-sys/frysk/sys/termios/jni/Local.cxx       |    2 +-
 frysk-sys/frysk/sys/termios/jni/Mode.cxx        |    2 +-
 frysk-sys/frysk/sys/termios/jni/Output.cxx      |    2 +-
 frysk-sys/frysk/sys/termios/jni/Special.cxx     |    2 +-
 frysk-sys/frysk/sys/termios/jni/Speed.cxx       |    2 +-
 frysk-sys/frysk/sys/termios/jni/Termios.cxx     |    2 +-
 frysk-sys/frysk/testbed/ChangeLog               |    3 +
 frysk-sys/frysk/testbed/jni/LocalMemory.cxx     |   18 ++--
 frysk-sys/frysk/testbed/jni/Tee.cxx             |    4 +-
 frysk-sys/lib/dwfl/ChangeLog                    |   20 +++++
 frysk-sys/lib/dwfl/jni/DwException.cxx          |    2 +-
 frysk-sys/lib/dwfl/jni/Dwarf.cxx                |    2 +-
 frysk-sys/lib/dwfl/jni/DwarfDie.cxx             |    2 +-
 frysk-sys/lib/dwfl/jni/Dwfl.cxx                 |    2 +-
 frysk-sys/lib/dwfl/jni/DwflLine.cxx             |    2 +-
 frysk-sys/lib/dwfl/jni/DwflModule.cxx           |    2 +-
 frysk-sys/lib/dwfl/jni/Elf.cxx                  |    2 +-
 frysk-sys/lib/dwfl/jni/ElfArchiveSymbol.cxx     |    2 +-
 frysk-sys/lib/dwfl/jni/ElfData.cxx              |    2 +-
 frysk-sys/lib/dwfl/jni/ElfDynamic.cxx           |    2 +-
 frysk-sys/lib/dwfl/jni/ElfNhdr.cxx              |    2 +-
 frysk-sys/lib/dwfl/jni/ElfPrAuxv.cxx            |    2 +-
 frysk-sys/lib/dwfl/jni/ElfPrFPRegSet.cxx        |    2 +-
 frysk-sys/lib/dwfl/jni/ElfPrXFPRegSet.cxx       |    2 +-
 frysk-sys/lib/dwfl/jni/ElfPrpsinfo.cxx          |    2 +-
 frysk-sys/lib/dwfl/jni/ElfPrstatus.cxx          |    2 +-
 frysk-sys/lib/dwfl/jni/ElfRel.cxx               |    2 +-
 frysk-sys/lib/dwfl/jni/ElfSection.cxx           |    2 +-
 frysk-sys/lib/dwfl/jni/ElfSymbol.cxx            |    2 +-
 frysk-sys/lib/opcodes/ChangeLog                 |    4 +
 frysk-sys/lib/opcodes/jni/Disassembler.cxx      |    2 +-
 frysk-sys/lib/stdcpp/ChangeLog                  |    2 +
 frysk-sys/lib/stdcpp/jni/Demangler.cxx          |    8 +-
 frysk-sys/lib/unwind/ChangeLog                  |    9 ++
 frysk-sys/lib/unwind/jni/ElfImage.cxx           |    2 +-
 frysk-sys/lib/unwind/jni/Unwind.cxx             |    2 +-
 frysk-sys/lib/unwind/jni/UnwindPPC32.cxx        |    2 +-
 frysk-sys/lib/unwind/jni/UnwindPPC64.cxx        |    2 +-
 frysk-sys/lib/unwind/jni/UnwindX86.cxx          |    2 +-
 frysk-sys/lib/unwind/jni/UnwindX8664.cxx        |    2 +-
 96 files changed, 302 insertions(+), 252 deletions(-)

First 500 lines of diff:
diff --git a/frysk-common/ChangeLog b/frysk-common/ChangeLog
index 5d9e60a..1650286 100644
--- a/frysk-common/ChangeLog
+++ b/frysk-common/ChangeLog
@@ -1,5 +1,11 @@
 2008-05-07  Andrew Cagney  <cagney@redhat.com>
 
+	* Makefile.gen.sh (JNIXX_CLASSES): Generate list of classes.
+	(jni.hxx, jni.cxx, jni.hxx.gch): Generate JNIXX file rules.
+	(JNIXX_BUILT): Delete.
+	* Makefile.rules (JNIXX): Delete.
+	(%-jni.hxx, %-jni.cxx): Delete.
+
 	* Makefile.gen.sh (generate_jni_header, generate_jni_dependency):
 	Delete; do not generate JAVAH headers.
 	
diff --git a/frysk-common/Makefile.gen.sh b/frysk-common/Makefile.gen.sh
index 67045b8..42f509f 100755
--- a/frysk-common/Makefile.gen.sh
+++ b/frysk-common/Makefile.gen.sh
@@ -662,78 +662,20 @@ generate_cni_header () {
     rm -f $$.tmp
 }
 
-# Grep the *.cxx and *.hxx files forming a list of included files.
-# Assume these are all generated from .class files found in the master
-# .jar.
+# Grep the *.cxx and *.hxx files forming a list of classes that are
+# native.
 
-print_header "... jnixx headers"
-cat <<EOF
-JNIXX_BUILT =
-CLEANFILES += \$(JNIXXX_BUILT)
-# Generate sources after the .jar is built
-\$(JNIXX_BUILT): | \${GEN_DIRNAME}.jar
-jnixx_sources = \$(wildcard \$(root_srcdir)/frysk-sys/frysk/jnixx/*.java)
-# If any of the JNI sources change, re-generate everything.
-\$(JNIXX_BUILT): \$(jnixx_sources)
-EOF
-rm -f files.jnixx
-while read file dir base suffix ; do
-    case "$file" in
-	*/jni/*.cxx | */jni/*.cxx-in | */jni/*.cxx-sh | */jnixx/*.cxx )
-	sed -n \
-	    -e 's,#include "\(.*\)-jni\.hxx".*,include - \1,p' \
-	    -e 's,#include \([A-Z][A-Z0-9_]*\).*,minclude \1 -,p' \
-	    -e 's,#define \([A-Z0-9_]*\) "\(.*\)-jni\.hxx".*,define \1 \2,p' \
-	    < $file
-	;;
-    esac
-done < files.base | sort -u > files.jnixx
-while read action m h j; do
-    echo "# action=$action m=$m h=$h"
-    if test "$action" = "minclude" ; then
-        # Assume file defining macro depends on this file
-	automake_variable $m = \$\($_file\)
-    elif has_java_source ${h} ; then
-	j=`echo ${h} | tr '[_]' '[/]'`
-	automake_variable lib${GEN_MAKENAME}_jni_a_SOURCES += ${h}-jni.cxx
-	cat <<EOF
-JNIXX_BUILT += ${h}-jni.hxx
-JNIXX_BUILT += ${h}-jni.cxx
-${h}-jni.o: ${h}-jni.hxx
-${h}-jni.hxx: $j.java
-${h}-jni.cxx: $j.java
-EOF
-	case $action in
-	    include)
-		case "$suffix" in
-		    cxx) echo "$d/$b.o: ${h}-jni.hxx" ;;
-		    hxx) # remember what this file includes
-			automake_variable $_file += ${h}-jni.hxx ;;
-		esac
-		;;
-	    define)
-		echo "$d/$b.o: ${h}-jni.hxx"
-		    # Assume file using this macro is a dependency.
-		echo "$d/$b.o: \$($m)"
-		;;
-	esac
+generate_jnixx_class() {
+    local file=$1
+    local d=$2
+    local b=$3
+    local suffix=$4
+    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"
     fi
-done < files.jnixx
-rm -f $$.tmp
-
-print_header "... jnixx dependencies"
-while read file dir base suffix ; do
-    case "$file" in
-	*/jni/*.cxx | */jni/*.cxx-in | */jni/*.cxx-sh | */jnixx/*.cxx )
-	sed -n < $file \
-	    -e 's,#include "\(.*-jni\.hxx\)".*,\1,p' \
-	    | while read h ; do
-	    echo ${dir}/${base}.o: $h
-	done
-	;;
-    esac
-done < files.base
-
+}
 
 # Generate rules for all .xml-in files, assume that they are converted
 # to man pages.
@@ -929,6 +871,7 @@ while read file dir base suffix ; do
 	    generate_compile $file $dir $base $suffix ${sources}
 	    ;;
 	*/jni/*.cxx | */jni/*.cxx-in | */jni/*.cxx-sh | */jnixx/*.cxx )
+	    generate_jnixx_class $file $dir $base $suffix
 	    generate_compile $file $dir $base $suffix \
 		lib${GEN_MAKENAME}_jni_a_SOURCES
 	    ;;
@@ -952,5 +895,21 @@ solib_PROGRAMS += lib${GEN_DIRNAME}-jni.so
 lib${GEN_DIRNAME}-jni.so: lib${GEN_DIRNAME}-jni.a
 .PHONY: jni
 jni: lib${GEN_DIRNAME}-jni.so ${GEN_DIRNAME}.jar
+lib${GEN_MAKENAME}_jni_a_SOURCES += jni.cxx
+jnixx_sources = \$(wildcard \$(root_srcdir)/frysk-sys/frysk/jnixx/*.java)
+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) \
+	        > \$@.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
+	CLASSPATH=\$(GEN_DIRNAME).jar:\$(CLASSPATH) \
+	    \$(JAVA) frysk.jnixx.Main cxx \$(JNIXX_CLASSES) \
+	        > \$@.tmp
+	mv \$@.tmp \$@
 EOF
 fi
diff --git a/frysk-common/Makefile.rules b/frysk-common/Makefile.rules
index 56839bc..c273f77 100644
--- a/frysk-common/Makefile.rules
+++ b/frysk-common/Makefile.rules
@@ -391,26 +391,6 @@ $(GEN_SOURCENAME)/JUnitTests.java: files-java.list
 			-o $$outputdir/$$outputfile \
 			$(GCJHFLAGS) $$class ; \
 	done
-\f
-# Generate one or more .hxx files, one per named class, and using
-# JNIXX, from the corresponding .java file.
-
-# This assumes that the directory's .jar file has already been built.
-
-JNIXX = \
-	set -e ; \
-	class=`echo $@ | sed -e 's/\.[ch]xx$$//' -e 's/-jni//' -e 's,/,.,g'` ; \
-	suffix=`echo $@ | sed -e 's/^.*\.\([ch]xx\)$$/\1/'` ; \
-	echo "$$class $$suffix => $@" ; \
-	rm -f $@.tmp ; \
-	CLASSPATH=$(GEN_DIRNAME).jar:$(CLASSPATH) \
-	    $(JAVA) frysk.jnixx.Main $$class $$suffix \
-		> $@.tmp ; \
-	mv $@.tmp $@
-%-jni.hxx: %.java
-	$(JNIXX)
-%-jni.cxx: %.java
-	$(JNIXX)
 
 \f
 # Shared library rule (for moment assume that .a contains PIC code).
diff --git a/frysk-sys/frysk/config/ChangeLog b/frysk-sys/frysk/config/ChangeLog
index 64ae16e..3d53fc4 100644
--- a/frysk-sys/frysk/config/ChangeLog
+++ b/frysk-sys/frysk/config/ChangeLog
@@ -1,5 +1,10 @@
 2008-05-07  Andrew Cagney  <cagney@redhat.com>
 
+	* jni/BuildCompiler.cxx: Include "jni.hxx".
+	* jni/PrefixFactory.cxx-in: Ditto.
+	* jni/Host.cxx-in: Ditto.
+	* jni/FryskVersion.cxx-in: Ditto.
+	
 	* jni/BuildCompiler.cxx: Pass jnixx::env by value.
 	* jni/PrefixFactory.cxx-in: Ditto.
 	* jni/Host.cxx-in: Ditto.
diff --git a/frysk-sys/frysk/config/jni/BuildCompiler.cxx b/frysk-sys/frysk/config/jni/BuildCompiler.cxx
index 208ac20..ff741ff 100644
--- a/frysk-sys/frysk/config/jni/BuildCompiler.cxx
+++ b/frysk-sys/frysk/config/jni/BuildCompiler.cxx
@@ -37,11 +37,11 @@
 // version and license this file solely under the GPL without
 // exception.
 
-#include "frysk/config/BuildCompiler-jni.hxx"
+#include "jni.hxx"
 
 
 jint
-frysk::config::BuildCompiler::getVersion(jnixx::env env) {
+frysk::config::BuildCompiler::getVersion(::jnixx::env env) {
 #ifdef __GNUC__
   return (jint) __GNUC__;
 #else
@@ -50,7 +50,7 @@ frysk::config::BuildCompiler::getVersion(jnixx::env env) {
 }
 
 jint
-frysk::config::BuildCompiler::getMinorVersion(jnixx::env env) {
+frysk::config::BuildCompiler::getMinorVersion(::jnixx::env env) {
 #ifdef __GNUC_MINOR__
   return (jint) __GNUC_MINOR__;
 #else
@@ -59,7 +59,7 @@ frysk::config::BuildCompiler::getMinorVersion(jnixx::env env) {
 }
 
 jint
-frysk::config::BuildCompiler::getPatchLevel(jnixx::env env) {
+frysk::config::BuildCompiler::getPatchLevel(::jnixx::env env) {
 #ifdef __GNUC_PATCHLEVEL__
   return (jint) __GNUC_PATCHLEVEL__;
 #else
@@ -68,7 +68,7 @@ frysk::config::BuildCompiler::getPatchLevel(jnixx::env env) {
 }
 
 jint
-frysk::config::BuildCompiler::getRHRelease(jnixx::env env) {
+frysk::config::BuildCompiler::getRHRelease(::jnixx::env env) {
 #ifdef __GNUC_RH_RELEASE__
   return (jint) __GNUC_RH_RELEASE__;
 #else
diff --git a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in
index 8952142..12cf78e 100644
--- a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in
+++ b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in
@@ -37,9 +37,9 @@
 // version and license this file solely under the GPL without
 // exception.
 
-#include "frysk/config/FryskVersion-jni.hxx"
+#include "jni.hxx"
 
 java::lang::String
-frysk::config::FryskVersion::version(jnixx::env env) {
+frysk::config::FryskVersion::version(::jnixx::env env) {
   return env.newStringUTF("@VERSION@");
 }
diff --git a/frysk-sys/frysk/config/jni/Host.cxx-in b/frysk-sys/frysk/config/jni/Host.cxx-in
index f756fa3..7662acb 100644
--- a/frysk-sys/frysk/config/jni/Host.cxx-in
+++ b/frysk-sys/frysk/config/jni/Host.cxx-in
@@ -39,14 +39,14 @@
 // version and license this file solely under the GPL without
 // exception.
 
-#include "frysk/config/Host-jni.hxx"
+#include "jni.hxx"
 
 jint 
-frysk::config::Host::wordSize(jnixx::env env) {
+frysk::config::Host::wordSize(::jnixx::env env) {
   return sizeof(long) * 8;
 }
 
 java::lang::String
-frysk::config::Host::cpuXXX(jnixx::env env) {
+frysk::config::Host::cpuXXX(::jnixx::env env) {
   return env.newStringUTF("@host_cpu@");
 }
diff --git a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in
index b377d02..7e1c62c 100644
--- a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in
+++ b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in
@@ -39,45 +39,45 @@
 // version and license this file solely under the GPL without
 // exception.
 
-#include "frysk/config/PrefixFactory-jni.hxx"
+#include "jni.hxx"
 
 java::lang::String
-frysk::config::PrefixFactory::gladeDir(jnixx::env env) {
+frysk::config::PrefixFactory::gladeDir(::jnixx::env env) {
   return env.newStringUTF("@gladedir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::helpDir(jnixx::env env) {
+frysk::config::PrefixFactory::helpDir(::jnixx::env env) {
   return env.newStringUTF("@helpdir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::imagesDir(jnixx::env env) {
+frysk::config::PrefixFactory::imagesDir(::jnixx::env env) {
   return env.newStringUTF("@imagesdir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::binDir(jnixx::env env) {
+frysk::config::PrefixFactory::binDir(::jnixx::env env) {
   return env.newStringUTF("@bindir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::pkgDataDir(jnixx::env env) {
+frysk::config::PrefixFactory::pkgDataDir(::jnixx::env env) {
   return env.newStringUTF("@pkgdatadir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::pkgLibDir(jnixx::env env) {
+frysk::config::PrefixFactory::pkgLibDir(::jnixx::env env) {
   return env.newStringUTF("@pkglibdir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::pkgLib32Dir(jnixx::env env) {
+frysk::config::PrefixFactory::pkgLib32Dir(::jnixx::env env) {
   return env.newStringUTF("@pkglib32dir@");
 }
 
 java::lang::String
-frysk::config::PrefixFactory::sourceDir(jnixx::env env) {
+frysk::config::PrefixFactory::sourceDir(::jnixx::env env) {
   // An educated guess.
   return env.newStringUTF("@prefix@/src/debug/frysk-@VERSION@");
 }
diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog
index 70482f3..48251d9 100644
--- a/frysk-sys/frysk/jnixx/ChangeLog
+++ b/frysk-sys/frysk/jnixx/ChangeLog
@@ -1,5 +1,12 @@
 2008-05-07  Andrew Cagney  <cagney@redhat.com>
 
+	* jni/Native.cxx: Include jni.hxx; fully qualify jnixx::env.
+	* print.cxx: Ditto.
+	* print.hxx: Ditto.
+	* exceptions.cxx: Ditto.
+	* exceptions.hxx: Ditto.
+	* Main.java: Accept a list of classes.
+
 	* Printer.java: Generate passing jnixx::env by value, not reference.
 	* Native.java: New.
 	* jni/Native.cxx: New.
diff --git a/frysk-sys/frysk/jnixx/ClassVisitor.java b/frysk-sys/frysk/jnixx/ClassVisitor.java
index a83be56..20f34e2 100644
--- a/frysk-sys/frysk/jnixx/ClassVisitor.java
+++ b/frysk-sys/frysk/jnixx/ClassVisitor.java
@@ -44,6 +44,11 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Constructor;
 
 abstract class ClassVisitor {
+    void visit(Class[] classes) {
+	for (int i = 0; i < classes.length; i++) {
+	    visit(classes[i]);
+	}
+    }
     void visit(Class klass) {
 	acceptComponent(klass.getComponentType());
 	Class[] interfaces = klass.getInterfaces();
diff --git a/frysk-sys/frysk/jnixx/ClassWalker.java b/frysk-sys/frysk/jnixx/ClassWalker.java
index 2154f76..fd89899 100644
--- a/frysk-sys/frysk/jnixx/ClassWalker.java
+++ b/frysk-sys/frysk/jnixx/ClassWalker.java
@@ -47,7 +47,7 @@ import java.util.HashSet;
 
 abstract class ClassWalker {
     private final Set visited = new HashSet();
-    private void walk(Class[] klasses) {
+    void walk(Class[] klasses) {
 	for (int i = 0; i < klasses.length; i++) {
 	    walk(klasses[i]);
 	}
diff --git a/frysk-sys/frysk/jnixx/Main.java b/frysk-sys/frysk/jnixx/Main.java
index d2b5832..4b52314 100644
--- a/frysk-sys/frysk/jnixx/Main.java
+++ b/frysk-sys/frysk/jnixx/Main.java
@@ -43,47 +43,44 @@ import java.io.PrintWriter;
 
 class Main {
 
-    private static void printHxxFile(Printer p, Class klass) {
-	String header = klass.getName().replaceAll("\\.", "_") + "_jni_hxx";
-	p.println("#ifndef " + header);
-	p.println("#define " + header);
-	p.println();
+    private static void printHxxFile(Printer p, Class[] classes) {
 	p.println("// Get declarations.");
 	p.println("#include \"frysk/jnixx/jnixx.hxx\"");
-	new PrintNamespaces(p).walk(klass);
-	new PrintDeclarations(p).walk(klass);
+	new PrintNamespaces(p).walk(classes);
+	new PrintDeclarations(p).walk(classes);
 	p.println();
 	p.println("// Get definitions.");
 	p.println("#include \"frysk/jnixx/jnixx.hxx\"");
-	new PrintHxxDefinitions(p).walk(klass);
-	p.println();
-	p.println("#endif");
+	new PrintHxxDefinitions(p).walk(classes);
     }
 
-    private static void printCxxFile(Printer p, Class klass) {
-	p.print("#include \"");
-	p.printHeaderFileName(klass);
-	p.println("\"");
+    private static void printCxxFile(Printer p, Class[] classes) {
+	printHxxFile(p, classes); // #include
 	p.println();
-	p.print("jclass ");
-	p.printQualifiedCxxName(klass);
-	p.println("::_class;");
-	new PrintCxxDefinitions(p).visit(klass);
+	for (int i = 0; i < classes.length; i++) {
+	    p.print("jclass ");
+	    p.printQualifiedCxxName(classes[i]);
+	    p.println("::_class;");
+	}
+	new PrintCxxDefinitions(p).visit(classes);
     }
 
     public static void main(String[] args) throws ClassNotFoundException {
-	if (args.length != 2) {
-	    throw new RuntimeException("Usage: jnixx <class-name>");
+	if (args.length < 2) {
+	    throw new RuntimeException("Usage: jnixx cxx}hxx <class-name> ...");
 	}
 
-	Class klass = Class.forName(args[0], false,
-				    Main.class.getClassLoader());
-	Printer p = new Printer(new PrintWriter(System.out));
+	Class[] classes = new Class[args.length - 1];
+	for (int i = 0; i < classes.length; i++) {
+	    classes[i] = Class.forName(args[i + 1], false,
+				       Main.class.getClassLoader());
+	}
 
-	if (args[1].equals("hxx"))
-	    printHxxFile(p, klass);
+	Printer p = new Printer(new PrintWriter(System.out));
+	if (args[0].equals("hxx"))
+	    printHxxFile(p, classes);
 	else
-	    printCxxFile(p, klass);
+	    printCxxFile(p, classes);
 	p.flush();
     }
 }
diff --git a/frysk-sys/frysk/jnixx/exceptions.cxx b/frysk-sys/frysk/jnixx/exceptions.cxx
index 1f794f7..d932c9c 100644
--- a/frysk-sys/frysk/jnixx/exceptions.cxx
+++ b/frysk-sys/frysk/jnixx/exceptions.cxx
@@ -43,19 +43,19 @@
 #include <errno.h>
 #include <stdlib.h>
 
-#include "frysk/sys/Errno-jni.hxx"
+#include "jni.hxx"
 
 #include "frysk/jnixx/exceptions.hxx"
 
 void
-errnoException(jnixx::env& env, int error, const char *prefix) {
+errnoException(::jnixx::env& env, int error, const char *prefix) {
   // Hack; for moment just throw something.
   runtimeException(env, "not implemented: %s#%d#%s",
 		   __FILE__, __LINE__, __func__);
 }
 
 void
-errnoException(jnixx::env& env, int error, const char *prefix,
+errnoException(::jnixx::env& env, int error, const char *prefix,
 	       const char *fmt, ...) {
   // Hack; for moment just throw something.
   runtimeException(env, "not implemented: %s#%d#%s",
@@ -63,7 +63,7 @@ errnoException(jnixx::env& env, int error, const char *prefix,
 }
 
 void
-runtimeException(jnixx::env& env, const char *fmt, ...) {
+runtimeException(::jnixx::env& env, const char *fmt, ...) {
   jclass cls = env.findClass("java/lang/RuntimeException");
   va_list ap;
   va_start(ap, fmt);
diff --git a/frysk-sys/frysk/jnixx/exceptions.hxx b/frysk-sys/frysk/jnixx/exceptions.hxx
index 8173b02..877356c 100644
--- a/frysk-sys/frysk/jnixx/exceptions.hxx
+++ b/frysk-sys/frysk/jnixx/exceptions.hxx
@@ -42,13 +42,13 @@
  * code return.
  */
 
-extern void errnoException(jnixx::env& env, int error, const char *prefix)
+extern void errnoException(::jnixx::env& env, int error, const char *prefix)
   __attribute__((noreturn));
-extern void errnoException(jnixx::env& env, int error, const char *prefix,
+extern void errnoException(::jnixx::env& env, int error, const char *prefix,
 			   const char *fmt, ...)


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


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

only message in thread, other threads:[~2008-05-08  3:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-08  3:41 [SCM] master: Generate a single jni wrapper; pre-compile 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).