view JavaSDK/CMakeLists.txt @ 63:1bc05cacb6fc

fix samples
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 14 Aug 2025 18:13:57 +0200
parents cc91717e2354
children
line wrap: on
line source

# SPDX-FileCopyrightText: 2023-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
# SPDX-License-Identifier: GPL-3.0-or-later

# Java plugin for Orthanc
# Copyright (C) 2023-2025 Sebastien Jodogne, ICTEAM UCLouvain, Belgium
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.


cmake_minimum_required(VERSION 3.1...4.0)

project(OrthancJavaSDK)

find_package(Java REQUIRED)
include(UseJava)

set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.8" "-target" "1.8" "-Xdoclint:all/protected")

include(${CMAKE_SOURCE_DIR}/../Resources/Orthanc/CMake/AutoGeneratedCode.cmake)
include(${CMAKE_SOURCE_DIR}/../OrthancSDKVersion.cmake)


#####################################################################
## Auto-generate the wrapper
#####################################################################

set(ORTHANC_CODE_MODEL ${CMAKE_SOURCE_DIR}/../Resources/Orthanc/OrthancPluginCodeModel.json)

if(CMAKE_VERSION VERSION_GREATER "3.11")
  find_package(Python REQUIRED COMPONENTS Interpreter)
  set(PYTHON_EXECUTABLE ${Python_EXECUTABLE})
else()
  include(FindPythonInterp)
  find_package(PythonInterp REQUIRED)
endif()

execute_process(
  COMMAND
  ${PYTHON_EXECUTABLE}
  ${CMAKE_SOURCE_DIR}/../CodeGeneration/JavaCodeGeneration.py
  --sdk ${ORTHANC_SDK}
  --model ${ORTHANC_CODE_MODEL}
  --target ${AUTOGENERATED_DIR}
  )



#####################################################################
## Build the plugin
#####################################################################

set(JAVA_SOURCES
  be/uclouvain/orthanc/Callbacks.java
  be/uclouvain/orthanc/OrthancException.java
  )

foreach(source IN LISTS JAVA_SOURCES)
  configure_file(
    ${source}
    ${AUTOGENERATED_DIR}/${source}
    COPYONLY)
endforeach()

file(GLOB AUTOGENERATED_SOURCES
  ${AUTOGENERATED_DIR}/be/uclouvain/orthanc/*.java
  )

set(JAVADOC_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/OrthancJavaSDKDocumentation")
file(MAKE_DIRECTORY ${JAVADOC_OUTPUT_DIR})

add_jar(OrthancJavaSDK
  ${AUTOGENERATED_SOURCES}
  DEPENDS CreateJavadocDirectory
  )

add_custom_command(TARGET OrthancJavaSDK
  POST_BUILD
  COMMAND ${Java_JAVADOC_EXECUTABLE} -Xdoclint:all ${AUTOGENERATED_SOURCES}
  WORKING_DIRECTORY ${JAVADOC_OUTPUT_DIR}
  COMMENT "Generating SDK documentation with javadoc" VERBATIM
  )

install(
  FILES ${CMAKE_CURRENT_BINARY_DIR}/OrthancJavaSDK.jar
  DESTINATION .
  )