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)