summaryrefslogtreecommitdiff
path: root/portmidi/pm_common/CMakeLists.txt
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2024-10-07 19:30:56 +0200
committerMitja Felicijan <mitja.felicijan@gmail.com>2024-10-07 19:30:56 +0200
commit40a899bd6ee536eae093337bf2d0dcc8db4e46f1 (patch)
tree485ace3e6fd28b91f394efd277732651e10824d8 /portmidi/pm_common/CMakeLists.txt
parent6fc4bddfdf8e056469f316c1a0fe488efbb4253a (diff)
downloadttdaw-40a899bd6ee536eae093337bf2d0dcc8db4e46f1.tar.gz
Moved example code examples folder
Diffstat (limited to 'portmidi/pm_common/CMakeLists.txt')
-rw-r--r--portmidi/pm_common/CMakeLists.txt167
1 files changed, 0 insertions, 167 deletions
diff --git a/portmidi/pm_common/CMakeLists.txt b/portmidi/pm_common/CMakeLists.txt
deleted file mode 100644
index 1ad54ad..0000000
--- a/portmidi/pm_common/CMakeLists.txt
+++ /dev/null
@@ -1,167 +0,0 @@
-# pm_common/CMakeLists.txt -- how to build portmidi library
-
-# creates the portmidi library
-# exports PM_NEEDED_LIBS to parent. It seems that PM_NEEDED_LIBS for
-# Linux should include Thread::Thread and ALSA::ALSA, but these
-# are not visible in other CMake files, even though the portmidi
-# target is. Therefore, Thread::Thread is replaced by
-# CMAKE_THREAD_LIBS_INIT and ALSA::ALSA is replaced by ALSA_LIBRARIES.
-# Is there a better way to do this? Maybe this whole file should be
-# at the parent level.
-
-# Support alternative name for static libraries to avoid confusion.
-# (In particular, Xcode has automatically converted portmidi.a to
-# portmidi.dylib without warning, so using portmidi-static.a eliminates
-# this possibility, but default for all libs is "portmidi"):
-set(PM_STATIC_LIB_NAME "portmidi" CACHE STRING
- "For static builds, the PortMidi library name, e.g. portmidi-static.
- Default is portmidi")
-set(PM_ACTUAL_LIB_NAME "portmidi")
-if(NOT BUILD_SHARED_LIBS)
- set(PM_ACTUAL_LIB_NAME ${PM_STATIC_LIB_NAME})
-endif()
-
-# set the build directory for libportmidi.a to be in portmidi, not in
-# portmidi/pm_common. Must be done here BEFORE add_library below.
-if(APPLE OR WIN32)
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
- # set the build directory for .dylib libraries
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
-endif(APPLE OR WIN32)
-
-# we need full paths to sources because they are shared with other targets
-# (in particular pmjni). Set PMDIR to the top-level portmidi directory:
-get_filename_component(PMDIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
-set(PM_LIB_PUBLIC_SRC ${PMDIR}/pm_common/portmidi.c
- ${PMDIR}/pm_common/pmutil.c
- ${PMDIR}/porttime/porttime.c)
-add_library(portmidi ${PM_LIB_PUBLIC_SRC})
-
-# MSVCRT_DLL is "DLL" for shared runtime library, and "" for static:
-set_target_properties(portmidi PROPERTIES
- VERSION ${LIBRARY_VERSION}
- SOVERSION ${LIBRARY_SOVERSION}
- OUTPUT_NAME "${PM_ACTUAL_LIB_NAME}"
- MSVC_RUNTIME_LIBRARY
- "MultiThreaded$<$<CONFIG:Debug>:Debug>${MSVCRT_DLL}"
- WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
-target_include_directories(portmidi PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
-
-
-option(PM_CHECK_ERRORS
-"Insert a check for error return values at the end of each PortMidi function.
-If an error is encountered, a text message is printed using printf(), the user
-is asked to type ENTER, and then exit(-1) is called to clean up and terminate
-the program.
-
-You should not use PM_CHECK_ERRORS if printf() does not work (e.g. this is not
-a console application under Windows, or there is no visible console on some
-other OS), and you should not use PM_CHECK_ERRORS if you intend to recover
-from errors rather than abruptly terminate the program." OFF)
-if(PM_CHECK_ERRORS)
- target_compile_definitions(portmidi PRIVATE PM_CHECK_ERRORS)
-endif(PM_CHECK_ERRORS)
-
-macro(prepend_path RESULT PATH)
- set(${RESULT})
- foreach(FILE ${ARGN})
- list(APPEND ${RESULT} "${PATH}${FILE}")
- endforeach(FILE)
-endmacro(prepend_path)
-
-# UNIX needs pthread library
-if(NOT WIN32)
- set(THREADS_PREFER_PTHREAD_FLAG ON)
- find_package(Threads REQUIRED)
-endif()
-
-# Check for sndio
-if(USE_SNDIO)
- include (FindPackageHandleStandardArgs)
- find_path(SNDIO_INCLUDE_DIRS NAMES sndio.h)
- find_library(SNDIO_LIBRARY sndio)
- find_package_handle_standard_args(Sndio
- REQUIRED_VARS SNDIO_LIBRARY SNDIO_INCLUDE_DIRS)
-endif(USE_SNDIO)
-
-# first include the appropriate system-dependent file:
-if(SNDIO_FOUND AND USE_SNDIO)
- set(PM_LIB_PRIVATE_SRC
- ${PMDIR}/porttime/ptlinux.c
- ${PMDIR}/pm_sndio/pmsndio.c)
- set(PM_NEEDED_LIBS Threads::Threads ${SNDIO_LIBRARY} PARENT_SCOPE)
- target_link_libraries(portmidi PRIVATE Threads::Threads ${SNDIO_LIBRARY})
- target_include_directories(portmidi PRIVATE ${SNDIO_INCLUDE_DIRS})
-elseif(UNIX AND APPLE)
- set(Threads::Threads "" PARENT_SCOPE)
- set(PM_LIB_PRIVATE_SRC
- ${PMDIR}/porttime/ptmacosx_mach.c
- ${PMDIR}/pm_mac/pmmac.c
- ${PMDIR}/pm_mac/pmmacosxcm.c)
- set(PM_NEEDED_LIBS
- ${CMAKE_THREAD_LIBS_INIT}
- -Wl,-framework,CoreAudio
- -Wl,-framework,CoreFoundation
- -Wl,-framework,CoreMidi
- -Wl,-framework,CoreServices
- PARENT_SCOPE)
- target_link_libraries(portmidi PRIVATE
- Threads::Threads
- -Wl,-framework,CoreAudio
- -Wl,-framework,CoreFoundation
- -Wl,-framework,CoreMidi
- -Wl,-framework,CoreServices
- )
- # set to CMake default; is this right?:
- set_target_properties(portmidi PROPERTIES MACOSX_RPATH ON)
-elseif(HAIKU)
- set(PM_LIB_PRIVATE_SRC
- ${PMDIR}/porttime/pthaiku.cpp
- ${PMDIR}/pm_haiku/pmhaiku.cpp)
- set(PM_NEEDED_LIBS be midi midi2 PARENT_SCOPE)
- target_link_libraries(portmidi PRIVATE be midi midi2)
-elseif(UNIX)
- target_compile_definitions(portmidi PRIVATE ${LINUX_FLAGS})
- set(PM_LIB_PRIVATE_SRC
- ${PMDIR}/porttime/ptlinux.c
- ${PMDIR}/pm_linux/pmlinux.c
- ${PMDIR}/pm_linux/pmlinuxnull.c)
- if(${LINUX_DEFINES} MATCHES ".*PMALSA.*")
- # Note that ALSA is not required if PMNULL is defined -- PortMidi will then
- # compile without ALSA and report no MIDI devices. Later, PMSNDIO or PMJACK
- # might be additional options.
- find_package(ALSA REQUIRED)
- list(APPEND PM_LIB_PRIVATE_SRC ${PMDIR}/pm_linux/pmlinuxalsa.c)
- set(PM_NEEDED_LIBS ${CMAKE_THREAD_LIBS_INIT} ${ALSA_LIBRARIES} PARENT_SCOPE)
- target_link_libraries(portmidi PRIVATE Threads::Threads ALSA::ALSA)
- set(PKGCONFIG_REQUIRES_PRIVATE "alsa" PARENT_SCOPE)
- else()
- message(WARNING "No PMALSA, so PortMidi will not use ALSA, "
- "and will not find or open MIDI devices.")
- set(PM_NEEDED_LIBS ${CMAKE_THREAD_LIBS_INIT} PARENT_SCOPE)
- target_link_libraries(portmidi PRIVATE Threads::Threads)
- endif()
-elseif(WIN32)
- set(PM_LIB_PRIVATE_SRC
- ${PMDIR}/porttime/ptwinmm.c
- ${PMDIR}/pm_win/pmwin.c
- ${PMDIR}/pm_win/pmwinmm.c)
- set(PM_NEEDED_LIBS winmm PARENT_SCOPE)
- target_link_libraries(portmidi PRIVATE winmm)
-# if(NOT BUILD_SHARED_LIBS AND PM_USE_STATIC_RUNTIME)
- # /MDd is multithread debug DLL, /MTd is multithread debug
- # /MD is multithread DLL, /MT is multithread. Change to static:
-# include(../pm_win/static.cmake)
-# endif()
-else()
- message(FATAL_ERROR "Operating system not supported.")
-endif()
-
-set(PM_LIB_PUBLIC_SRC ${PM_LIB_PUBLIC_SRC} PARENT_SCOPE) # export to parent
-set(PM_LIB_PRIVATE_SRC ${PM_LIB_PRIVATE_SRC} PARENT_SCOPE) # export to parent
-
-target_sources(portmidi PRIVATE ${PM_LIB_PRIVATE_SRC})
-