diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5f071b0b5..5c613a581 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -198,6 +198,10 @@ jobs: choco install doxygen.install -y > $null Invoke-WebRequest -UserAgent "Wget" "https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.2.1/swigwin-4.2.1.zip/download" -OutFile swig.zip tar xf swig.zip + - uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' - uses: actions/setup-python@v5 if: matrix.platform != 'arm64' with: diff --git a/CMakeLists.txt b/CMakeLists.txt index 81d820414..69fef3a9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,7 @@ else() endif() find_package(SWIG) if(SWIG_FOUND) + find_package(Java COMPONENTS Development) find_package(JNI) find_package(Python3 COMPONENTS Development) if((WIN32 OR APPLE) AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.24") diff --git a/debian/libdigidocpp-java.install b/debian/libdigidocpp-java.install index 956814a87..37c88db1c 100644 --- a/debian/libdigidocpp-java.install +++ b/debian/libdigidocpp-java.install @@ -1,2 +1,3 @@ usr/include/ee/ria/libdigidocpp/ usr/lib/*/libdigidoc_java.so +usr/share/*/*.jar \ No newline at end of file diff --git a/examples/java/build.gradle b/examples/java/build.gradle index 75984e600..603ba3c9e 100755 --- a/examples/java/build.gradle +++ b/examples/java/build.gradle @@ -2,7 +2,6 @@ plugins { id 'java' } group 'ee.ria' -sourceSets.main.java.srcDirs += ['/Library/libdigidocpp/include', '/usr/include'] java { targetCompatibility JavaVersion.VERSION_17 sourceCompatibility JavaVersion.VERSION_17 @@ -15,3 +14,9 @@ jar { attributes 'Main-Class': 'ee.ria.libdigidocpp.libdigidocpp' } } +def digidocppJarPath = file('/usr/share/digidocpp/digidocpp.jar').exists() ? + '/usr/share/digidocpp/digidocpp.jar' : + '/Library/Java/Extensions/digidocpp.jar' +dependencies { + implementation files(digidocppJarPath) +} \ No newline at end of file diff --git a/libdigidocpp.wxs b/libdigidocpp.wxs index 2367ec0d4..918195bd7 100644 --- a/libdigidocpp.wxs +++ b/libdigidocpp.wxs @@ -63,6 +63,7 @@ + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3dc2a7a09..1079b079a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -183,6 +183,23 @@ if(SWIG_FOUND) if(WIN32) install(FILES $ DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL) endif() + if(Java_Development_FOUND) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/glob_java_files.cmake " + file(GLOB_RECURSE JAVA_COMPILE_FILELISTS \${JAVA_DIR}/*.java) + file(WRITE \${CMAKE_CURRENT_BINARY_DIR}/java_file_list \"\") + foreach(JAVA_FILE \${JAVA_COMPILE_FILELISTS}) + file(APPEND \${CMAKE_CURRENT_BINARY_DIR}/java_file_list \"\${JAVA_FILE}\n\") + endforeach() + ") + add_custom_command(TARGET digidoc_java POST_BUILD + COMMAND ${CMAKE_COMMAND} -D JAVA_DIR=${CMAKE_CURRENT_BINARY_DIR}/java -P ${CMAKE_CURRENT_BINARY_DIR}/glob_java_files.cmake + BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/java_file_list + ) + include(UseJava) + set(CMAKE_JAVA_COMPILE_FLAGS --release 11) + add_jar(digidocpp_jar SOURCES @${CMAKE_CURRENT_BINARY_DIR}/java_file_list OUTPUT_NAME digidocpp) + install_jar(digidocpp_jar DESTINATION $,/Library/Java/Extensions,${CMAKE_INSTALL_DATADIR}/digidocpp>) + endif() endif() if(Python3_FOUND) set(CMAKE_SWIG_FLAGS -py3)