set(JAR_FILE turbojpeg.jar)
set(MANIFEST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/MANIFEST.MF")

set(JAVA_CLASSNAMES org/libjpegturbo/turbojpeg/TJ
  org/libjpegturbo/turbojpeg/TJCompressor
  org/libjpegturbo/turbojpeg/TJCustomFilter
  org/libjpegturbo/turbojpeg/TJDecompressor
  org/libjpegturbo/turbojpeg/TJException
  org/libjpegturbo/turbojpeg/TJScalingFactor
  org/libjpegturbo/turbojpeg/TJTransform
  org/libjpegturbo/turbojpeg/TJTransformer
  org/libjpegturbo/turbojpeg/YUVImage
  TJUnitTest
  TJExample
  TJBench)

if(MSVC_IDE)
  set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
else()
  set(OBJDIR "${CMAKE_CURRENT_BINARY_DIR}")
endif()

set(TURBOJPEG_DLL_NAME "turbojpeg")
if(MINGW)
  set(TURBOJPEG_DLL_NAME "libturbojpeg")
endif()
configure_file(org/libjpegturbo/turbojpeg/TJLoader.java.in
  "${CMAKE_CURRENT_BINARY_DIR}/org/libjpegturbo/turbojpeg/TJLoader.java")

set(JAVA_SOURCES "")
set(JAVA_CLASSES "")
set(JAVA_CLASSES_FULL "")
foreach(class ${JAVA_CLASSNAMES})
  list(APPEND JAVA_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/${class}.java")
  list(APPEND JAVA_CLASSES "${class}.class")
  list(APPEND JAVA_CLASSES_FULL "${OBJDIR}/${class}.class")
endforeach()

list(APPEND JAVA_SOURCES
  "${CMAKE_CURRENT_BINARY_DIR}/org/libjpegturbo/turbojpeg/TJLoader.java")
list(APPEND JAVA_CLASSES org/libjpegturbo/turbojpeg/TJLoader.class)
list(APPEND JAVA_CLASSES_FULL
  "${OBJDIR}/org/libjpegturbo/turbojpeg/TJLoader.class")

string(REGEX REPLACE " " ";" JAVACFLAGS "${JAVACFLAGS}")
add_custom_command(OUTPUT ${JAVA_CLASSES_FULL} DEPENDS ${JAVA_SOURCES}
  COMMAND "${JAVA_COMPILE}" ARGS ${JAVACFLAGS} -d "${OBJDIR}" ${JAVA_SOURCES}
  VERBATIM)

add_custom_command(OUTPUT "${JAR_FILE}" DEPENDS ${JAVA_CLASSES_FULL}
  "${MANIFEST_FILE}"
  COMMAND "${JAVA_ARCHIVE}" cfm "${JAR_FILE}" "${MANIFEST_FILE}" ${JAVA_CLASSES}
  WORKING_DIRECTORY "${OBJDIR}"
  VERBATIM)

add_custom_target(java ALL DEPENDS "${JAR_FILE}")

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${JAR_FILE}" DESTINATION classes)
