CMakeLists.txt (4012B)
1 # pm_common 2 3 # set the build directory for libportmidi.a to be in portmidi, not in 4 # portmidi/pm_common 5 if(APPLE OR WIN32) 6 else(APPLE OR WIN32) 7 set(LINUX_FLAGS "-DPMALSA") 8 endif(APPLE OR WIN32) 9 10 if(APPLE) 11 set(CMAKE_C_FLAGS "-mmacosx-version-min=10.5" CACHE 12 STRING "needed in conjunction with CMAKE_OSX_SYSROOT" FORCE) 13 endif(APPLE) 14 15 macro(prepend_path RESULT PATH) 16 set(${RESULT}) 17 foreach(FILE ${ARGN}) 18 list(APPEND ${RESULT} "${PATH}${FILE}") 19 endforeach(FILE) 20 endmacro(prepend_path) 21 22 # first include the appropriate system-dependent file: 23 if(UNIX) 24 if(APPLE) 25 set(MACSRC pmmacosxcm.c pmmac.c readbinaryplist.c finddefault.c) 26 prepend_path(LIBSRC ../pm_mac/ ${MACSRC}) 27 list(APPEND LIBSRC ../porttime/ptmacosx_mach.c) 28 29 include_directories(${CMAKE_OSX_SYSROOT}/Developer/Headers/FlatCarbon) 30 set(FRAMEWORK_PATH ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks) 31 set(COREAUDIO_LIB "${FRAMEWORK_PATH}/CoreAudio.framework") 32 set(COREFOUNDATION_LIB "${FRAMEWORK_PATH}/CoreFoundation.framework") 33 set(COREMIDI_LIB "${FRAMEWORK_PATH}/CoreMIDI.framework") 34 set(CORESERVICES_LIB "${FRAMEWORK_PATH}/CoreServices.framework") 35 set(PM_NEEDED_LIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB} 36 ${COREMIDI_LIB} ${CORESERVICES_LIB} 37 CACHE INTERNAL "") 38 39 if(PMJAVA) 40 set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework") 41 set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers) 42 endif() 43 message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT}) 44 else(APPLE) 45 # LINUX settings... 46 if(PMJAVA) 47 include(FindJNI) 48 message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH}) 49 message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH}) 50 message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2}) 51 message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY}) 52 set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2}) 53 # libjvm.so is found relative to JAVA_INCLUDE_PATH: 54 set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so) 55 endif() 56 set(LINUXSRC pmlinuxalsa.c pmlinux.c finddefault.c) 57 prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC}) 58 list(APPEND LIBSRC ../porttime/ptlinux.c) 59 60 if(NOT ANDROID) 61 set(PM_NEEDED_LIBS pthread asound) 62 endif() 63 endif(APPLE) 64 else(UNIX) 65 if(WIN32) 66 # /MDd is multithread debug DLL, /MTd is multithread debug 67 # /MD is multithread DLL, /MT is multithread. Change to static: 68 include(../pm_win/static.cmake) 69 70 if(PMJAVA) 71 include(FindJNI) 72 73 set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2}) 74 # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS}) 75 endif() 76 77 set(WINSRC pmwin.c pmwinmm.c) 78 prepend_path(LIBSRC ../pm_win/ ${WINSRC}) 79 list(APPEND LIBSRC ../porttime/ptwinmm.c) 80 set(PM_NEEDED_LIBS winmm.lib) 81 endif(WIN32) 82 endif(UNIX) 83 if(PMJAVA) 84 set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY}) 85 endif() 86 87 # this completes the list of library sources by adding shared code 88 list(APPEND LIBSRC pmutil.c portmidi.c) 89 90 # now add the shared files to make the complete list of library sources 91 add_library(portmidi-static ${LIBSRC}) 92 set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s") 93 target_link_libraries(portmidi-static ${PM_NEEDED_LIBS}) 94 95 # define the jni library 96 if(PMJAVA) 97 include_directories(${JAVA_INCLUDE_PATHS}) 98 99 set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c) 100 add_library(pmjni SHARED ${JNISRC}) 101 target_link_libraries(pmjni ${JNI_EXTRA_LIBS}) 102 set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib") 103 endif() 104 105 # install the libraries (Linux and Mac OS X command line) 106 if(UNIX AND PMJAVA) 107 INSTALL(TARGETS portmidi-static pmjni 108 LIBRARY DESTINATION /usr/local/lib 109 ARCHIVE DESTINATION /usr/local/lib) 110 # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here 111 # INSTALL(FILES portmidi.h ../porttime/porttime.h 112 # DESTINATION /usr/local/include) 113 endif(UNIX AND PMJAVA)