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