1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
# cmake/modules/java.cmake
#
# Java binding configuration
#
# Copyright (C) 2006 Andrew Ross
# Copyright (C) 2017 Alan W. Irwin
#
# This file is part of PLplot.
#
# PLplot is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; version 2 of the License.
#
# PLplot 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 Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with the file PLplot; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# Module for determining Java binding configuration options
# Options to enable Java binding
if(DEFAULT_NO_BINDINGS)
option(ENABLE_java "Enable Java binding" OFF)
else(DEFAULT_NO_BINDINGS)
option(ENABLE_java "Enable Java binding" ON)
endif(DEFAULT_NO_BINDINGS)
if(ENABLE_java AND NOT BUILD_SHARED_LIBS)
message(STATUS "WARNING: "
"Java requires shared libraries. Disabling java binding")
set(ENABLE_java OFF CACHE BOOL "Enable Java binding" FORCE)
endif(ENABLE_java AND NOT BUILD_SHARED_LIBS)
if(ENABLE_java AND NOT SWIG_FOUND)
message(STATUS "WARNING: "
"swig not found. Disabling Java binding")
set(ENABLE_java OFF CACHE BOOL "Enable Java binding" FORCE)
endif(ENABLE_java AND NOT SWIG_FOUND)
if(ENABLE_java AND NOT PLPLOT_Java_COMPILER_WORKS)
workaround_9220(Java PLPLOT_Java_COMPILER_WORKS)
if(NOT PLPLOT_Java_COMPILER_WORKS)
message(STATUS "WARNING: no working Java compiler so disabling Java binding and examples.")
set(ENABLE_java OFF CACHE BOOL "Enable Java binding" FORCE)
endif(NOT PLPLOT_Java_COMPILER_WORKS)
endif(ENABLE_java AND NOT PLPLOT_Java_COMPILER_WORKS)
if(ENABLE_java AND NOT PL_DOUBLE)
message(STATUS "WARNING: "
"Only single-precision floating point. Disabling Java binding because of build errors in this case.")
set(ENABLE_java OFF CACHE BOOL "Enable Java binding" FORCE)
endif(ENABLE_java AND NOT PL_DOUBLE)
if(ENABLE_java)
# Find and check Java compiler.
enable_language(Java OPTIONAL)
if(NOT CMAKE_Java_COMPILER_WORKS)
message(STATUS "WARNING: no working Java compiler so disabling Java binding and examples.")
set(ENABLE_java OFF CACHE BOOL "Enable java binding" FORCE)
endif(NOT CMAKE_Java_COMPILER_WORKS)
endif(ENABLE_java)
if(ENABLE_java)
if(NOT CMAKE_Java_ARCHIVE)
message(STATUS "WARNING: java archiver (jar) not found. Disabling java binding")
set(ENABLE_java OFF CACHE BOOL "Enable Java binding" FORCE)
endif(NOT CMAKE_Java_ARCHIVE)
endif(ENABLE_java)
if(ENABLE_java)
# Check for java environment
find_package(JNI)
# If CMake doesn't find jni.h you need set CMAKE_INCLUDE_PATH
if(NOT JAVA_INCLUDE_PATH)
message(STATUS
"WARNING: jni.h header not found. Disabling Java binding.\n"
" Please install that header and/or set the environment variable\n"
" CMAKE_INCLUDE_PATH appropriately."
)
set(ENABLE_java OFF CACHE BOOL "Enable Java binding" FORCE)
endif(NOT JAVA_INCLUDE_PATH)
endif(ENABLE_java)
if(ENABLE_java)
set(
JAR_DIR
${CMAKE_INSTALL_DATADIR}/java
CACHE PATH "PLplot jar file install location"
)
list(APPEND INSTALL_LOCATION_VARIABLES_LIST JAR_DIR)
set(
JAVAWRAPPER_DIR
${LIB_DIR}/jni
CACHE PATH "PLplot java plugin (JNI *.so) install location"
)
list(APPEND INSTALL_LOCATION_VARIABLES_LIST JAVAWRAPPER_DIR)
# These "HARDDIR" directory locations are designed to be used for
# hard-coded java install locations in configured files which should
# refer to the final absolute install location rather than some
# intermediate staging area location for the install that is
# typically used by package builders.
# These variables are uncached (i.e., not settable by users) since
# they should be exactly consistent with the absolute locations
# corresponding to JAR_DIR and JAVAWRAPPER_DIR
get_filename_component(JAR_HARDDIR ${JAR_DIR} ABSOLUTE)
get_filename_component(JAVAWRAPPER_HARDDIR ${JAVAWRAPPER_DIR} ABSOLUTE)
endif(ENABLE_java)
# Set up java compiler flags and turn into a list suitable for add_custom_command
set(DEFAULT_JAVACFLAGS "")
set(JAVACFLAGS ${DEFAULT_JAVACFLAGS} CACHE STRING "Java compiler flags")
string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
|