public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Generate a single jni wrapper; pre-compile. Date: Thu, 08 May 2008 03:41:00 -0000 [thread overview] Message-ID: <20080508034103.12979.qmail@sourceware.org> (raw) 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
reply other threads:[~2008-05-08 3:41 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080508034103.12979.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).