To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / portaudio_20161030_catalina_patch / CMakeLists.txt @ 164:9fa11135915a

History | View | Annotate | Download (17.4 KB)

1
# $Id: $
2
#
3
# For a "How-To" please refer to the Portaudio documentation at:
4
# http://www.portaudio.com/trac/wiki/TutorialDir/Compile/CMake
5
#
6

    
7
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
8

    
9
# Check if the user is building PortAudio stand-alone or as part of a larger
10
# project. If this is part of a larger project (i.e. the CMakeLists.txt has
11
# been imported by some other CMakeLists.txt), we don't want to trump over
12
# the top of that project's global settings.
13
IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR})
14
  IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
15
    MESSAGE(STATUS "Setting CMAKE_BUILD_TYPE type to 'Debug' as none was specified.")
16
    SET(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
17
    SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release")
18
  ENDIF()
19

    
20
  PROJECT(portaudio)
21

    
22
  SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
23

    
24
  IF(WIN32 AND MSVC)
25
    OPTION(PA_DLL_LINK_WITH_STATIC_RUNTIME "Link with static runtime libraries (minimizes runtime dependencies)" ON)
26
    IF(PA_DLL_LINK_WITH_STATIC_RUNTIME)
27
      FOREACH(flag_var
28
        CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
29
        CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
30
        CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
31
        CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
32
        IF(${flag_var} MATCHES "/MD")
33
          STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
34
        ENDIF()
35
      ENDFOREACH()
36
    ENDIF()
37
  ENDIF()
38
ENDIF()
39

    
40
SET(PA_PKGCONFIG_VERSION 19)
41

    
42
# Most of the code from this point onwards is related to populating the
43
# following variables:
44
#   PA_PUBLIC_INCLUDES - This contains the list of public PortAudio header
45
#       files. These files will be copied into /include paths on Unix'y
46
#       systems when "make install" is invoked.
47
#   PA_PRIVATE_INCLUDES - This contains the list of header files which
48
#       are not part of PortAudio, but are required by the various hostapis.
49
#       It is only used by CMake IDE generators (like Visual Studio) to
50
#       provide quick-links to useful headers. It has no impact on build
51
#       output.
52
#   PA_PRIVATE_INCLUDE_PATHS - This contains the list of include paths which
53
#       will be passed to the compiler while PortAudio is being built which
54
#       are not required by applications using the PortAudio API.
55
#   PA_PRIVATE_COMPILE_DEFINITIONS - This contains a list of preprocessor
56
#       macro definitions which will be set when compiling PortAudio source
57
#       files.
58
#   PA_SOURCES - This contains the list of source files which will be built
59
#       into the static and shared PortAudio libraries.
60
#   PA_NON_UNICODE_SOURCES - This also contains a list of source files which
61
#       will be build into the static and shared PortAudio libraries. However,
62
#       these sources will not have any unicode compiler definitions added
63
#       to them. This list should only contain external source dependencies.
64
#   PA_EXTRA_SHARED_SOURCES - Contains a list of extra files which will be
65
#       associated only with the shared PortAudio library. This only seems
66
#       relevant for Windows shared libraries which require a list of export
67
#       symbols.
68
# Where other PA_* variables are set, these are almost always only used to
69
# preserve the historic SOURCE_GROUP behavior (which again only has an impact
70
# on IDE-style generators for visual appearance) or store the output of
71
# find_library() calls.
72

    
73
SET(PA_COMMON_INCLUDES
74
  src/common/pa_allocation.h
75
  src/common/pa_converters.h
76
  src/common/pa_cpuload.h
77
  src/common/pa_debugprint.h
78
  src/common/pa_dither.h
79
  src/common/pa_endianness.h
80
  src/common/pa_hostapi.h
81
  src/common/pa_memorybarrier.h
82
  src/common/pa_process.h
83
  src/common/pa_ringbuffer.h
84
  src/common/pa_stream.h
85
  src/common/pa_trace.h
86
  src/common/pa_types.h
87
  src/common/pa_util.h
88
)
89

    
90
SET(PA_COMMON_SOURCES
91
  src/common/pa_allocation.c
92
  src/common/pa_converters.c
93
  src/common/pa_cpuload.c
94
  src/common/pa_debugprint.c
95
  src/common/pa_dither.c
96
  src/common/pa_front.c
97
  src/common/pa_process.c
98
  src/common/pa_ringbuffer.c
99
  src/common/pa_stream.c
100
  src/common/pa_trace.c
101
)
102

    
103
SOURCE_GROUP("common" FILES ${PA_COMMON_INCLUDES} ${PA_COMMON_SOURCES})
104

    
105
SET(PA_PUBLIC_INCLUDES include/portaudio.h)
106

    
107
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake_support)
108

    
109
SET(PA_SKELETON_SOURCES src/hostapi/skeleton/pa_hostapi_skeleton.c)
110
SOURCE_GROUP("hostapi\\skeleton" ${PA_SKELETON_SOURCES})
111
SET(PA_SOURCES ${PA_COMMON_SOURCES} ${PA_SKELETON_SOURCES})
112
SET(PA_PRIVATE_INCLUDE_PATHS src/common ${CMAKE_CURRENT_BINARY_DIR})
113

    
114
IF(WIN32)
115
  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS)
