annotate src/portaudio/CMakeLists.txt @ 99:c6e1ae789cfb

Add Vamp builds
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 20 Mar 2013 16:05:58 +0000
parents 8a15ff55d9af
children
rev   line source
cannam@89 1 # $Id: $
cannam@89 2 #
cannam@89 3 # For a "How-To" please refer to the Portaudio documentation at:
cannam@89 4 # http://www.portaudio.com/trac/wiki/TutorialDir/Compile/CMake
cannam@89 5 #
cannam@89 6 PROJECT( portaudio )
cannam@89 7
cannam@89 8 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
cannam@89 9
cannam@89 10 IF(CMAKE_CL_64)
cannam@89 11 SET(TARGET_POSTFIX x64)
cannam@89 12 SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/x64)
cannam@89 13 ELSE(CMAKE_CL_64)
cannam@89 14 SET(TARGET_POSTFIX x86)
cannam@89 15 SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/Win32)
cannam@89 16 ENDIF(CMAKE_CL_64)
cannam@89 17
cannam@89 18 IF(WIN32 AND MSVC)
cannam@89 19 OPTION(PORTAUDIO_DLL_LINK_WITH_STATIC_RUNTIME "Link with static runtime libraries (minimizes runtime dependencies)" ON)
cannam@89 20 IF(PORTAUDIO_DLL_LINK_WITH_STATIC_RUNTIME)
cannam@89 21 FOREACH(flag_var
cannam@89 22 CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
cannam@89 23 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
cannam@89 24 CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
cannam@89 25 CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
cannam@89 26 IF(${flag_var} MATCHES "/MD")
cannam@89 27 STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
cannam@89 28 ENDIF(${flag_var} MATCHES "/MD")
cannam@89 29 ENDFOREACH(flag_var)
cannam@89 30 ENDIF(PORTAUDIO_DLL_LINK_WITH_STATIC_RUNTIME)
cannam@89 31
cannam@89 32 ENDIF(WIN32 AND MSVC)
cannam@89 33
cannam@89 34 IF(WIN32)
cannam@89 35 OPTION(PORTAUDIO_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
cannam@89 36
cannam@89 37 SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_support)
cannam@89 38 # Try to find DirectX SDK
cannam@89 39 FIND_PACKAGE(DXSDK)
cannam@89 40 # Try to find ASIO SDK (assumes that portaudio and asiosdk folders are side-by-side, see
cannam@89 41 # http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC)
cannam@89 42 FIND_PACKAGE(ASIOSDK)
cannam@89 43
cannam@89 44 IF(ASIOSDK_FOUND)
cannam@89 45 OPTION(PORTAUDIO_ENABLE_ASIO "Enable support for ASIO" ON)
cannam@89 46 ELSE(ASIOSDK_FOUND)
cannam@89 47 OPTION(PORTAUDIO_ENABLE_ASIO "Enable support for ASIO" OFF)
cannam@89 48 ENDIF(ASIOSDK_FOUND)
cannam@89 49 IF(DXSDK_FOUND)
cannam@89 50 OPTION(PORTAUDIO_ENABLE_DSOUND "Enable support for DirectSound" ON)
cannam@89 51 ELSE(DXSDK_FOUND)
cannam@89 52 OPTION(PORTAUDIO_ENABLE_DSOUND "Enable support for DirectSound" OFF)
cannam@89 53 ENDIF(DXSDK_FOUND)
cannam@89 54 OPTION(PORTAUDIO_ENABLE_WMME "Enable support for MME" ON)
cannam@89 55 OPTION(PORTAUDIO_ENABLE_WASAPI "Enable support for WASAPI" ON)
cannam@89 56 OPTION(PORTAUDIO_ENABLE_WDMKS "Enable support for WDMKS" ON)
cannam@89 57 OPTION(PORTAUDIO_USE_WDMKS_DEVICE_INFO "Use WDM/KS API for device info" ON)
cannam@89 58 MARK_AS_ADVANCED(PORTAUDIO_USE_WDMKS_DEVICE_INFO)
cannam@89 59 IF(PORTAUDIO_ENABLE_DSOUND)
cannam@89 60 OPTION(PORTAUDIO_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" ON)
cannam@89 61 MARK_AS_ADVANCED(PORTAUDIO_USE_DIRECTSOUNDFULLDUPLEXCREATE)
cannam@89 62 ENDIF(PORTAUDIO_ENABLE_DSOUND)
cannam@89 63 ENDIF(WIN32)
cannam@89 64
cannam@89 65 MACRO(SET_HEADER_OPTION OPTION_NAME OPTION_VALUE)
cannam@89 66 IF(${OPTION_NAME})
cannam@89 67 SET(${OPTION_VALUE} "1")
cannam@89 68 ELSE(${OPTION_NAME})
cannam@89 69 SET(${OPTION_VALUE} "0")
cannam@89 70 ENDIF(${OPTION_NAME})
cannam@89 71 ENDMACRO(SET_HEADER_OPTION)
cannam@89 72
cannam@89 73 SET_HEADER_OPTION(PORTAUDIO_ENABLE_ASIO PA_ENABLE_ASIO)
cannam@89 74 SET_HEADER_OPTION(PORTAUDIO_ENABLE_DSOUND PA_ENABLE_DSOUND)
cannam@89 75 SET_HEADER_OPTION(PORTAUDIO_ENABLE_WMME PA_ENABLE_WMME)
cannam@89 76 SET_HEADER_OPTION(PORTAUDIO_ENABLE_WASAPI PA_ENABLE_WASAPI)
cannam@89 77 SET_HEADER_OPTION(PORTAUDIO_ENABLE_WDMKS PA_ENABLE_WDMKS)
cannam@89 78
cannam@89 79 # Set variables for DEF file expansion
cannam@89 80 IF(NOT PORTAUDIO_ENABLE_ASIO)
cannam@89 81 SET(DEF_EXCLUDE_ASIO_SYMBOLS ";")
cannam@89 82 ENDIF(NOT PORTAUDIO_ENABLE_ASIO)
cannam@89 83
cannam@89 84 IF(NOT PORTAUDIO_ENABLE_WASAPI)
cannam@89 85 SET(DEF_EXCLUDE_WASAPI_SYMBOLS ";")
cannam@89 86 ENDIF(NOT PORTAUDIO_ENABLE_WASAPI)
cannam@89 87
cannam@89 88 IF(PORTAUDIO_USE_WDMKS_DEVICE_INFO)
cannam@89 89 ADD_DEFINITIONS(-DPAWIN_USE_WDMKS_DEVICE_INFO)
cannam@89 90 ENDIF(PORTAUDIO_USE_WDMKS_DEVICE_INFO)
cannam@89 91
cannam@89 92 IF(PORTAUDIO_USE_DIRECTSOUNDFULLDUPLEXCREATE)
cannam@89 93 ADD_DEFINITIONS(-DPAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE)
cannam@89 94 ENDIF(PORTAUDIO_USE_DIRECTSOUNDFULLDUPLEXCREATE)
cannam@89 95
cannam@89 96 #######################################
cannam@89 97 IF(WIN32)
cannam@89 98 INCLUDE_DIRECTORIES(src/os/win)
cannam@89 99 ENDIF(WIN32)
cannam@89 100
cannam@89 101 IF(PORTAUDIO_ENABLE_ASIO)
cannam@89 102 INCLUDE_DIRECTORIES(${ASIOSDK_ROOT_DIR}/common)
cannam@89 103 INCLUDE_DIRECTORIES(${ASIOSDK_ROOT_DIR}/host)
cannam@89 104 INCLUDE_DIRECTORIES(${ASIOSDK_ROOT_DIR}/host/pc)
cannam@89 105
cannam@89 106 SET(PA_ASIO_SOURCES
cannam@89 107 src/hostapi/asio/pa_asio.cpp
cannam@89 108 )
cannam@89 109
cannam@89 110 SET(PA_ASIOSDK_SOURCES
cannam@89 111 ${ASIOSDK_ROOT_DIR}/common/asio.cpp
cannam@89 112 ${ASIOSDK_ROOT_DIR}/host/pc/asiolist.cpp
cannam@89 113 ${ASIOSDK_ROOT_DIR}/host/asiodrivers.cpp
cannam@89 114 )
cannam@89 115
cannam@89 116 SOURCE_GROUP("hostapi\\ASIO" FILES
cannam@89 117 ${PA_ASIO_SOURCES}
cannam@89 118 )
cannam@89 119
cannam@89 120 SOURCE_GROUP("hostapi\\ASIO\\ASIOSDK" FILES
cannam@89 121 ${PA_ASIOSDK_SOURCES}
cannam@89 122 )
cannam@89 123 ENDIF(PORTAUDIO_ENABLE_ASIO)
cannam@89 124
cannam@89 125 IF(PORTAUDIO_ENABLE_DSOUND)
cannam@89 126 INCLUDE_DIRECTORIES(${DXSDK_INCLUDE_DIR})
cannam@89 127 INCLUDE_DIRECTORIES(src/os/win)
cannam@89 128
cannam@89 129 SET(PA_DS_INCLUDES
cannam@89 130 src/hostapi/dsound/pa_win_ds_dynlink.h
cannam@89 131 )
cannam@89 132
cannam@89 133 SET(PA_DS_SOURCES
cannam@89 134 src/hostapi/dsound/pa_win_ds.c
cannam@89 135 src/hostapi/dsound/pa_win_ds_dynlink.c
cannam@89 136 )
cannam@89 137
cannam@89 138 SOURCE_GROUP("hostapi\\dsound" FILES
cannam@89 139 ${PA_DS_INCLUDES}
cannam@89 140 ${PA_DS_SOURCES}
cannam@89 141 )
cannam@89 142 ENDIF(PORTAUDIO_ENABLE_DSOUND)
cannam@89 143
cannam@89 144 IF(PORTAUDIO_ENABLE_WMME)
cannam@89 145 SET(PA_WMME_SOURCES
cannam@89 146 src/hostapi/wmme/pa_win_wmme.c
cannam@89 147 )
cannam@89 148
cannam@89 149 SOURCE_GROUP("hostapi\\wmme" FILES
cannam@89 150 ${PA_WMME_SOURCES}
cannam@89 151 )
cannam@89 152 ENDIF(PORTAUDIO_ENABLE_WMME)
cannam@89 153
cannam@89 154 IF(PORTAUDIO_ENABLE_WASAPI)
cannam@89 155 SET(PA_WASAPI_SOURCES
cannam@89 156 src/hostapi/wasapi/pa_win_wasapi.c
cannam@89 157 )
cannam@89 158
cannam@89 159 SOURCE_GROUP("hostapi\\wasapi" FILES
cannam@89 160 ${PA_WASAPI_SOURCES}
cannam@89 161 )
cannam@89 162 ENDIF(PORTAUDIO_ENABLE_WASAPI)
cannam@89 163
cannam@89 164 IF(PORTAUDIO_ENABLE_WDMKS)
cannam@89 165 SET(PA_WDMKS_SOURCES
cannam@89 166 src/hostapi/wdmks/pa_win_wdmks.c
cannam@89 167 )
cannam@89 168
cannam@89 169 SOURCE_GROUP("hostapi\\wdmks" FILES
cannam@89 170 ${PA_WDMKS_SOURCES}
cannam@89 171 )
cannam@89 172 ENDIF(PORTAUDIO_ENABLE_WDMKS)
cannam@89 173
cannam@89 174 SET(PA_SKELETON_SOURCES
cannam@89 175 src/hostapi/skeleton/pa_hostapi_skeleton.c
cannam@89 176 )
cannam@89 177
cannam@89 178 SOURCE_GROUP("hostapi\\skeleton"
cannam@89 179 ${PA_SKELETON_SOURCES})
cannam@89 180
cannam@89 181 #######################################
cannam@89 182 IF(WIN32)
cannam@89 183 SET(PA_INCLUDES
cannam@89 184 include/portaudio.h
cannam@89 185 include/pa_asio.h
cannam@89 186 include/pa_win_ds.h
cannam@89 187 include/pa_win_wasapi.h
cannam@89 188 include/pa_win_wmme.h
cannam@89 189 )
cannam@89 190 ENDIF(WIN32)
cannam@89 191
cannam@89 192 SOURCE_GROUP("include" FILES
cannam@89 193 ${PA_INCLUDES}
cannam@89 194 )
cannam@89 195
cannam@89 196 SET(PA_COMMON_INCLUDES
cannam@89 197 src/common/pa_allocation.h
cannam@89 198 src/common/pa_converters.h
cannam@89 199 src/common/pa_cpuload.h
cannam@89 200 src/common/pa_debugprint.h
cannam@89 201 src/common/pa_dither.h
cannam@89 202 src/common/pa_endianness.h
cannam@89 203 src/common/pa_hostapi.h
cannam@89 204 src/common/pa_memorybarrier.h
cannam@89 205 src/common/pa_process.h
cannam@89 206 src/common/pa_ringbuffer.h
cannam@89 207 src/common/pa_stream.h
cannam@89 208 src/common/pa_trace.h
cannam@89 209 src/common/pa_types.h
cannam@89 210 src/common/pa_util.h
cannam@89 211 )
cannam@89 212
cannam@89 213 SET(PA_COMMON_SOURCES
cannam@89 214 src/common/pa_allocation.c
cannam@89 215 src/common/pa_converters.c
cannam@89 216 src/common/pa_cpuload.c
cannam@89 217 src/common/pa_debugprint.c
cannam@89 218 src/common/pa_dither.c
cannam@89 219 src/common/pa_front.c
cannam@89 220 src/common/pa_process.c
cannam@89 221 src/common/pa_ringbuffer.c
cannam@89 222 src/common/pa_stream.c
cannam@89 223 src/common/pa_trace.c
cannam@89 224 )
cannam@89 225
cannam@89 226 SOURCE_GROUP("common" FILES
cannam@89 227 ${PA_COMMON_INCLUDES}
cannam@89 228 ${PA_COMMON_SOURCES}
cannam@89 229 )
cannam@89 230
cannam@89 231 SOURCE_GROUP("cmake_generated" FILES
cannam@89 232 ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def
cannam@89 233 ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h
cannam@89 234 )
cannam@89 235
cannam@89 236 IF(WIN32)
cannam@89 237 SET(PA_PLATFORM_SOURCES
cannam@89 238 src/os/win/pa_win_hostapis.c
cannam@89 239 src/os/win/pa_win_util.c
cannam@89 240 src/os/win/pa_win_waveformat.c
cannam@89 241 src/os/win/pa_win_wdmks_utils.c
cannam@89 242 src/os/win/pa_win_coinitialize.c
cannam@89 243 src/os/win/pa_x86_plain_converters.c
cannam@89 244 )
cannam@89 245
cannam@89 246 SOURCE_GROUP("os\\win" FILES
cannam@89 247 ${PA_PLATFORM_SOURCES}
cannam@89 248 )
cannam@89 249 ENDIF(WIN32)
cannam@89 250
cannam@89 251 INCLUDE_DIRECTORIES( include )
cannam@89 252 INCLUDE_DIRECTORIES( src/common )
cannam@89 253
cannam@89 254 IF(WIN32 AND MSVC)
cannam@89 255 ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
cannam@89 256 ENDIF(WIN32 AND MSVC)
cannam@89 257
cannam@89 258 ADD_DEFINITIONS(-DPORTAUDIO_CMAKE_GENERATED)
cannam@89 259 INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
cannam@89 260
cannam@89 261 SET(SOURCES_LESS_ASIO_SDK
cannam@89 262 ${PA_COMMON_SOURCES}
cannam@89 263 ${PA_ASIO_SOURCES}
cannam@89 264 ${PA_DS_SOURCES}
cannam@89 265 ${PA_WMME_SOURCES}
cannam@89 266 ${PA_WASAPI_SOURCES}
cannam@89 267 ${PA_WDMKS_SOURCES}
cannam@89 268 ${PA_SKELETON_SOURCES}
cannam@89 269 ${PA_PLATFORM_SOURCES}
cannam@89 270 )
cannam@89 271
cannam@89 272 IF(PORTAUDIO_UNICODE_BUILD)
cannam@89 273 SET_SOURCE_FILES_PROPERTIES(
cannam@89 274 ${SOURCES_LESS_ASIO_SDK}
cannam@89 275 PROPERTIES
cannam@89 276 COMPILE_DEFINITIONS "UNICODE;_UNICODE"
cannam@89 277 )
cannam@89 278 ENDIF(PORTAUDIO_UNICODE_BUILD)
cannam@89 279
cannam@89 280 ADD_LIBRARY(portaudio SHARED
cannam@89 281 ${PA_INCLUDES}
cannam@89 282 ${PA_COMMON_INCLUDES}
cannam@89 283 ${SOURCES_LESS_ASIO_SDK}
cannam@89 284 ${PA_ASIOSDK_SOURCES}
cannam@89 285 ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def
cannam@89 286 ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h
cannam@89 287 )
cannam@89 288
cannam@89 289 ADD_LIBRARY(portaudio_static STATIC
cannam@89 290 ${PA_INCLUDES}
cannam@89 291 ${PA_COMMON_INCLUDES}
cannam@89 292 ${SOURCES_LESS_ASIO_SDK}
cannam@89 293 ${PA_ASIOSDK_SOURCES}
cannam@89 294 ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h
cannam@89 295 )
cannam@89 296
cannam@89 297 # Configure the exports file according to settings
cannam@89 298 SET(GENERATED_MESSAGE "CMake generated file, do NOT edit! Use CMake-GUI to change configuration instead.")
cannam@89 299 CONFIGURE_FILE( cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY )
cannam@89 300 # Configure header for options (PA_USE_xxx)
cannam@89 301 CONFIGURE_FILE( cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY )
cannam@89 302
cannam@89 303 IF(WIN32)
cannam@89 304 # If we use DirectSound, we need this for the library to be found (if not in VS project settings)
cannam@89 305 IF(PORTAUDIO_ENABLE_DSOUND AND DXSDK_FOUND)
cannam@89 306 TARGET_LINK_LIBRARIES(portaudio ${DXSDK_DSOUND_LIBRARY})
cannam@89 307 ENDIF(PORTAUDIO_ENABLE_DSOUND AND DXSDK_FOUND)
cannam@89 308
cannam@89 309 # If we use WDM/KS we need setupapi.lib
cannam@89 310 IF(PORTAUDIO_ENABLE_WDMKS)
cannam@89 311 TARGET_LINK_LIBRARIES(portaudio setupapi)
cannam@89 312 ENDIF(PORTAUDIO_ENABLE_WDMKS)
cannam@89 313
cannam@89 314 SET_TARGET_PROPERTIES(portaudio PROPERTIES OUTPUT_NAME portaudio_${TARGET_POSTFIX})
cannam@89 315 SET_TARGET_PROPERTIES(portaudio_static PROPERTIES OUTPUT_NAME portaudio_static_${TARGET_POSTFIX})
cannam@89 316 ENDIF(WIN32)
cannam@89 317
cannam@89 318 OPTION(PORTAUDIO_BUILD_TESTS "Include test projects" OFF)
cannam@89 319 MARK_AS_ADVANCED(PORTAUDIO_BUILD_TESTS)
cannam@89 320
cannam@89 321 # Prepared for inclusion of test files
cannam@89 322 IF(PORTAUDIO_BUILD_TESTS)
cannam@89 323 SUBDIRS(test)
cannam@89 324 ENDIF(PORTAUDIO_BUILD_TESTS)
cannam@89 325
cannam@89 326 #################################
cannam@89 327