~ubuntu-branches/ubuntu/trusty/portmidi/trusty

« back to all changes in this revision

Viewing changes to pm_dylib/CMakeLists.txt

  • Committer: Bazaar Package Importer
  • Author(s): Daniel T Chen
  • Date: 2010-02-14 17:30:52 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20100214173052-uraknpxk6m8ogzf8
Tags: 1:200-0ubuntu1
* New upstream release
* debian/patches/: Refresh/rediff

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# pm_dylib
 
2
 
 
3
# set the build directory for libraries to be in portmidi, not in 
 
4
#    portmidi/pm_dylib
 
5
if(APPLE OR WIN32)
 
6
  # set the build directory for .dylib libraries
 
7
  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
 
8
  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
 
9
  # the "archive" output directory says where to put portmidi.lib, the
 
10
  # static part of the lib/dll pair:
 
11
  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
 
12
 
 
13
  # the first time CMake configures, save off CMake's built-in flags
 
14
  if(NOT DEFAULT_DEBUG_FLAGS)
 
15
    set(DEFAULT_DEBUG_FLAGS ${CMAKE_C_FLAGS_DEBUG} CACHE 
 
16
        STRING "CMake's default debug flags" FORCE)
 
17
    set(DEFAULT_RELEASE_FLAGS ${CMAKE_C_FLAGS_RELEASE} CACHE 
 
18
        STRING "CMake's default release flags" FORCE)
 
19
  else(NOT DEFAULT_DEBUG_FLAGS)
 
20
    message(STATUS "DEFAULT_DEBUG_FLAGS not nil: " ${DEFAULT_DEBUG_FLAGS})
 
21
  endif(NOT DEFAULT_DEBUG_FLAGS)
 
22
else(APPLE OR WIN32)
 
23
  set(LINUX_FLAGS "-DPMALSA")
 
24
endif(APPLE OR WIN32)
 
25
 
 
26
macro(prepend_path RESULT PATH)
 
27
  set(${RESULT})
 
28
  foreach(FILE ${ARGN})
 
29
    list(APPEND ${RESULT} "${PATH}${FILE}")
 
30
  endforeach(FILE)
 
31
endmacro(prepend_path)
 
32
 
 
33
set(CMAKE_C_FLAGS_DEBUG 
 
34
    "${DEFAULT_DEBUG_FLAGS} -DPM_CHECK_ERRORS=1 -DDEBUG ${LINUX_FLAGS}"
 
35
    CACHE STRING "enable extra checks for debugging" FORCE)
 
36
 
 
37
set(CMAKE_C_FLAGS_RELEASE "${DEFAULT_RELEASE_FLAGS} ${LINUX_FLAGS}"
 
38
    CACHE STRING "flags for release version" FORCE)
 
39
 
 
40
# first include the appropriate system-dependent file:
 
41
if(UNIX)
 
42
  # add the -g switch for Linux and Mac OS X (not used in Win32)
 
43
  set (CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}" 
 
44
       CACHE STRING "enable extra checks for debugging" FORCE)
 
45
  if(APPLE)
 
46
    set(MACSRC pmmacosxcm pmmac readbinaryplist finddefault)
 
47
    prepend_path(LIBSRC ../pm_mac/ ${MACSRC})
 
48
    list(APPEND LIBSRC ../porttime/ptmacosx_mach)
 
49
 
 
50
    include_directories(${CMAKE_OSX_SYSROOT}/Developer/Headers/FlatCarbon)
 
51
    set(FRAMEWORK_PATH ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks)
 
52
    set(COREAUDIO_LIB "${FRAMEWORK_PATH}/CoreAudio.framework")
 
53
    set(COREFOUNDATION_LIB "${FRAMEWORK_PATH}/CoreFoundation.framework")
 
54
    set(COREMIDI_LIB "${FRAMEWORK_PATH}/CoreMIDI.framework")
 
55
    set(CORESERVICES_LIB "${FRAMEWORK_PATH}/CoreServices.framework")
 
56
    set(PM_NEEDED_LIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB}
 
57
                             ${COREMIDI_LIB} ${CORESERVICES_LIB}
 
58
        CACHE INTERNAL "")
 
59
 
 
60
    set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
 
61
    set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
 
62
    set(INSTALL_NAME_DIR "/usr/local/lib")
 
63
    message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
 
64
  else(APPLE)
 
65
    # LINUX settings...
 
66
    include(FindJNI)
 
67
    # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
 
68
    # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
 
69
    # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
 
70
    # note: user might need to set JAVA_INCLUDE_PATH manually
 
71
    #
 
72
    # this will probably break on BSD and other Unix systems; the fix
 
73
    # depends on whether FindJNI can find Java or not. If yes, then
 
74
    # we should try to rely on automatically set JAVA_INCLUDE_PATH and
 
75
    # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
 
76
    # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
 
77
    # because JAVA_INCLUDE_PATH2 is pretty obscure)
 
78
    set(JAVA_INCLUDE_PATH  ${JAVA_INCLUDE_PATH-UNKNOWN}
 
79
        CACHE STRING "where to find Java SDK include directory")
 
80
    set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
 
81
    # libjvm.so is found relative to JAVA_INCLUDE_PATH:
 
82
    set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
 
83
 
 
84
    set(LINUXSRC pmlinuxalsa pmlinux finddefault)
 
85
    prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
 
86
    list(APPEND LIBSRC ../porttime/ptlinux)
 
87
 
 
88
    set(PM_NEEDED_LIBS pthread asound)
 
89
  endif(APPLE)
 
90
else(UNIX)
 
91
  if(WIN32)
 
92
    # /MDd is multithread debug DLL, /MTd is multithread debug
 
93
    # /MD is multithread DLL, /MT is multithread 
 
94
    
 
95
    include(FindJNI)
 
96
    # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
 
97
    set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
 
98
 
 
99
    set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
 
100
    # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
 
101
 
 
102
    set(WINSRC pmwin pmwinmm)
 
103
    prepend_path(LIBSRC ../pm_win/ ${WINSRC})
 
104
    list(APPEND LIBSRC ../porttime/ptwinmm)
 
105
    set(PM_NEEDED_LIBS winmm.lib)
 
106
    # message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
 
107
  endif(WIN32)
 
108
endif(UNIX)
 
109
set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVAVM_LIB})
 
110
 
 
111
# this completes the list of library sources by adding shared code
 
112
set(SHARED_FILES pmutil portmidi)
 
113
prepend_path(SHARED_PATHS ../pm_common/ ${SHARED_FILES})
 
114
list(APPEND LIBSRC ${SHARED_PATHS})
 
115
 
 
116
add_library(portmidi-dynamic SHARED ${LIBSRC})
 
117
set_target_properties(portmidi-dynamic PROPERTIES OUTPUT_NAME "portmidi")
 
118
target_link_libraries(portmidi-dynamic ${PM_NEEDED_LIBS})
 
119
 
 
120
# install the libraries (Linux and Mac OS X command line)
 
121
if(UNIX)
 
122
  INSTALL(TARGETS portmidi-dynamic
 
123
    LIBRARY DESTINATION /usr/local/lib
 
124
    ARCHIVE DESTINATION /usr/local/lib)
 
125
  INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h
 
126
    DESTINATION /usr/local/include)
 
127
endif(UNIX)