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 (5536B)


      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     if(PMJAVA)
     61         set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
     62         set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
     63         set(INSTALL_NAME_DIR "/usr/local/lib")
     64         message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
     65     endif()
     66   else(APPLE)
     67     # LINUX settings...
     68     if(PMJAVA)
     69         include(FindJNI)
     70         # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
     71         # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
     72         # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
     73         # note: user might need to set JAVA_INCLUDE_PATH manually
     74         #
     75         # this will probably break on BSD and other Unix systems; the fix
     76         # depends on whether FindJNI can find Java or not. If yes, then
     77         # we should try to rely on automatically set JAVA_INCLUDE_PATH and
     78         # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
     79         # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
     80         # because JAVA_INCLUDE_PATH2 is pretty obscure)
     81         set(JAVA_INCLUDE_PATH  ${JAVA_INCLUDE_PATH-UNKNOWN}
     82             CACHE STRING "where to find Java SDK include directory")
     83         set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
     84         # libjvm.so is found relative to JAVA_INCLUDE_PATH:
     85         set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
     86     endif()
     87     set(LINUXSRC pmlinuxalsa pmlinux finddefault)
     88     prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
     89     list(APPEND LIBSRC ../porttime/ptlinux)
     90 
     91     if(NOT ANDROID)
     92       set(PM_NEEDED_LIBS pthread asound)
     93 	endif()
     94   endif(APPLE)
     95 else(UNIX)
     96   if(WIN32)
     97     # /MDd is multithread debug DLL, /MTd is multithread debug
     98     # /MD is multithread DLL, /MT is multithread 
     99 
    100     if(PMJAVA)
    101         include(FindJNI)
    102         # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
    103         set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
    104 
    105         set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
    106         # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
    107     endif()
    108 
    109     set(WINSRC pmwin pmwinmm)
    110     prepend_path(LIBSRC ../pm_win/ ${WINSRC})
    111     list(APPEND LIBSRC ../porttime/ptwinmm)
    112     set(PM_NEEDED_LIBS winmm.lib)
    113     if(PMJAVA)
    114         # message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
    115     endif()
    116   endif(WIN32)
    117 endif(UNIX)
    118 if(PMJAVA)
    119     set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVAVM_LIB})
    120 endif()
    121 
    122 # this completes the list of library sources by adding shared code
    123 set(SHARED_FILES pmutil portmidi)
    124 prepend_path(SHARED_PATHS ../pm_common/ ${SHARED_FILES})
    125 list(APPEND LIBSRC ${SHARED_PATHS})
    126 
    127 add_library(portmidi-dynamic SHARED ${LIBSRC})
    128 set_target_properties(portmidi-dynamic PROPERTIES OUTPUT_NAME "portmidi")
    129 target_link_libraries(portmidi-dynamic ${PM_NEEDED_LIBS})
    130 
    131 # install the libraries (Linux and Mac OS X command line)
    132 if(UNIX)
    133   INSTALL(TARGETS portmidi-dynamic
    134     LIBRARY DESTINATION /usr/local/lib
    135     ARCHIVE DESTINATION /usr/local/lib)
    136   INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h
    137     DESTINATION /usr/local/include)
    138 endif(UNIX)