116

    
117
  SET(PA_PLATFORM_SOURCES
118
    src/os/win/pa_win_hostapis.c
119
    src/os/win/pa_win_util.c
120
    src/os/win/pa_win_waveformat.c
121
    src/os/win/pa_win_wdmks_utils.c
122
    src/os/win/pa_win_coinitialize.c)
123
  SET(PA_PLATFORM_INCLUDES
124
    src/os/win/pa_win_coinitialize.h
125
    src/os/win/pa_win_wdmks_utils.h)
126

    
127
  IF(MSVC)
128
    SET(PA_PLATFORM_SOURCES ${PA_PLATFORM_SOURCES} src/os/win/pa_x86_plain_converters.c)
129
    SET(PA_PLATFORM_INCLUDES ${PA_PLATFORM_INCLUDES} src/os/win/pa_x86_plain_converters.h)
130
  ELSE()
131
    SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} _WIN32_WINNT=0x0501 WINVER=0x0501)
132
    SET(DEF_EXCLUDE_X86_PLAIN_CONVERTERS ";")
133
  ENDIF()
134

    
135
  SOURCE_GROUP("os\\win" FILES ${PA_PLATFORM_SOURCES} ${PA_PLATFORM_INCLUDES})
136
  SET(PA_SOURCES ${PA_SOURCES} ${PA_PLATFORM_SOURCES})
137
  SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_PLATFORM_INCLUDES})
138
  SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} src/os/win)
139

    
140
  SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} winmm)
141

    
142
  # Try to find ASIO SDK (assumes that portaudio and asiosdk folders are side-by-side, see
143
  # http://www.portaudio.com/trac/wiki/TutorialDir/Compile/WindowsASIOMSVC)
144
  FIND_PACKAGE(ASIOSDK)
145
  IF(ASIOSDK_FOUND)
146
    OPTION(PA_USE_ASIO "Enable support for ASIO" ON)
147
  ELSE()
148
    OPTION(PA_USE_ASIO "Enable support for ASIO" OFF)
149
  ENDIF()
150
  IF(PA_USE_ASIO)
151
    SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ASIOSDK_ROOT_DIR}/common)
152
    SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ASIOSDK_ROOT_DIR}/host)
153
    SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ASIOSDK_ROOT_DIR}/host/pc)
154
    SET(PA_ASIO_SOURCES src/hostapi/asio/pa_asio.cpp src/hostapi/asio/iasiothiscallresolver.cpp)
155
    SET(PA_ASIOSDK_SOURCES ${ASIOSDK_ROOT_DIR}/common/asio.cpp ${ASIOSDK_ROOT_DIR}/host/pc/asiolist.cpp ${ASIOSDK_ROOT_DIR}/host/asiodrivers.cpp)
156
    SOURCE_GROUP("hostapi\\ASIO" FILES ${PA_ASIO_SOURCES})
157
    SOURCE_GROUP("hostapi\\ASIO\\ASIOSDK" FILES ${PA_ASIOSDK_SOURCES})
158
    SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_asio.h)
159
    SET(PA_SOURCES ${PA_SOURCES} ${PA_ASIO_SOURCES})
160
    SET(PA_NON_UNICODE_SOURCES ${PA_NON_UNICODE_SOURCES} ${PA_ASIOSDK_SOURCES})
161
    SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ole32 uuid)
162
  ELSE()
163
    # Set variables for DEF file expansion
164
    SET(DEF_EXCLUDE_ASIO_SYMBOLS ";")
165
  ENDIF()
166

    
167
  # Try to find DirectX SDK
168
  FIND_PACKAGE(DXSDK)
169
  IF(DXSDK_FOUND)
170
    OPTION(PA_USE_DS "Enable support for DirectSound" ON)
