diff options
Diffstat (limited to 'portmidi/pm_java/CMakeLists.txt')
| -rw-r--r-- | portmidi/pm_java/CMakeLists.txt | 56 |
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 | |||
| 3 | find_package(Java) | ||
| 4 | message(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. | ||
| 10 | if(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() | ||
| 31 | elseif(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}) | ||
| 39 | endif() | ||
| 40 | |||
| 41 | add_library(pmjni SHARED pmjni/pmjni.c) | ||
| 42 | target_sources(pmjni PRIVATE ${PM_LIB_PUBLIC_SRC} ${PM_LIB_PRIVATE_SRC}) | ||
| 43 | message(STATUS "Java paths ${JAVA_INCLUDE_PATHS}") | ||
| 44 | # message(STATUS "Java pmjni src: pmjni/pmjni.c ${PM_LIB_SHARED_SRC} " | ||
| 45 | # "${PM_LIB_PRIVATE_SRC}") | ||
| 46 | target_include_directories(pmjni PUBLIC ${JAVA_INCLUDE_PATHS}) | ||
| 47 | target_link_libraries(pmjni ${PM_NEEDED_LIBS}) | ||
| 48 | set_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 | |||
