File: CMakeLists.txt

package info (click to toggle)
mame 0.281%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 912,556 kB
  • sloc: cpp: 5,266,015; xml: 2,226,001; ansic: 750,970; sh: 34,449; lisp: 19,643; python: 16,330; makefile: 13,251; java: 8,492; yacc: 8,152; javascript: 7,069; cs: 6,013; asm: 4,786; ada: 1,681; pascal: 1,191; lex: 1,174; perl: 585; ruby: 373
file content (86 lines) | stat: -rw-r--r-- 4,188 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 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)