171
  ELSE()
172
    OPTION(PA_USE_DS "Enable support for DirectSound" OFF)
173
  ENDIF()
174
  IF(PA_USE_DS)
175
    OPTION(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" ON)
176
    MARK_AS_ADVANCED(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
177
    IF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
178
      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE)
179
    ENDIF()
180
    SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${DXSDK_INCLUDE_DIR})
181
    SET(PA_DS_INCLUDES src/hostapi/dsound/pa_win_ds_dynlink.h)
182
    SET(PA_DS_SOURCES src/hostapi/dsound/pa_win_ds.c src/hostapi/dsound/pa_win_ds_dynlink.c)
183
    SOURCE_GROUP("hostapi\\dsound" FILES ${PA_DS_INCLUDES} ${PA_DS_SOURCES})
184
    SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_ds.h)
185
    SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_DS_INCLUDES})
186
    SET(PA_SOURCES ${PA_SOURCES} ${PA_DS_SOURCES})
187

    
188
    # If we use DirectSound, we need this for the library to be found (if not in VS project settings)
189
    IF(DXSDK_FOUND)
190
      SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${DXSDK_DSOUND_LIBRARY})
191
    ENDIF()
192
  ENDIF()
193

    
194
  OPTION(PA_USE_WMME "Enable support for MME" ON)
195
  IF(PA_USE_WMME)
196
    SET(PA_WMME_SOURCES src/hostapi/wmme/pa_win_wmme.c)
197
    SOURCE_GROUP("hostapi\\wmme" FILES ${PA_WMME_SOURCES})
198
    SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_wmme.h)
199
    SET(PA_SOURCES ${PA_SOURCES} ${PA_WMME_SOURCES})
200
    SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ole32 uuid)
201
  ENDIF()
202

    
203
  IF(MSVS)
204
    OPTION(PA_USE_WASAPI "Enable support for WASAPI" ON)
205
  ELSE()
206
    # I was unable to get WASAPI to compile outside of Visual Studio. If
207
    # anyone can figure out how to make this work with MinGW, please fix me.
208
    SET(PA_USE_WASAPI OFF)
209
  ENDIF()
210
  IF(PA_USE_WASAPI)
211
    SET(PA_WASAPI_SOURCES src/hostapi/wasapi/pa_win_wasapi.c)
212
    SOURCE_GROUP("hostapi\\wasapi" FILES ${PA_WASAPI_SOURCES})
213
    SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_wasapi.h)
214
    SET(PA_SOURCES ${PA_SOURCES} ${PA_WASAPI_SOURCES})
215
    SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ole32 uuid)
216
    IF(NOT MSVC)
217
      SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} src/hostapi/wasapi/mingw-include)
218
    ENDIF()
219
  ELSE()
220
    SET(DEF_EXCLUDE_WASAPI_SYMBOLS ";")
221
  ENDIF()
222

    
223
  OPTION(PA_USE_WDMKS "Enable support for WDMKS" ON)
224
  IF(PA_USE_WDMKS)
225
    SET(PA_WDMKS_SOURCES src/hostapi/wdmks/pa_win_wdmks.c)
226
    SOURCE_GROUP("hostapi\\wdmks" FILES ${PA_WDMKS_SOURCES})
227
    SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_win_wdmks.h)
228
    SET(PA_SOURCES ${PA_SOURCES} ${PA_WDMKS_SOURCES})
229
    SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} setupapi ole32 uuid)
230
  ENDIF()
231

    
232
  OPTION(PA_USE_WDMKS_DEVICE_INFO "Use WDM/KS API for device info" ON)
233
  MARK_AS_ADVANCED(PA_USE_WDMKS_DEVICE_INFO)
234
  IF(PA_USE_WDMKS_DEVICE_INFO)
235
    SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_WDMKS_DEVICE_INFO)
236
  ENDIF()
237

    
238
  SET(GENERATED_MESSAGE "CMake generated file, do NOT edit! Use CMake-GUI to change configuration instead.")
239
  CONFIGURE_FILE(cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY)
240
  CONFIGURE_FILE(cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY)
241
  SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
242
  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PORTAUDIO_CMAKE_GENERATED)
243
  SOURCE_GROUP("cmake_generated" FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
244

    
245
  SET(PA_EXTRA_SHARED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def)
246

    
247
ELSE()
248

    
249
  SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} src/os/unix)
250
  SET(PA_PLATFORM_SOURCES src/os/unix/pa_unix_hostapis.c src/os/unix/pa_unix_util.c)
