Mercurial > octave-nkf
comparison configure.ac @ 15836:48a75e6884ec
Fix JAVA detection for MSVC and support white space in Java path.
* configure.ac (JAVA_HOME, JAVA_PATH, java_version): Quote java-related paths
and commands and consider backslash in path manipulations. Also detect the
case of MSYS shell (mingw canonical host) with MSVC. In MSYS shell, convert
JAVA_HOME into MSYS path (no backslash or colon).
* scripts/java/modules.mk: Double-quote usage of $(JAVAC) and $(JAR).
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Sun, 23 Dec 2012 03:16:08 +0000 |
parents | f366e9948259 |
children | 9a210f7fe62e |
comparison
equal
deleted
inserted
replaced
15835:609863321972 | 15836:48a75e6884ec |
---|---|
2242 AC_MSG_WARN([Auto-detection will proceed but is unreliable.]) | 2242 AC_MSG_WARN([Auto-detection will proceed but is unreliable.]) |
2243 fi | 2243 fi |
2244 | 2244 |
2245 ## Search for a viable Java executable. | 2245 ## Search for a viable Java executable. |
2246 if test -z "$JAVA_HOME"; then | 2246 if test -z "$JAVA_HOME"; then |
2247 JAVA_PATH=$PATH | 2247 JAVA_PATH="$PATH" |
2248 else | 2248 else |
2249 JAVA_PATH=${JAVA_HOME}$PATH_SEPARATOR${JAVA_HOME}/jre/bin$PATH_SEPARATOR${JAVA_HOME}/bin$PATH_SEPARATOR${JAVA_HOME}/../bin$PATH_SEPARATOR${PATH} | 2249 JAVA_PATH="${JAVA_HOME}$PATH_SEPARATOR${JAVA_HOME}/jre/bin$PATH_SEPARATOR${JAVA_HOME}/bin$PATH_SEPARATOR${JAVA_HOME}/../bin$PATH_SEPARATOR${PATH}" |
2250 fi | 2250 fi |
2251 AC_PATH_PROG(JAVA, java, [], [$JAVA_PATH]) | 2251 AC_PATH_PROG(JAVA, java, [], [$JAVA_PATH]) |
2252 | 2252 |
2253 if test -z "$JAVA"; then | 2253 if test -z "$JAVA"; then |
2254 AC_MSG_WARN([No Java executable found. Octave will not be able to call Java methods.]) | 2254 AC_MSG_WARN([No Java executable found. Octave will not be able to call Java methods.]) |
2255 break | 2255 break |
2256 fi | 2256 fi |
2257 | 2257 |
2258 if test -z "$JAVA_HOME"; then | 2258 if test -z "$JAVA_HOME"; then |
2259 ## Find JAVA_HOME for JRE by running java and querying properties. | 2259 ## Find JAVA_HOME for JRE by running java and querying properties. |
2260 JAVA_TMP_HOME=`$JAVA -classpath ${srcdir}/build-aux OctJavaQry JAVA_HOME` | 2260 JAVA_TMP_HOME="`\"$JAVA\" -classpath ${srcdir}/build-aux OctJavaQry JAVA_HOME`" |
2261 ## Strip directory back to top-level installation dir (JAVA_HOME for JDK). | 2261 ## Strip directory back to top-level installation dir (JAVA_HOME for JDK). |
2262 JAVA_HOME=`echo $JAVA_TMP_HOME | sed -e 's|/bin/\?$||' | sed -e 's|/jre/\?$||'` | 2262 JAVA_HOME="`echo $JAVA_TMP_HOME | sed -e 's|[[/\\]]bin[[/\\]]\?$||' | sed -e 's|[[/\\]]jre[[/\\]]\?$||'`" |
2263 fi | 2263 fi |
2264 | |
2265 case $canonical_host_type in | |
2266 *-mingw* | *-msdosmsvc*) | |
2267 ## Under Win32 platform, we want JAVA_HOME to be in MSYS format, that is without | |
2268 ## colon and backslashes, as it is also used as path separator. Use quoted paths | |
2269 ## as Java may be installed in a path with whitespaces (e.g. C:\Program Files\Java\...). | |
2270 if test -n "$JAVA_HOME"; then | |
2271 JAVA_HOME="`cd \"$JAVA_HOME\" && pwd`" | |
2272 ## Maybe this will be useful in the future, as native Java won't probably | |
2273 ## understand MSYS paths. | |
2274 JAVA_HOME_NATIVE="`cd \"$JAVA_HOME\" && pwd -W`" | |
2275 fi | |
2276 ;; | |
2277 *) | |
2278 JAVA_HOME_NATIVE="$JAVA_HOME" | |
2279 ;; | |
2280 esac | |
2264 | 2281 |
2265 ## Amend search path for JAVAC and JAR. | 2282 ## Amend search path for JAVAC and JAR. |
2266 if test -z JAVA_HOME; then | 2283 if test -z "$JAVA_HOME"; then |
2267 JAVA_PATH=$PATH | 2284 JAVA_PATH="$PATH" |
2268 else | 2285 else |
2269 JAVA_PATH=${JAVA_HOME}$PATH_SEPARATOR${JAVA_HOME}/bin$PATH_SEPARATOR${JAVA_HOME}/../bin$PATH_SEPARATOR${PATH} | 2286 JAVA_PATH="${JAVA_HOME}$PATH_SEPARATOR${JAVA_HOME}/bin$PATH_SEPARATOR${JAVA_HOME}/../bin$PATH_SEPARATOR${PATH}" |
2270 fi | 2287 fi |
2271 | 2288 |
2272 AC_PATH_PROG(JAVAC, javac, [], [$JAVA_PATH]) | 2289 AC_PATH_PROG(JAVAC, javac, [], [$JAVA_PATH]) |
2273 AC_PATH_PROG(JAR, jar, [], [$JAVA_PATH]) | 2290 AC_PATH_PROG(JAR, jar, [], [$JAVA_PATH]) |
2274 | 2291 |
2277 break | 2294 break |
2278 fi | 2295 fi |
2279 | 2296 |
2280 ## Check Java version is recent enough. | 2297 ## Check Java version is recent enough. |
2281 AC_MSG_CHECKING([for Java version]) | 2298 AC_MSG_CHECKING([for Java version]) |
2282 java_version=[`$JAVA -version 2>&1 | sed -n -e 's/^java version[^0-9"]*"\([^"]*\)"/\1/p'`] | 2299 java_version=[`$"JAVA" -version 2>&1 | sed -n -e 's/^java version[^0-9"]*"\([^"]*\)"/\1/p'`] |
2283 AC_MSG_RESULT([$java_version]) | 2300 AC_MSG_RESULT([$java_version]) |
2284 java_major=[`echo $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\1/'`] | 2301 java_major=[`echo $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\1/'`] |
2285 java_minor=[`echo $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\2/'`] | 2302 java_minor=[`echo $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\2/'`] |
2286 if test $java_major -ge 1 && test $java_minor -ge 5; then | 2303 if test $java_major -ge 1 && test $java_minor -ge 5; then |
2287 : # Version is ok. Do nothing. | 2304 : # Version is ok. Do nothing. |
2288 else | 2305 else |
2289 AC_MSG_WARN([Java version is too old (< 1.5). Octave will not be able to call Java methods.]) | 2306 AC_MSG_WARN([Java version is too old (< 1.5). Octave will not be able to call Java methods.]) |
2290 break | 2307 break |
2291 fi | 2308 fi |
2292 | 2309 |
2293 ## At this point Win32 systems have enough configuration data. | 2310 ## At this point Win32/MSVC systems have enough configuration data. We assume |
2311 ## that all appropriate variables (e.g. INCLUDE and LIB) have already the required | |
2312 ## paths to compile and link against JDK. | |
2294 case $canonical_host_type in | 2313 case $canonical_host_type in |
2295 *-msdosmsvc*) | 2314 *-msdosmsvc*) |
2296 build_java=true | 2315 build_java=true |
2297 JAVA_LIBS=-ladvapi32 | 2316 JAVA_LIBS=-ladvapi32 |
2298 AC_DEFINE(HAVE_JAVA, 1, | 2317 AC_DEFINE(HAVE_JAVA, 1, |
2299 [Define to 1 if Java is available and is at least version 1.5]) | 2318 [Define to 1 if Java is available and is at least version 1.5]) |
2300 break | 2319 break |
2320 ;; | |
2321 *-mingw*) | |
2322 if test "$have_msvc" = "yes"; then | |
2323 build_java=true | |
2324 JAVA_LIBS=-ladvapi32 | |
2325 AC_DEFINE(HAVE_JAVA, 1, | |
2326 [Define to 1 if Java is available and is at least version 1.5]) | |
2327 break | |
2328 fi | |
2301 ;; | 2329 ;; |
2302 esac | 2330 esac |
2303 | 2331 |
2304 ## Determine which library file name to search for. | 2332 ## Determine which library file name to search for. |
2305 case $canonical_host_type in | 2333 case $canonical_host_type in |