* turbo/master: (105 commits) makemacpkg.in: Allow universal DMG w/o ARMv8 arch Remove more unnecessary NULL checks before free() Eliminate unnecessary NULL checks before tjFree() Eliminate unnecessary NULL checks before free() simd/arm64/jsimd_neon.S: Fix checkstyle issue tjTransform(): Use instance err. for bad crop spec README.md, package specs: Various tweaks djpeg.c: Fix compiler warning w/o mem. src manager ARMv8 SIMD: Support execute-only memory (XOM) Travis: Use MacPorts instead of Homebrew Huffman enc.: Fix very rare local buffer overrun TurboJPEG: Fix erroneous subsampling detection ChangeLog.md: List CVE IDs for specific fixes tjDecompressToYUV*(): Fix OOB write/double free 64-bit tjbench: Fix signed int overflow/segfault Fix copyright header formatting buglets example.txt: Avoid undefined setjmp() behavior Mac: Support hiding SIMD fct symbols w/ NASM 2.14+ TJBench: Fix output with -componly -quiet Build: Don't require ASM_NASM if !REQUIRE_SIMD ...
89 lines
3.8 KiB
CMake
89 lines
3.8 KiB
CMake
find_package(Java REQUIRED)
|
|
find_package(JNI REQUIRED)
|
|
|
|
# Allow the Java compiler flags to be set using an environment variable
|
|
if(NOT DEFINED CMAKE_JAVA_COMPILE_FLAGS AND DEFINED ENV{JAVAFLAGS})
|
|
set(CMAKE_JAVA_COMPILE_FLAGS $ENV{JAVAFLAGS})
|
|
endif()
|
|
|
|
include(UseJava)
|
|
|
|
set(CMAKE_JAVA_COMPILE_FLAGS "${CMAKE_JAVA_COMPILE_FLAGS} -J-Dfile.encoding=UTF8")
|
|
message(STATUS "CMAKE_JAVA_COMPILE_FLAGS = ${CMAKE_JAVA_COMPILE_FLAGS}")
|
|
string(REGEX REPLACE " " ";" CMAKE_JAVA_COMPILE_FLAGS "${CMAKE_JAVA_COMPILE_FLAGS}")
|
|
|
|
set(JAVAARGS "" CACHE STRING "Additional arguments to pass to java when running unit tests (example: -d32)")
|
|
message(STATUS "JAVAARGS = ${JAVAARGS}")
|
|
|
|
set(JAVA_SOURCES org/libjpegturbo/turbojpeg/TJ.java
|
|
org/libjpegturbo/turbojpeg/TJCompressor.java
|
|
org/libjpegturbo/turbojpeg/TJCustomFilter.java
|
|
org/libjpegturbo/turbojpeg/TJDecompressor.java
|
|
org/libjpegturbo/turbojpeg/TJException.java
|
|
org/libjpegturbo/turbojpeg/TJScalingFactor.java
|
|
org/libjpegturbo/turbojpeg/TJTransform.java
|
|
org/libjpegturbo/turbojpeg/TJTransformer.java
|
|
org/libjpegturbo/turbojpeg/YUVImage.java
|
|
TJUnitTest.java
|
|
TJExample.java
|
|
TJBench.java)
|
|
|
|
set(TURBOJPEG_DLL_NAME "turbojpeg")
|
|
if(MINGW)
|
|
set(TURBOJPEG_DLL_NAME "libturbojpeg")
|
|
endif()
|
|
if(WIN32)
|
|
configure_file(org/libjpegturbo/turbojpeg/TJLoader-win.java.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/org/libjpegturbo/turbojpeg/TJLoader.java)
|
|
else()
|
|
configure_file(org/libjpegturbo/turbojpeg/TJLoader-unix.java.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/org/libjpegturbo/turbojpeg/TJLoader.java)
|
|
endif()
|
|
set(JAVA_SOURCES ${JAVA_SOURCES}
|
|
${CMAKE_CURRENT_BINARY_DIR}/org/libjpegturbo/turbojpeg/TJLoader.java)
|
|
|
|
if(MSYS)
|
|
# UGLY HACK ALERT: If we don't do this, then UseJava.cmake will separate
|
|
# class path members with a semicolon, which is interpreted as a command
|
|
# separator by the MSYS shell.
|
|
set(CMAKE_HOST_SYSTEM_NAME_BAK ${CMAKE_HOST_SYSTEM_NAME})
|
|
set(CMAKE_HOST_SYSTEM_NAME "MSYS")
|
|
endif()
|
|
add_jar(turbojpeg-java ${JAVA_SOURCES} OUTPUT_NAME turbojpeg
|
|
ENTRY_POINT TJExample)
|
|
if(MSYS)
|
|
set(CMAKE_HOST_SYSTEM_NAME ${CMAKE_HOST_SYSTEM_NAME_BAK})
|
|
endif()
|
|
|
|
add_custom_target(javadoc COMMAND
|
|
javadoc -notimestamp -d ${CMAKE_CURRENT_SOURCE_DIR}/doc -sourcepath ${CMAKE_CURRENT_SOURCE_DIR} org.libjpegturbo.turbojpeg)
|
|
set(JAVACLASSPATH ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/turbojpeg-java.dir)
|
|
if(Java_VERSION_MAJOR GREATER 9)
|
|
add_custom_target(javah
|
|
COMMAND javac -h ${CMAKE_CURRENT_SOURCE_DIR} -classpath ${JAVACLASSPATH}
|
|
-d ${CMAKE_CURRENT_BINARY_DIR}/__unused
|
|
${CMAKE_CURRENT_SOURCE_DIR}/org/libjpegturbo/turbojpeg/TJ.java
|
|
${CMAKE_CURRENT_SOURCE_DIR}/org/libjpegturbo/turbojpeg/TJCompressor.java
|
|
${CMAKE_CURRENT_SOURCE_DIR}/org/libjpegturbo/turbojpeg/TJDecompressor.java
|
|
${CMAKE_CURRENT_SOURCE_DIR}/org/libjpegturbo/turbojpeg/TJTransformer.java)
|
|
else()
|
|
add_custom_target(javah
|
|
COMMAND javah -d ${CMAKE_CURRENT_SOURCE_DIR} -classpath ${JAVACLASSPATH} org.libjpegturbo.turbojpeg.TJ
|
|
COMMAND javah -d ${CMAKE_CURRENT_SOURCE_DIR} -classpath ${JAVACLASSPATH} org.libjpegturbo.turbojpeg.TJCompressor
|
|
COMMAND javah -d ${CMAKE_CURRENT_SOURCE_DIR} -classpath ${JAVACLASSPATH} org.libjpegturbo.turbojpeg.TJDecompressor
|
|
COMMAND javah -d ${CMAKE_CURRENT_SOURCE_DIR} -classpath ${JAVACLASSPATH} org.libjpegturbo.turbojpeg.TJTransformer)
|
|
endif()
|
|
|
|
if(NOT DEFINED CMAKE_INSTALL_DEFAULT_JAVADIR)
|
|
set(CMAKE_INSTALL_DEFAULT_JAVADIR "<CMAKE_INSTALL_DATAROOTDIR>/java")
|
|
endif()
|
|
GNUInstallDirs_set_install_dir(JAVADIR
|
|
"The directory into which Java classes should be installed")
|
|
GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_JAVADIR
|
|
CMAKE_INSTALL_JAVADIR)
|
|
set(CMAKE_INSTALL_JAVADIR ${CMAKE_INSTALL_JAVADIR} PARENT_SCOPE)
|
|
set(CMAKE_INSTALL_FULL_JAVADIR ${CMAKE_INSTALL_FULL_JAVADIR} PARENT_SCOPE)
|
|
report_directory(JAVADIR)
|
|
install_jar(turbojpeg-java ${CMAKE_INSTALL_JAVADIR})
|
|
mark_as_advanced(CLEAR CMAKE_INSTALL_JAVADIR)
|