1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4 5# determine the compiler to use for Java programs 6# NOTE, a generator may set CMAKE_Java_COMPILER before 7# loading this file to force a compiler. 8 9if(NOT CMAKE_Java_COMPILER) 10 # prefer the environment variable CC 11 if(NOT $ENV{JAVA_COMPILER} STREQUAL "") 12 get_filename_component(CMAKE_Java_COMPILER_INIT $ENV{JAVA_COMPILER} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT) 13 if(CMAKE_Java_FLAGS_ENV_INIT) 14 set(CMAKE_Java_COMPILER_ARG1 "${CMAKE_Java_FLAGS_ENV_INIT}" CACHE STRING "Arguments to Java compiler") 15 endif() 16 if(NOT EXISTS ${CMAKE_Java_COMPILER_INIT}) 17 message(SEND_ERROR "Could not find compiler set in environment variable JAVA_COMPILER:\n$ENV{JAVA_COMPILER}.") 18 endif() 19 endif() 20 21 if(NOT $ENV{JAVA_RUNTIME} STREQUAL "") 22 get_filename_component(CMAKE_Java_RUNTIME_INIT $ENV{JAVA_RUNTIME} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT) 23 if(NOT EXISTS ${CMAKE_Java_RUNTIME_INIT}) 24 message(SEND_ERROR "Could not find compiler set in environment variable JAVA_RUNTIME:\n$ENV{JAVA_RUNTIME}.") 25 endif() 26 endif() 27 28 if(NOT $ENV{JAVA_ARCHIVE} STREQUAL "") 29 get_filename_component(CMAKE_Java_ARCHIVE_INIT $ENV{JAVA_ARCHIVE} PROGRAM PROGRAM_ARGS CMAKE_Java_FLAGS_ENV_INIT) 30 if(NOT EXISTS ${CMAKE_Java_ARCHIVE_INIT}) 31 message(SEND_ERROR "Could not find compiler set in environment variable JAVA_ARCHIVE:\n$ENV{JAVA_ARCHIVE}.") 32 endif() 33 endif() 34 35 set(Java_BIN_PATH 36 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin" 37 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin" 38 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin" 39 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin" 40 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin" 41 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin" 42 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin" 43 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin" 44 $ENV{JAVA_HOME}/bin 45 /usr/bin 46 /usr/lib/java/bin 47 /usr/share/java/bin 48 /usr/local/bin 49 /usr/local/java/bin 50 /usr/local/java/share/bin 51 /usr/java/j2sdk1.4.2_04 52 /usr/lib/j2sdk1.4-sun/bin 53 /usr/java/j2sdk1.4.2_09/bin 54 /usr/lib/j2sdk1.5-sun/bin 55 /opt/sun-jdk-1.5.0.04/bin 56 /usr/local/jdk-1.7.0/bin 57 /usr/local/jdk-1.6.0/bin 58 ) 59 # if no compiler has been specified yet, then look for one 60 if(CMAKE_Java_COMPILER_INIT) 61 set(CMAKE_Java_COMPILER ${CMAKE_Java_COMPILER_INIT} CACHE PATH "Java Compiler") 62 else() 63 find_program(CMAKE_Java_COMPILER 64 NAMES javac 65 PATHS ${Java_BIN_PATH} 66 ) 67 endif() 68 69 # if no runtime has been specified yet, then look for one 70 if(CMAKE_Java_RUNTIME_INIT) 71 set(CMAKE_Java_RUNTIME ${CMAKE_Java_RUNTIME_INIT} CACHE PATH "Java Compiler") 72 else() 73 find_program(CMAKE_Java_RUNTIME 74 NAMES java 75 PATHS ${Java_BIN_PATH} 76 ) 77 endif() 78 79 # if no archive has been specified yet, then look for one 80 if(CMAKE_Java_ARCHIVE_INIT) 81 set(CMAKE_Java_ARCHIVE ${CMAKE_Java_ARCHIVE_INIT} CACHE PATH "Java Compiler") 82 else() 83 find_program(CMAKE_Java_ARCHIVE 84 NAMES jar 85 PATHS ${Java_BIN_PATH} 86 ) 87 endif() 88endif() 89mark_as_advanced(CMAKE_Java_COMPILER) 90 91# configure variables set in this file for fast reload later on 92configure_file(${CMAKE_ROOT}/Modules/CMakeJavaCompiler.cmake.in 93 ${CMAKE_PLATFORM_INFO_DIR}/CMakeJavaCompiler.cmake @ONLY) 94set(CMAKE_Java_COMPILER_ENV_VAR "JAVA_COMPILER") 95