251
  SOURCE_GROUP("os\\unix" FILES ${PA_PLATFORM_SOURCES})
252
  SET(PA_SOURCES ${PA_SOURCES} ${PA_PLATFORM_SOURCES})
253

    
254
  IF(APPLE)
255

    
256
    SET(CMAKE_MACOSX_RPATH 1)
257
    OPTION(PA_USE_COREAUDIO "Enable support for CoreAudio" ON)
258
    IF(PA_USE_COREAUDIO)
259
      SET(PA_COREAUDIO_SOURCES
260
        src/hostapi/coreaudio/pa_mac_core.c
261
        src/hostapi/coreaudio/pa_mac_core_blocking.c
262
        src/hostapi/coreaudio/pa_mac_core_utilities.c)
263
      SET(PA_COREAUDIO_INCLUDES
264
        src/hostapi/coreaudio/pa_mac_core_blocking.h
265
        src/hostapi/coreaudio/pa_mac_core_utilities.h)
266
      SOURCE_GROUP("hostapi\\coreaudio" FILES ${PA_COREAUDIO_SOURCES} ${PA_COREAUDIO_INCLUDES})
267
      SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_mac_core.h)
268
      SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_COREAUDIO_INCLUDES})
269
      SET(PA_SOURCES ${PA_SOURCES} ${PA_COREAUDIO_SOURCES})
270

    
271
      FIND_LIBRARY(COREAUDIO_LIBRARY CoreAudio REQUIRED)
272
      FIND_LIBRARY(AUDIOTOOLBOX_LIBRARY AudioToolbox REQUIRED)
273
      FIND_LIBRARY(AUDIOUNIT_LIBRARY AudioUnit REQUIRED)
274
      FIND_LIBRARY(CARBON_LIBRARY Carbon REQUIRED)
275
      MARK_AS_ADVANCED(COREAUDIO_LIBRARY AUDIOTOOLBOX_LIBRARY AUDIOUNIT_LIBRARY CARBON_LIBRARY)
276
      SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${COREAUDIO_LIBRARY} ${AUDIOTOOLBOX_LIBRARY} ${AUDIOUNIT_LIBRARY} ${CARBON_LIBRARY})
277
      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_COREAUDIO)
278
      SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon")
279
    ENDIF()
280

    
281
  ELSEIF(UNIX)
282

    
283
    FIND_PACKAGE(Jack)
284
    IF(JACK_FOUND)
285
      OPTION(PA_USE_JACK "Enable support for Jack" ON)
286
    ELSE()
287
      OPTION(PA_USE_JACK "Enable support for Jack" OFF)
288
    ENDIF()
289
    IF(PA_USE_JACK)
290
      SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${JACK_INCLUDE_DIRS})
291
      SET(PA_JACK_SOURCES src/hostapi/jack/pa_jack.c)
292
      SOURCE_GROUP("hostapi\\JACK" FILES ${PA_JACK_SOURCES})
293
      SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_jack.h)
294
      SET(PA_SOURCES ${PA_SOURCES} ${PA_JACK_SOURCES})
295
      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_JACK)
296
      SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${JACK_LIBRARIES})
297
      SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -ljack")
298
    ENDIF()
299

    
300
    FIND_PACKAGE(ALSA)
301
    IF(ALSA_FOUND)
302
      OPTION(PA_USE_ALSA "Enable support for ALSA" ON)
303
    ELSE()
304
      OPTION(PA_USE_ALSA "Enable support for ALSA" OFF)
305
    ENDIF()
306
    IF(PA_USE_ALSA)
307
      SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${ALSA_INCLUDE_DIRS})
308
      SET(PA_ALSA_SOURCES src/hostapi/alsa/pa_linux_alsa.c)
309
      SOURCE_GROUP("hostapi\\ALSA" FILES ${PA_ALSA_SOURCES})
310
      SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_linux_alsa.h)
311
      SET(PA_SOURCES ${PA_SOURCES} ${PA_ALSA_SOURCES})
312
      SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_ALSA)
313
      SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${ALSA_LIBRARIES})
314
      SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -lasound")
315
    ENDIF()
316

    
317
  ENDIF()
318

    
319
  SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -lm -lpthread")
320
  SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} m pthread)
321

    
322
ENDIF()
323

    
324
SOURCE_GROUP("include" FILES ${PA_PUBLIC_INCLUDES})
325

    
326
SET(PA_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_PUBLIC_INCLUDES})
327

    
328
IF(WIN32)
329
  OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
