mirror of
https://github.com/holub/mame
synced 2025-06-01 10:31:48 +03:00
87 lines
4.1 KiB
CMake
87 lines
4.1 KiB
CMake
# pm_java/CMakeLists.txt -- builds pmjni and pmdefaults program
|
|
|
|
find_package(Java)
|
|
message(STATUS "Java_JAVA_EXECUTABLE is " ${Java_JAVA_EXECUTABLE})
|
|
|
|
if(BUILD_PMDEFAULTS)
|
|
# Since pmdefaults and pmdefaults.bat are in the source tree and look
|
|
# for libpmjni in the same tree, out-of-source build will not create
|
|
# a working pmdefaults (without more work):
|
|
if(NOT (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}))
|
|
message(WARNING "PmDefaults only works when run in the pm_java/pmdefaults directory after an in-source build. This is an out-of-source build, so [probably] libpmjni will be built out-of-source, pmdefaults.jar will be built in-source, and the pmdefaults[.bat] script remains in-source. Rebuild in-source to use PmDefaults or adjust the file locations and scripts to suit yourself.")
|
|
endif()
|
|
|
|
set(JPORTMIDICLASS JPortMidi.class JPortMidiException.class
|
|
JPortMidiApi.class)
|
|
set(PMDEFAULTSCLASS PmDefaultsFrame.class PmDefaults.class)
|
|
prepend_path(JPORTMIDIPATH jportmidi/ ${JPORTMIDICLASS})
|
|
prepend_path(PMDEFAULTSPATH pmdefaults/ ${PMDEFAULTSCLASS})
|
|
set(PMDEFAULTS_ALL ${JPORTMIDIPATH} ${PMDEFAULTSPATH})
|
|
|
|
project(pmdefaults NONE)
|
|
include(UseJava)
|
|
add_jar(pmdefaults
|
|
SOURCES pmdefaults/PmDefaults.java pmdefaults/PmDefaultsFrame.java
|
|
jportmidi/JPortMidi.java jportmidi/JPortMidiApi.java
|
|
jportmidi/JPortMidiException.java
|
|
RESOURCES NAMESPACE "." pmdefaults/portmusic_logo.png
|
|
MANIFEST pmdefaults/manifest.txt
|
|
OUTPUT_DIR pmdefaults)
|
|
if(WIN32)
|
|
set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
|
|
endif()
|
|
add_dependencies(pmdefaults pmjni)
|
|
endif(BUILD_PMDEFAULTS)
|
|
|
|
# Build pmjni
|
|
# this CMakeLists.txt is only loaded if BUILD_JAVA_NATIVE_INTERFACE
|
|
# This jni library includes portmidi sources to give just
|
|
# one library for JPortMidi users to manage rather than two.
|
|
if(UNIX)
|
|
include(FindJNI)
|
|
# message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
|
|
# message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
|
|
# note: should use JAVA_JVM_LIB_PATH, but it is not set properly
|
|
# note: user might need to set JAVA_INCLUDE_PATH manually
|
|
#
|
|
# this will probably break on BSD and other Unix systems; the fix
|
|
# depends on whether FindJNI can find Java or not. If yes, then
|
|
# we should try to rely on automatically set JAVA_INCLUDE_PATH and
|
|
# JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
|
|
# and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
|
|
# because JAVA_INCLUDE_PATH2 is pretty obscure)
|
|
set(JAVA_INCLUDE_PATH ${JAVA_INCLUDE_PATH-UNKNOWN}
|
|
CACHE STRING "where to find Java SDK include directory")
|
|
# libjvm.so is found relative to JAVA_INCLUDE_PATH:
|
|
if (HAIKU)
|
|
set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/haiku)
|
|
else()
|
|
set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
|
|
endif()
|
|
elseif(WIN32)
|
|
include(FindJNI)
|
|
# note: should use JAVA_JVM_LIB_PATH, but it is not set properly
|
|
set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
|
|
|
|
set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
|
|
# message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
|
|
# message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
|
|
endif()
|
|
|
|
add_library(pmjni SHARED pmjni/pmjni.c)
|
|
target_sources(pmjni PRIVATE ${PM_LIB_PUBLIC_SRC} ${PM_LIB_PRIVATE_SRC})
|
|
message(STATUS "Java paths ${JAVA_INCLUDE_PATHS}")
|
|
# message(STATUS "Java pmjni src: pmjni/pmjni.c ${PM_LIB_SHARED_SRC} "
|
|
# "${PM_LIB_PRIVATE_SRC}")
|
|
target_include_directories(pmjni PUBLIC ${JAVA_INCLUDE_PATHS})
|
|
target_link_libraries(pmjni ${PM_NEEDED_LIBS})
|
|
set_target_properties(pmjni PROPERTIES
|
|
VERSION ${LIBRARY_VERSION}
|
|
SOVERSION ${LIBRARY_SOVERSION}
|
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
EXECUTABLE_EXTENSION "jnilib"
|
|
MACOSX_RPATH ON)
|
|
|