1
1
openmpi/ompi/mpi/java/java/Makefile.am
KAWASHIMA Takahiro 63f0945dcc java: Detect the path of javadoc in configure
Without this change, the directory of `javadoc` command must be
included in the `PATH` environment variable at `make`-time.
Paths of `javac`, `javah`, and `jar` commands are detected in
`configure`. So the path of `javadoc` also should be detected.

Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
2017-05-31 14:26:14 +09:00

211 строки
6.5 KiB
Makefile

# -*- makefile -*-
#
# Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2015 Los Alamos National Security, LLC. All rights
# reserved.
# Copyright (c) 2017 FUJITSU LIMITED. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
include $(top_srcdir)/Makefile.ompi-rules
#
# We generate three general things in this directory:
#
# 1. *.java files get compiled into mpi/*.class files.
# 2. The mpi/*.class files are then assembled into an mpi.jar file.
# 3. The mpi/*.class files are analyzed to make *.h JNI files.
#
# These are the Java source files. However, Automake doesn't directly
# know about them, and we compile them via *.java below (ick!). So we
# just list them here in EXTRA_DIST so that they get picked up by
# "make dist".
JAVA_SRC_FILES = \
CartComm.java \
CartParms.java \
Comm.java \
Constant.java \
Count.java \
Datatype.java \
DistGraphNeighbors.java \
DoubleInt.java \
DoubleComplex.java \
Errhandler.java \
FloatComplex.java \
FloatInt.java \
File.java \
FileView.java \
Freeable.java \
GraphComm.java \
GraphParms.java \
Group.java \
Info.java \
Int2.java \
Intercomm.java \
Intracomm.java \
LongInt.java \
Message.java \
MPI.java \
MPIException.java \
Op.java \
Prequest.java \
Request.java \
ShiftParms.java \
ShortInt.java \
Status.java \
Struct.java \
UserFunction.java \
Version.java \
Win.java
EXTRA_DIST = $(JAVA_SRC_FILES)
# Only do this stuff if we want the Java bindings
if OMPI_WANT_JAVA_BINDINGS
# These files get generated. They have a 1:1 correspondence to .java
# files, but there is not a .h file for every .java file. That's why
# we have a specific list of files here, as opposed to deriving them
# from JAVA_SRC_FILES.
JAVA_H = \
mpi_MPI.h \
mpi_CartParms.h \
mpi_CartComm.h \
mpi_Comm.h \
mpi_Constant.h \
mpi_Count.h \
mpi_Datatype.h \
mpi_Errhandler.h \
mpi_File.h \
mpi_GraphParms.h \
mpi_GraphComm.h \
mpi_Group.h \
mpi_Info.h \
mpi_Intercomm.h \
mpi_Intracomm.h \
mpi_Message.h \
mpi_Op.h \
mpi_Prequest.h \
mpi_Request.h \
mpi_ShiftParms.h \
mpi_Status.h \
mpi_Version.h \
mpi_Win.h
# A little verbosity magic; see Makefile.ompi-rules for an explanation.
OMPI_V_JAVAC = $(ompi__v_JAVAC_$V)
ompi__v_JAVAC_ = $(ompi__v_JAVAC_$AM_DEFAULT_VERBOSITY)
ompi__v_JAVAC_0 = @echo " JAVAC " `basename $@`;
OMPI_V_JAVAH = $(ompi__v_JAVAH_$V)
ompi__v_JAVAH_ = $(ompi__v_JAVAH_$AM_DEFAULT_VERBOSITY)
ompi__v_JAVAH_0 = @echo " JAVAH " `basename $@`;
OMPI_V_JAR = $(ompi__v_JAR_$V)
ompi__v_JAR_ = $(ompi__v_JAR_$AM_DEFAULT_VERBOSITY)
ompi__v_JAR_0 = @echo " JAR " `basename $@`;
OMPI_V_JAVADOC = $(ompi__v_JAVADOC_$V)
ompi__v_JAVADOC_ = $(ompi__v_JAVADOC_$AM_DEFAULT_VERBOSITY)
ompi__v_JAVADOC_0 = @echo "JAVADOC " `basename $@`;
OMPI_V_JAVADOC_QUIET = $(ompi__v_JAVADOC_QUIET_$V)
ompi__v_JAVADOC_QUIET_ = $(ompi__v_JAVADOC_QUIET_$AM_DEFAULT_VERBOSITY)
ompi__v_JAVADOC_QUIET_0 = -quiet
# All the .java files seem to have circular references, such that I
# can't figure out a linear order in which to compile them
# sequentially that does not generate dependency errors. Hence, the
# only way I can figure out how to compile them is via *.java -- this
# could well be due to my own misunderstanding of Java or the
# compiler. Shrug.
#
# So instead of listing all the .class files, since the rule below
# will generate *all* the .class files simulanteously, just use
# mpi/MPI.class as a token class file for both the rule and all the
# dependencies below.
#
# Note too, that all of them will be recompiled if any of them change,
# since Automake doesn't know how to automatically generate
# dependencies for Java source files. So I made the token MPI.class
# file dependent upon *all* the .java source files.
#
# Note that the javac compile will generate all the .class files in
# the "mpi" subdirectory, because that's the java package that they're
# in. This, along with the fact that the .java files seem to have
# circular references, prevents us from using a .foo.bar: generic
# Makefile rule. :-(
mpi/MPI.class: $(JAVA_SRC_FILES)
$(OMPI_V_JAVAC) CLASSPATH=. ; \
export CLASSPATH ; \
$(JAVAC) -d . $(top_srcdir)/ompi/mpi/java/java/*.java
# Similar to above, all the generated .h files are dependent upon the
# token mpi/MPI.class file. Hence, all the classes will be generated
# first, then we'll individually generate each of the .h files.
$(JAVA_H): mpi/MPI.class
$(OMPI_V_JAVAH) sourcename=mpi.`echo $@ | sed -e s/^mpi_// -e s/.h$$//`; \
CLASSPATH=. ; \
export CLASSPATH ; \
$(JAVAH) -d . -jni $$sourcename
# Generate the .jar file from all the class files. List mpi/MPI.class
# as a dependency so that it fires the rule above that will generate
# *all* the mpi/*.class files.
mpi.jar: mpi/MPI.class
$(OMPI_V_JAR) $(JAR) cf mpi.jar mpi/*.class
# Install the jar file into libdir. Use the DATA Automake primary,
# because Automake will complain if you try to use LIBRARIES with a
# filename that doesn't fit the lib<foo>.* format. Also use an
# indirection to get to the libdir -- Automake does not allow putting
# libdir for the DATA primary.
javadir = $(libdir)
java_DATA = mpi.jar
# List all the header files in BUILT_SOURCES so that Automake's "all"
# target will build them. This will also force the building of the
# mpi/*.class files (for the jar file).
BUILT_SOURCES = $(JAVA_H) doc
# Convenience for building Javadoc docs
jdoc: doc
# Make the "doc" target (and subdir) dependent upon mpi/MPI.class; if
# mpi.jar is ever rebuilt, then also make the docs eligible to be
# rebuilt.
doc: mpi/MPI.class
$(OMPI_V_JAVADOC) $(JAVADOC) $(OMPI_V_JAVADOC_QUIET) -d doc $(srcdir)/*.java
@touch doc
jdoc-install: doc
-$(MKDIR_P) $(DESTDIR)$(docdir)/javadoc-openmpi
cp -rp doc/* $(DESTDIR)$(docdir)/javadoc-openmpi
jdoc-uninstall:
-rm -rf $(DESTDIR)$(docdir)/javadoc
install-data-hook: jdoc-install
uninstall-local: jdoc-uninstall
# Clean up all the things that this Makefile.am generates.
CLEANFILES += $(JAVA_H) mpi.jar
# Can only put *files* in CLEANFILES; need to remove the generated doc
# and mpi directories separately.
clean-local:
-rm -rf doc mpi
# Conditionally install the header files
if WANT_INSTALL_HEADERS
ompihdir = $(ompiincludedir)/$(subdir)
nobase_nodist_ompih_HEADERS = $(JAVA_H)
endif
endif