diff --git a/CMakeLists.txt b/CMakeLists.txt index 67c4739..4fdb357 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,10 @@ if (WIN32 AND (NOT MINGW) AND (NOT CYGWIN)) set(CMAKE_CXX_FLAGS_MINSIZEREL "/MT") endif () -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") -find_package(JNI11) +find_package(Java 11 REQUIRED COMPONENTS Development) +include(${CMAKE_CURRENT_LIST_DIR}/SetJavaHomeFromJavaExecutable.cmake) +find_package(JNI REQUIRED) + include_directories(${JNI_INCLUDE_DIRS}) add_library(memory_agent SHARED diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be62d25..607950a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,10 @@ # Contributing guide for debugger memory agent + +## Prerequisites +To build the project you should have CMake 3.1 or higher installed, and JDK 11 or higher is installed. + ## Building -To build the project you should have Cmake 3.1 or higher installed, and `JDK_11` -environmental variable should be set to jdk 11 or higher. Once you've downloaded the project, -you can build it using the following commands in the root project directory: +Once you've downloaded the project, you can build it using the following commands in the root project directory: ``` cmake . cmake --build . diff --git a/FindJNI11.cmake b/FindJNI11.cmake deleted file mode 100644 index 69b0f13..0000000 --- a/FindJNI11.cmake +++ /dev/null @@ -1,18 +0,0 @@ -# This script rewrites the default FindJNI.cmake script to make -# the search process explicitly depend on the JDK_11 environmental variable -# instead of JAVA_HOME. - -set(JAVA_INCLUDE_PATH $ENV{JDK_11}/include/) - -if (WIN32) - set(JAVA_INCLUDE_PATH2 ${JAVA_INCLUDE_PATH}win32) -elseif(UNIX AND NOT APPLE) - set(JAVA_INCLUDE_PATH2 ${JAVA_INCLUDE_PATH}linux) -elseif(APPLE) - set(JAVA_INCLUDE_PATH2 ${JAVA_INCLUDE_PATH}darwin) -endif() - -set(JNI_INCLUDE_DIRS - ${JAVA_INCLUDE_PATH} - ${JAVA_INCLUDE_PATH2} -) diff --git a/SetJavaHomeFromJavaExecutable.cmake b/SetJavaHomeFromJavaExecutable.cmake new file mode 100644 index 0000000..9f0d06e --- /dev/null +++ b/SetJavaHomeFromJavaExecutable.cmake @@ -0,0 +1,20 @@ +if(NOT Java_JAVA_EXECUTABLE) + message(FATAL_ERROR "java executable not found") +endif() +execute_process(COMMAND "${Java_JAVA_EXECUTABLE}" -XshowSettings:properties -version + RESULT_VARIABLE res + OUTPUT_VARIABLE var + ERROR_VARIABLE var + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) +if(res) + message(FATAL_ERROR "Error executing java -version") +else() + set(_java_version_regex "java\\.home = ([^\n]+)") + if(var MATCHES "${_java_version_regex}") + set(JAVA_HOME "${CMAKE_MATCH_1}") + else() + string(REPLACE "\n" "\n " ver_msg "\n${var}") + message(FATAL_ERROR "Java output not recognized:${ver_msg}\nPlease report.") + endif() +endif()