diff --git a/.idea/misc.xml b/.idea/misc.xml index 4444df8..2aa360b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + diff --git a/CMakeLists.txt b/CMakeLists.txt index 77313a6..9943890 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,8 @@ project(SchokoVM) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) -find_package(Java 1.8 REQUIRED) +find_package(Java 11.0.11 EXACT REQUIRED COMPONENTS Runtime Development) +find_package(JNI 11.0.11 EXACT REQUIRED) include(UseJava) find_package(libzip) @@ -102,6 +103,31 @@ else () target_link_libraries(SchokoVM zip) endif () + +# +# OpenJDK +# + +file(REAL_PATH ${Java_JAVAC_EXECUTABLE} JDK_HOME) +get_filename_component(JDK_HOME ${JDK_HOME} DIRECTORY) +get_filename_component(JDK_HOME ${JDK_HOME} DIRECTORY) +message(STATUS "jdk: ${JDK_HOME}") + +set(JDK_BIN ${CMAKE_CURRENT_SOURCE_DIR}/jdk/jdk-11.0.11) +if(NOT IS_DIRECTORY ${JDK_BIN}) + message(STATUS "Copying ${JDK_HOME} to ${JDK_BIN}") +# file(COPY ${JDK_HOME} DESTINATION ${JDK_BIN}) + # this renames the target folder: + execute_process(COMMAND cp -r "${JDK_HOME}" "${JDK_BIN}") +endif() + +set(JDK_EXPLODED ${CMAKE_CURRENT_SOURCE_DIR}/jdk/exploded-modules) +if(NOT IS_DIRECTORY ${JDK_EXPLODED}) + message(STATUS "Exploding") + execute_process(COMMAND ${JDK_HOME}/bin/jimage extract --dir "${JDK_EXPLODED}" "${JDK_BIN}/lib/modules") +endif() + + # # Tests # diff --git a/jdk/.gitignore b/jdk/.gitignore index 4752f89..aaee6cf 100644 --- a/jdk/.gitignore +++ b/jdk/.gitignore @@ -1,3 +1,3 @@ /exploded-modules/ /jdk/ -/jdk-11.0.11+9/ +/jdk-11.0.11/ diff --git a/jdk/cleanup.sh b/jdk/cleanup.sh new file mode 100755 index 0000000..4286adb --- /dev/null +++ b/jdk/cleanup.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +# clion doesn't want to delete the symlinks +rm -rf jdk-11.0.11 +rm -rf exploded-modules diff --git a/jdk/download.sh b/jdk/download.sh index 963f766..2117f0b 100755 --- a/jdk/download.sh +++ b/jdk/download.sh @@ -1,18 +1,6 @@ #!/bin/sh - set -e -if [ -d "jdk-11.0.11+9" ]; then - echo "Skipping download of jdk release" -else - ARCHIVE="OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz" - wget "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9/$ARCHIVE" - tar -xf "$ARCHIVE" - rm "$ARCHIVE" - - jimage extract --dir exploded-modules jdk-11.0.11+9/lib/modules -fi - if [ -d "jdk" ]; then echo "Skipping download of jdk sources" else diff --git a/src/zip.hpp b/src/zip.hpp index 0ce4ca1..54aca96 100644 --- a/src/zip.hpp +++ b/src/zip.hpp @@ -2,6 +2,7 @@ #define SCHOKOVM_ZIP_HPP #include +#include #include #include