aboutsummaryrefslogtreecommitdiff
path: root/portmidi/pm_java/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'portmidi/pm_java/CMakeLists.txt')
-rw-r--r--portmidi/pm_java/CMakeLists.txt56
1 files changed, 56 insertions, 0 deletions
diff --git a/portmidi/pm_java/CMakeLists.txt b/portmidi/pm_java/CMakeLists.txt
new file mode 100644
index 0000000..55a20f4
--- /dev/null
+++ b/portmidi/pm_java/CMakeLists.txt
@@ -0,0 +1,56 @@
1# pm_java/CMakeLists.txt -- builds pmjni
2
3find_package(Java)
4message(STATUS "Java_JAVA_EXECUTABLE is " ${Java_JAVA_EXECUTABLE})
5
6# Build pmjni
7# this CMakeLists.txt is only loaded if BUILD_JAVA_NATIVE_INTERFACE
8# This jni library includes portmidi sources to give just
9# one library for JPortMidi users to manage rather than two.
10if(UNIX)
11 include(FindJNI)
12 # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
13 # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
14 # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
15 # note: user might need to set JAVA_INCLUDE_PATH manually
16 #
17 # this will probably break on BSD and other Unix systems; the fix
18 # depends on whether FindJNI can find Java or not. If yes, then
19 # we should try to rely on automatically set JAVA_INCLUDE_PATH and
20 # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
21 # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
22 # because JAVA_INCLUDE_PATH2 is pretty obscure)
23 set(JAVA_INCLUDE_PATH ${JAVA_INCLUDE_PATH-UNKNOWN}
24 CACHE STRING "where to find Java SDK include directory")
25 # libjvm.so is found relative to JAVA_INCLUDE_PATH:
26 if (HAIKU)
27 set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/haiku)
28 else()
29 set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
30 endif()
31elseif(WIN32)
32 include(FindJNI)
33 # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
34 set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
35
36 set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
37 # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
38 # message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
39endif()
40
41add_library(pmjni SHARED pmjni/pmjni.c)
42target_sources(pmjni PRIVATE ${PM_LIB_PUBLIC_SRC} ${PM_LIB_PRIVATE_SRC})
43message(STATUS "Java paths ${JAVA_INCLUDE_PATHS}")
44# message(STATUS "Java pmjni src: pmjni/pmjni.c ${PM_LIB_SHARED_SRC} "
45# "${PM_LIB_PRIVATE_SRC}")
46target_include_directories(pmjni PUBLIC ${JAVA_INCLUDE_PATHS})
47target_link_libraries(pmjni ${PM_NEEDED_LIBS})
48set_target_properties(pmjni PROPERTIES
49 VERSION ${LIBRARY_VERSION}
50 SOVERSION ${LIBRARY_SOVERSION}
51 LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
52 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
53 ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
54 EXECUTABLE_EXTENSION "jnilib"
55 MACOSX_RPATH ON)
56