330
  IF(PA_UNICODE_BUILD)
331
    SET_SOURCE_FILES_PROPERTIES(${PA_SOURCES} PROPERTIES COMPILE_DEFINITIONS "UNICODE;_UNICODE")
332
  ENDIF()
333
ENDIF()
334

    
335
OPTION(PA_ENABLE_DEBUG_OUTPUT "Enable debug output for Portaudio" OFF)
336
IF(PA_ENABLE_DEBUG_OUTPUT)
337
  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_ENABLE_DEBUG_OUTPUT)
338
ENDIF()
339

    
340
INCLUDE(TestBigEndian)
341
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
342
IF(IS_BIG_ENDIAN)
343
  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_BIG_ENDIAN)
344
ELSE()
345
  SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_LITTLE_ENDIAN)
346
ENDIF()
347

    
348
ADD_LIBRARY(portaudio SHARED ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES} ${PA_EXTRA_SHARED_SOURCES})
349
SET_PROPERTY(TARGET portaudio APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
350
TARGET_INCLUDE_DIRECTORIES(portaudio PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
351
TARGET_INCLUDE_DIRECTORIES(portaudio PUBLIC include)
352
TARGET_LINK_LIBRARIES(portaudio ${PA_LIBRARY_DEPENDENCIES})
353

    
354
ADD_LIBRARY(portaudio_static STATIC ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES})
355
SET_PROPERTY(TARGET portaudio_static APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
356
TARGET_INCLUDE_DIRECTORIES(portaudio_static PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
357
TARGET_INCLUDE_DIRECTORIES(portaudio_static PUBLIC include)
358
TARGET_LINK_LIBRARIES(portaudio_static ${PA_LIBRARY_DEPENDENCIES})
359

    
360
IF(WIN32 AND MSVC)
361
  OPTION(PA_CONFIG_LIB_OUTPUT_PATH "Make sure that output paths are kept neat" OFF)
362
  IF(CMAKE_CL_64)
363
    SET(TARGET_POSTFIX x64)
364
    IF(PA_CONFIG_LIB_OUTPUT_PATH)
365
      SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/x64)
366
    ENDIF()
367
  ELSE()
368
    SET(TARGET_POSTFIX x86)
369
    IF(PA_CONFIG_LIB_OUTPUT_PATH)
370
      SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin/Win32)
371
    ENDIF()
372
  ENDIF()
373
  SET_TARGET_PROPERTIES(portaudio PROPERTIES OUTPUT_NAME portaudio_${TARGET_POSTFIX} FOLDER "Portaudio")
374
  SET_TARGET_PROPERTIES(portaudio_static PROPERTIES OUTPUT_NAME portaudio_static_${TARGET_POSTFIX} FOLDER "Portaudio")
375
ELSE()
376
  IF(APPLE AND CMAKE_VERSION VERSION_GREATER 3.4.2)
377
    OPTION(PA_OUTPUT_OSX_FRAMEWORK "Generate an OS X framework instead of the simple library" OFF)
378
    IF(PA_OUTPUT_OSX_FRAMEWORK)
379
      SET_TARGET_PROPERTIES(portaudio PROPERTIES
380
        FRAMEWORK TRUE
381
        MACOSX_FRAMEWORK_IDENTIFIER com.portaudio
382
        FRAMEWORK_VERSION A
383
        PUBLIC_HEADER "${PA_PUBLIC_INCLUDES}"
384
        VERSION 19.0
385
        SOVERSION 19.0)
386
    ENDIF()
387
  ENDIF()
388

    
389
  IF(NOT PA_OUTPUT_OSX_FRAMEWORK)
390
    CONFIGURE_FILE(cmake_support/portaudio-2.0.pc.in ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc @ONLY)
391
    INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc DESTINATION lib/pkgconfig)
392
    INSTALL(FILES ${PA_PUBLIC_INCLUDES} DESTINATION include)
393
    INSTALL(TARGETS portaudio DESTINATION lib)
394
  ENDIF()
395
ENDIF()
396

    
397
# Prepared for inclusion of test files
398
OPTION(PA_BUILD_TESTS "Include test projects" OFF)
399
IF(PA_BUILD_TESTS)
400
  SUBDIRS(test)
401
ENDIF()
402

    
403
# Prepared for inclusion of test files
404
OPTION(PA_BUILD_EXAMPLES "Include example projects" OFF)
405
IF(PA_BUILD_EXAMPLES)
406
  SUBDIRS(examples)
407
ENDIF()
408