summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-04-21 14:25:16 +0100
committerRichard Jones <rjones@redhat.com>2009-04-21 14:25:16 +0100
commitb9014d6a0da8b2b3a76c4ab51fab2773fe7480b2 (patch)
tree41054927db7a3e1adb6211fa5ccd282c69d51eb7
parent936108f54cbf8e81132a0a0a8c093a4056f0e11c (diff)
downloadlibguestfs-b9014d6a0da8b2b3a76c4ab51fab2773fe7480b2.tar.gz
libguestfs-b9014d6a0da8b2b3a76c4ab51fab2773fe7480b2.tar.xz
libguestfs-b9014d6a0da8b2b3a76c4ab51fab2773fe7480b2.zip
Basic Java build environment.
-rw-r--r--Makefile.am3
-rw-r--r--README3
-rw-r--r--configure.ac109
-rw-r--r--java/Makefile.am25
-rw-r--r--libguestfs.spec.in68
5 files changed, 206 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index 710e39d9..b642bdd5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,6 +31,9 @@ endif
if HAVE_RUBY
SUBDIRS += ruby
endif
+if HAVE_JAVA
+SUBDIRS += java
+endif
EXTRA_DIST = \
make-initramfs.sh update-initramfs.sh \
diff --git a/README b/README
index 50d21455..5b22da9e 100644
--- a/README
+++ b/README
@@ -52,6 +52,9 @@ also to build the OCaml bindings
- (Optional) Ruby, rake if you want to build the ruby bindings
+- (Optional) Java, JNI, jpackage-utils if you want to build the java
+bindings
+
Running ./configure will check you have all the requirements installed
on your machine.
diff --git a/configure.ac b/configure.ac
index 5be25872..68b716b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -197,7 +197,113 @@ LIBS="$old_libs"
AC_CHECK_PROG([RAKE],[rake],[rake],[no])
AM_CONDITIONAL([HAVE_RUBY],
- [test "x$RAKE" != "xno" -a -n "x$HAVE_LIBRUBY"])
+ [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"])
+
+dnl Check for Java.
+AC_ARG_WITH(java_home,
+ [AS_HELP_STRING([--with-java-home],
+ [specify path to JDK directory @<:@default=check@:>@])],
+ [],
+ [with_java_home=check])
+
+if test "x$with_java_home" != "xno"; then
+ if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
+ then
+ if test -d "$with_java_home"; then
+ JAVA_HOME="$with_java_home"
+ else
+ AC_MSG_FAILURE([$with_java_home is not a directory])
+ fi
+ fi
+ if test "x$JAVA_HOME" = "x"; then
+ JAVA_HOME=/usr/lib/jvm/java
+ fi
+ AC_MSG_CHECKING(for JDK in $JAVA_HOME)
+ if test ! -x "$JAVA_HOME/bin/java"; then
+ AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary])
+ else
+ JAVA="$JAVA_HOME/bin/java"
+ fi
+ if test ! -x "$JAVA_HOME/bin/javac"; then
+ AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
+ else
+ JAVAC="$JAVA_HOME/bin/javac"
+ fi
+ if test ! -x "$JAVA_HOME/bin/javah"; then
+ AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
+ else
+ JAVAH="$JAVA_HOME/bin/javah"
+ fi
+ if test ! -x "$JAVA_HOME/bin/javadoc"; then
+ AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
+ else
+ JAVADOC="$JAVA_HOME/bin/javadoc"
+ fi
+ if test ! -x "$JAVA_HOME/bin/jar"; then
+ AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
+ else
+ JAR="$JAVA_HOME/bin/jar"
+ fi
+ java_version=`$JAVA -version 2>&1 | grep "java version"`
+ AC_MSG_RESULT(found $java_version in $JAVA_HOME)
+
+ dnl Find jni.h.
+ AC_MSG_CHECKING([for jni.h])
+ if test -f "$JAVA_HOME/include/jni.h"; then
+ JNI_CFLAGS="-I$JAVA_HOME/include"
+ else
+ if test "`find $JAVA_HOME -name jni.h`" != ""; then
+ head=`find $JAVA_HOME -name jni.h | tail -1`
+ dir=`dirname $head`
+ JNI_CFLAGS="-I$dir"
+ else
+ AC_MSG_FAILURE([missing jni.h header file])
+ fi
+ fi
+ AC_MSG_RESULT([$JNI_CFLAGS])
+
+ dnl Find jni_md.h.
+ AC_MSG_CHECKING([for jni_md.h])
+ case "$build_os" in
+ *linux*) system="linux" ;;
+ *SunOS*) system="solaris" ;;
+ *cygwin*) system="win32" ;;
+ *) system="$build_os" ;;
+ esac
+ if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
+ JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
+ else
+ if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
+ head=`find $JAVA_HOME -name jni_md.h | tail -1`
+ dir=`dirname $head`
+ JNI_CFLAGS="$JNI_CFLAGS -I$dir"
+ else
+ AC_MSG_FAILURE([missing jni_md.h header file])
+ fi
+ fi
+ AC_MSG_RESULT([$JNI_CFLAGS])
+
+ dnl Need extra version flag?
+ AC_MSG_CHECKING([extra javac flags])
+ JAVAC_FLAGS=
+ javac_version=`$JAVAC -version 2>&1`
+ case "$javac_version" in
+ *Eclipse*)
+ JAVAC_FLAGS="-source 1.5" ;;
+ esac
+ AC_MSG_RESULT([$JAVAC_FLAGS])
+fi
+
+AC_SUBST(JAVA_HOME)
+AC_SUBST(JAVA)
+AC_SUBST(JAVAC)
+AC_SUBST(JAVAH)
+AC_SUBST(JAVADOC)
+AC_SUBST(JAR)
+AC_SUBST(JNI_CFLAGS)
+AC_SUBST(JAVAC_FLAGS)
+
+AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
dnl Run in subdirs.
AC_CONFIG_SUBDIRS([daemon])
@@ -210,6 +316,7 @@ AC_CONFIG_FILES([Makefile src/Makefile fish/Makefile examples/Makefile
perl/Makefile
python/Makefile
ruby/Makefile ruby/Rakefile
+ java/Makefile
make-initramfs.sh update-initramfs.sh
libguestfs.spec
ocaml/META perl/Makefile.PL])
diff --git a/java/Makefile.am b/java/Makefile.am
new file mode 100644
index 00000000..7e8786d8
--- /dev/null
+++ b/java/Makefile.am
@@ -0,0 +1,25 @@
+# libguestfs Java bindings
+# Copyright (C) 2009 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+EXTRA_DIST =
+
+CLEANFILES = *~
+
+if HAVE_JAVA
+
+
+endif \ No newline at end of file
diff --git a/libguestfs.spec.in b/libguestfs.spec.in
index ef07ea89..9cc9266b 100644
--- a/libguestfs.spec.in
+++ b/libguestfs.spec.in
@@ -44,6 +44,9 @@ BuildRequires: perl-ExtUtils-MakeMaker
BuildRequires: python-devel
BuildRequires: ruby-devel
BuildRequires: rubygem-rake
+BuildRequires: java >= 1.5.0
+BuildRequires: jpackage-utils
+BuildRequires: java-devel
# Runtime requires:
Requires: qemu >= 0.10-7
@@ -81,6 +84,8 @@ For Python bindings, see 'python-libguestfs'.
For Ruby bindings, see 'ruby-libguestfs'.
+For Java bindings, see 'libguestfs-java-devel'.
+
%package devel
Summary: Development tools and libraries for %{name}
@@ -168,6 +173,44 @@ Provides: ruby(guestfs) = %{version}
ruby-%{name} contains Ruby bindings for %{name}.
+%package java
+Summary: Java bindings for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: java >= 1.5.0
+Requires: jpackage-utils
+
+%description java
+%{name}-java contains Java bindings for %{name}.
+
+If you want to develop software in Java which uses %{name}, then
+you will also need %{name}-java-devel.
+
+
+%package java-devel
+Summary: Java development package for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-java = %{version}-%{release}
+
+%description java-devel
+%{name}-java-devel contains the tools for developing Java software
+using %{name}.
+
+See also %{name}-javadoc.
+
+
+%package javadoc
+Summary: Java documentation for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-java = %{version}-%{release}
+Requires: jpackage-utils
+
+%description javadoc
+%{name}-javadoc contains the Java documentation for %{name}.
+
+
%prep
%setup -q
@@ -184,10 +227,14 @@ popd
%define extra %nil
%endif
-./configure --prefix=%{_prefix} --libdir=%{_libdir} %{extra}
+./configure \
+ --prefix=%{_prefix} --libdir=%{_libdir} \
+ --with-java-home=%{java_home} \
+ %{extra}
# 'INSTALLDIRS' ensures that perl libs are installed in the vendor dir
# not the site dir.
+# Uses javac which is incompatible with parallel make.
make INSTALLDIRS=vendor
@@ -321,6 +368,25 @@ rm -rf $RPM_BUILD_ROOT
%{ruby_sitearch}/_guestfs.so
+%files java
+%defattr(-,root,root,-)
+%doc README
+%{_libdir}/libguestfs_jni*.so.*
+%{_datadir}/java/*.jar
+
+
+%files java-devel
+%defattr(-,root,root,-)
+%doc java/
+%{_libdir}/libguestfs_jni*.so
+
+
+%files java
+%defattr(-,root,root,-)
+%doc README
+/usr/share/javadoc/%{name}-java-%{version}
+
+
%changelog
* Mon Apr 20 2009 Richard Jones <rjones@redhat.com> - @VERSION@-1
- New upstream version @VERSION@.