mirror of https://gitee.com/openkylin/gdcm.git
86 lines
2.8 KiB
CMake
86 lines
2.8 KiB
CMake
# Copyright (c) 2006-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
|
#
|
|
# Redistribution and use is allowed according to the terms of the New
|
|
# BSD license.
|
|
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
#
|
|
|
|
# This module will populate the following cmake variables:
|
|
# JavaProp_JAVA_LIBRARY_PATH
|
|
# JavaProp_OS_ARCH
|
|
# JavaProp_OS_NAME
|
|
# JavaProp_JAVA_HOME
|
|
# JavaProp_SUN_BOOT_LIBRARY_PATH
|
|
# JavaProp_PATH_SEPARATOR
|
|
# JavaProp_SUN_ARCH_DATA_MODEL
|
|
|
|
# I can't get FindJNI.cmake to work, so instead re-write one more robust
|
|
# which only requires javac and java being in the PATH
|
|
|
|
get_filename_component(current_list_path ${CMAKE_CURRENT_LIST_FILE} PATH)
|
|
find_package(Java 1.5 REQUIRED)
|
|
|
|
# need to re-run every time the setting for Java has changed:
|
|
# There is technically one caveat still, when one only modify
|
|
# Java_JAVA_EXECUTABLE from cmake-gui, everything is re-run properly except the
|
|
# FIND_PATH for jar and javac
|
|
if(JavaProp_JAVA_HOME)
|
|
get_filename_component(javarealpath
|
|
${Java_JAVA_EXECUTABLE}
|
|
REALPATH
|
|
)
|
|
get_filename_component(javahomesubdir
|
|
${JavaProp_JAVA_HOME}
|
|
PATH
|
|
)
|
|
string(REGEX MATCH "${javahomesubdir}"
|
|
outputvar
|
|
"${javarealpath}"
|
|
)
|
|
if(NOT outputvar)
|
|
message(STATUS "Need to re-execute JavaProp: ${outputvar}")
|
|
file(REMOVE
|
|
${CMAKE_BINARY_DIR}/GetSystemProperty.class
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# For some reason I have to use two execute_process instead of a chained one...
|
|
if(${current_list_path}/GetSystemProperty.java IS_NEWER_THAN ${CMAKE_BINARY_DIR}/GetSystemProperty.class)
|
|
#message("${current_list_path}/GetSystemProperty.java")
|
|
#message("${CMAKE_CURRENT_BINARY_DIR}/GetSystemProperty.class")
|
|
execute_process(
|
|
COMMAND ${Java_JAVAC_EXECUTABLE} -source ${GDCM_JAVA_SOURCE_VERSION} -target ${GDCM_JAVA_TARGET_VERSION}
|
|
${current_list_path}/GetSystemProperty.java -d ${CMAKE_BINARY_DIR}
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
)
|
|
|
|
# populate the following list of java properties into CMake properties:
|
|
set(JAVA_PROPERTY_LIST
|
|
java.library.path
|
|
os.arch
|
|
os.name
|
|
java.home
|
|
sun.boot.library.path
|
|
path.separator # : / ;
|
|
sun.arch.data.model # 32 / 64
|
|
)
|
|
foreach(property ${JAVA_PROPERTY_LIST})
|
|
string(TOUPPER ${property} property_upper)
|
|
string(REPLACE "." "_" property_cmake_name ${property_upper})
|
|
execute_process(
|
|
COMMAND ${Java_JAVA_EXECUTABLE} GetSystemProperty ${property}
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
OUTPUT_VARIABLE ${property_cmake_name}
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
#message(STATUS "${property} : ${property_cmake_name} : ${${property_cmake_name}}")
|
|
set(JavaProp_${property_cmake_name} ${${property_cmake_name}}
|
|
CACHE STRING "Java Prop Value for: ${property}" FORCE
|
|
)
|
|
mark_as_advanced(
|
|
JavaProp_${property_cmake_name}
|
|
)
|
|
endforeach()
|
|
endif()
|