Basic Java build environment.

This commit is contained in:
Richard Jones
2009-04-21 14:25:16 +01:00
parent 936108f54c
commit b9014d6a0d
5 changed files with 206 additions and 2 deletions

View File

@@ -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 \

3
README
View File

@@ -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.

View File

@@ -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])

25
java/Makefile.am Normal file
View File

@@ -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

View File

@@ -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@.