Skip to content

Commit 90e3b1c

Browse files
Feature: Java bindings for libktx (KhronosGroup#481)
Specify KTX_FEATURE_JNI to enable building of libktx_jni and the corresponding Java wrapper. Co-authored-by: Mark Callow <2244683+MarkCallow@users.noreply.github.com>
1 parent 8ec072d commit 90e3b1c

2 files changed

Lines changed: 41 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ option( KTX_FEATURE_DOC "Create KTX documentation" OFF )
3535
option( KTX_FEATURE_LOADTEST_APPS "Create load tests apps that load and display various KTX textures" OFF )
3636
option( KTX_FEATURE_STATIC_LIBRARY "Create static libraries (shared otherwise)" ${LIB_TYPE_DEFAULT} )
3737
option( KTX_FEATURE_TESTS "Create unit tests" ON )
38+
option( KTX_FEATURE_JNI "Create Java bindings for libktx" OFF )
3839

3940
set_target_processor_type(CPU_ARCHITECTURE)
4041
if(CPU_ARCHITECTURE STREQUAL x86_64 OR CPU_ARCHITECTURE STREQUAL x86)
@@ -883,3 +884,5 @@ endif()
883884
# endif()
884885

885886
include(CPack)
887+
888+
include(cmake/jni.cmake)

cmake/jni.cmake

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Copyright (c) 2021, Shukant Pal and Contributors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if (KTX_FEATURE_JNI)
5+
if (DEFINED ENV{JAVA_HOME})
6+
include_directories($ENV{JAVA_HOME}/include)
7+
8+
if (APPLE)
9+
include_directories($ENV{JAVA_HOME}/include/darwin)
10+
elseif(WIN32)
11+
include_directories($ENV{JAVA_HOME}/include/win32)
12+
else()
13+
include_directories($ENV{JAVA_HOME}/include/linux)
14+
endif()
15+
16+
add_library(ktx-jni SHARED
17+
interface/java_binding/src/main/cpp/KtxTexture.cpp
18+
interface/java_binding/src/main/cpp/KtxTexture1.cpp
19+
interface/java_binding/src/main/cpp/KtxTexture2.cpp
20+
interface/java_binding/src/main/cpp/libktx-jni.cpp
21+
)
22+
23+
target_include_directories(ktx-jni PRIVATE include)
24+
25+
target_link_libraries(ktx-jni ktx)
26+
27+
if(APPLE)
28+
set_target_properties(ktx-jni PROPERTIES
29+
XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "YES"
30+
INSTALL_RPATH "@executable_path;/usr/local/lib"
31+
)
32+
endif()
33+
34+
install(TARGETS ktx-jni LIBRARY)
35+
else()
36+
message(FATAL_ERROR "JAVA_HOME is not set with KTX_FEATURE_JNI enabled! Turn it off to skip this.")
37+
endif()
38+
endif()

0 commit comments

Comments
 (0)