gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

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)