• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cmake_minimum_required (VERSION 3.1..3.18)
2
3# MSVC runtime library flags are selected by an abstraction, CMake >= 3.15
4# This policy still need to be set even with cmake_minimum_required() command above.
5if (POLICY CMP0091)
6	if ((DEFINED ENABLE_STATIC_RUNTIME) AND (DEFINED CMAKE_MSVC_RUNTIME_LIBRARY))
7		message (FATAL_ERROR "Both ENABLE_STATIC_RUNTIME and CMAKE_MSVC_RUNTIME_LIBRARY are set.")
8		return ()
9	endif ()
10
11	if (DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
12		cmake_policy (SET CMP0091 NEW)
13	else ()
14		cmake_policy (SET CMP0091 OLD)
15	endif ()
16endif ()
17
18project(libsndfile VERSION 1.0.31)
19
20#
21# Variables
22#
23
24set (CMAKE_C_STANDARD 99)
25set (CMAKE_C_STANDARD_REQUIRED TRUE)
26set_property(GLOBAL PROPERTY USE_FOLDERS ON)
27
28set (PACKAGE_NAME ${PROJECT_NAME})
29set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
30set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
31set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
32set (CPACK_PACKAGE_VERSION_STAGE "")
33set (CPACK_PACKAGE_VERSION_FULL "${PROJECT_VERSION}${CPACK_PACKAGE_VERSION_STAGE}")
34
35#
36# System-wide includes
37#
38
39include (GNUInstallDirs)
40include (FeatureSummary)
41include (CMakeDependentOption)
42include (CTest)
43include (CheckCCompilerFlag)
44
45#
46# Options
47#
48
49option (BUILD_SHARED_LIBS "Build shared libraries" OFF)
50if (BUILD_SHARED_LIBS AND BUILD_TESTING)
51	set (BUILD_TESTING OFF)
52	message ("Build testing required static libraries. To prevent build errors BUILD_TESTING disabled.")
53endif ()
54option (BUILD_PROGRAMS "Build programs" ON)
55option (BUILD_EXAMPLES "Build examples" ON)
56option (ENABLE_CPACK "Enable CPack support" ON)
57option (ENABLE_EXPERIMENTAL "Enable experimental code" OFF)
58option (ENABLE_BOW_DOCS "Enable black-on-white html docs" OFF)
59if (MSVC AND (DEFINED ENABLE_STATIC_RUNTIME))
60	option (ENABLE_STATIC_RUNTIME "Enable static runtime" ${ENABLE_STATIC_RUNTIME})
61elseif (MINGW)
62	option (ENABLE_STATIC_RUNTIME "Enable static runtime" OFF)
63endif ()
64option (ENABLE_PACKAGE_CONFIG "Generate and install package config file" ON)
65option (INSTALL_PKGCONFIG_MODULE "Generate and install pkg-config module" ON)
66
67list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
68if (CMAKE_VERSION VERSION_LESS 3.14)
69	list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/sqlite")
70endif ()
71
72#
73# Setup definitions
74#
75
76include(SndFileChecks)
77
78
79cmake_dependent_option (BUILD_REGTEST "Build regtest" ON "SQLITE3_FOUND" OFF)
80cmake_dependent_option (ENABLE_EXTERNAL_LIBS "Enable FLAC, Vorbis, and Opus codecs" ON "Vorbis_FOUND;FLAC_FOUND;OPUS_FOUND" OFF)
81cmake_dependent_option (ENABLE_CPU_CLIP "Enable tricky cpu specific clipper" ON "CPU_CLIPS_POSITIVE;CPU_CLIPS_NEGATIVE" OFF)
82if (NOT ENABLE_CPU_CLIP)
83	set (CPU_CLIPS_POSITIVE FALSE)
84	set (CPU_CLIPS_NEGATIVE FALSE)
85endif ()
86cmake_dependent_option (ENABLE_COMPATIBLE_LIBSNDFILE_NAME "Set DLL name to libsndfile-1.dll (canonical name), sndfile.dll otherwise" OFF "WIN32;BUILD_SHARED_LIBS" OFF)
87cmake_dependent_option (INSTALL_MANPAGES "Install man pages for programs" ON "BUILD_PROGRAMS" OFF)
88
89if (NOT MSVC)
90	if (CPU_IS_X86)
91		check_c_compiler_flag (-msse2 HAVE_MSSE2_COMPILER_FLAG)
92		if (HAVE_MSSE2_COMPILER_FLAG)
93			cmake_dependent_option (ENABLE_SSE2 "Add SSE2 compiler flag" ON "HAVE_MSSE2_COMPILER_FLAG" OFF)
94		endif ()
95	endif ()
96endif ()
97if (ENABLE_SSE2)
98	add_compile_options (-msse2)
99endif ()
100
101set (HAVE_EXTERNAL_XIPH_LIBS ${ENABLE_EXTERNAL_LIBS})
102set (HAVE_SQLITE3 ${BUILD_REGTEST})
103set (HAVE_ALSA_ASOUNDLIB_H ${ALSA_FOUND})
104set (HAVE_SNDIO_H ${SNDIO_FOUND})
105
106set (ENABLE_EXPERIMENTAL_CODE ${ENABLE_EXPERIMENTAL})
107set (HAVE_SPEEX ${ENABLE_EXPERIMENTAL})
108set (HAVE_OPUS ${ENABLE_EXPERIMENTAL})
109
110add_feature_info (BUILD_SHARED_LIBS BUILD_SHARED_LIBS "build shared libraries")
111add_feature_info (ENABLE_EXTERNAL_LIBS ENABLE_EXTERNAL_LIBS "enable FLAC, Vorbis, and Opus codecs")
112add_feature_info (ENABLE_EXPERIMENTAL ENABLE_EXPERIMENTAL "enable experimental code")
113add_feature_info (BUILD_TESTING BUILD_TESTING "build tests")
114add_feature_info (BUILD_REGTEST BUILD_REGTEST "build regtest")
115add_feature_info (ENABLE_CPACK ENABLE_CPACK "enable CPack support")
116add_feature_info (ENABLE_CPU_CLIP ENABLE_CPU_CLIP "Enable tricky cpu specific clipper")
117add_feature_info (ENABLE_BOW_DOCS ENABLE_BOW_DOCS "enable black-on-white html docs")
118add_feature_info (ENABLE_PACKAGE_CONFIG ENABLE_PACKAGE_CONFIG "generate and install package config file")
119add_feature_info (INSTALL_PKGCONFIG_MODULE INSTALL_PKGCONFIG_MODULE "generate and install pkg-config module")
120add_feature_info (INSTALL_MANPAGES INSTALL_MANPAGES "install man pages for programs")
121if (WIN32 AND BUILD_SHARED_LIBS)
122	add_feature_info (ENABLE_COMPATIBLE_LIBSNDFILE_NAME ENABLE_COMPATIBLE_LIBSNDFILE_NAME "Set DLL name to libsndfile-1.dll (canonical name), sndfile.dll otherwise")
123endif ()
124
125if (HAVE_MSSE2_COMPILER_FLAG)
126	add_feature_info (ENABLE_SSE2 ENABLE_SSE2 "add SSE2 compiler flag")
127endif ()
128
129
130
131
132set_package_properties (Ogg PROPERTIES
133	TYPE RECOMMENDED
134	URL "www.xiph.org/ogg/"
135	DESCRIPTION "library for manipulating ogg bitstreams"
136	PURPOSE "Required to enable Vorbis, Speex, and Opus support"
137	)
138set_package_properties (Vorbis PROPERTIES
139	TYPE RECOMMENDED
140	URL "www.vorbis.com/"
141	DESCRIPTION "open source lossy audio codec"
142	PURPOSE "Enables Vorbis support"
143	)
144set_package_properties (FLAC PROPERTIES
145	TYPE RECOMMENDED
146	URL "www.xiph.org/flac/"
147	DESCRIPTION "Free Lossless Audio Codec Library"
148	PURPOSE "Enables FLAC support"
149	)
150set_package_properties(Opus PROPERTIES
151	TYPE RECOMMENDED
152	URL	"www.opus-codec.org/"
153	DESCRIPTION "Standardized open source low-latency fullband codec"
154	PURPOSE	"Enables experimental Opus support"
155	)
156set_package_properties(Speex PROPERTIES TYPE OPTIONAL
157	URL "www.speex.org/"
158	DESCRIPTION "an audio codec tuned for speech"
159	PURPOSE "Enables experemental Speex support"
160	)
161set_package_properties (SQLite3 PROPERTIES
162	TYPE OPTIONAL
163	URL "www.sqlite.org/"
164	DESCRIPTION "light weight SQL database engine."
165	PURPOSE "Enables regtest"
166	)
167if (BUILD_SHARED_LIBS)
168	set_package_properties (PythonInterp PROPERTIES
169		TYPE REQUIRED
170		URL "www.python.org/"
171		DESCRIPTION "Python is a widely used high-level programming language."
172		PURPOSE "Required to build shared libraries"
173		)
174endif()
175
176feature_summary (WHAT ALL)
177
178#
179# Setup configuration
180#
181
182configure_file (src/config.h.cmake src/config.h)
183
184configure_file (include/sndfile.h.in include/sndfile.h)
185
186if (INSTALL_PKGCONFIG_MODULE)
187
188	set (prefix ${CMAKE_INSTALL_PREFIX})
189	set (exec_prefix "\$\{prefix\}")
190	set (libdir "\$\{prefix\}/${CMAKE_INSTALL_LIBDIR}")
191	set (includedir "\$\{prefix\}/${CMAKE_INSTALL_INCLUDEDIR}")
192	set (VERSION ${PROJECT_VERSION})
193	if (ENABLE_EXTERNAL_LIBS)
194		set (EXTERNAL_XIPH_REQUIRE "flac ogg vorbis vorbisenc opus")
195		if (ENABLE_EXPERIMENTAL)
196			set (EXTERNAL_XIPH_REQUIRE "${EXTERNAL_XIPH_REQUIRE} speex")
197		endif ()
198	endif ()
199
200	configure_file (sndfile.pc.in sndfile.pc @ONLY)
201
202endif ()
203
204#
205# libsndfile
206#
207
208# Public libsndfile headers
209set (sndfile_HDRS
210	include/sndfile.hh
211	${CMAKE_CURRENT_BINARY_DIR}/include/sndfile.h
212	)
213
214#
215# libsndfile static library
216#
217
218add_library (sndfile
219	src/sfconfig.h
220	src/sfendian.h
221	src/sf_unistd.h
222	src/common.h
223	src/common.c
224	src/file_io.c
225	src/command.c
226	src/pcm.c
227	src/ulaw.c
228	src/alaw.c
229	src/float32.c
230	src/double64.c
231	src/ima_adpcm.c
232	src/ms_adpcm.c
233	src/gsm610.c
234	src/dwvw.c
235	src/vox_adpcm.c
236	src/interleave.c
237	src/strings.c
238	src/dither.c
239	src/cart.c
240	src/broadcast.c
241	src/audio_detect.c
242 	src/ima_oki_adpcm.c
243	src/ima_oki_adpcm.h
244	src/alac.c
245	src/chunk.c
246	src/ogg.h
247	src/ogg.c
248	src/chanmap.h
249	src/chanmap.c
250	src/id3.c
251	$<$<BOOL:${WIN32}>:src/windows.c>
252	src/sndfile.c
253	src/aiff.c
254	src/au.c
255	src/avr.c
256	src/caf.c
257	src/dwd.c
258	src/flac.c
259	src/g72x.c
260	src/htk.c
261	src/ircam.c
262	src/macos.c
263	src/mat4.c
264	src/mat5.c
265	src/nist.c
266	src/paf.c
267	src/pvf.c
268	src/raw.c
269	src/rx2.c
270	src/sd2.c
271	src/sds.c
272	src/svx.c
273	src/txw.c
274	src/voc.c
275	src/wve.c
276	src/w64.c
277	src/wavlike.h
278	src/wavlike.c
279	src/wav.c
280	src/xi.c
281	src/mpc2k.c
282	src/rf64.c
283	src/ogg_vorbis.c
284	src/ogg_speex.c
285	src/ogg_pcm.c
286	src/ogg_opus.c
287	src/ogg_vcomment.c
288	src/nms_adpcm.c
289	src/GSM610/config.h
290	src/GSM610/gsm.h
291	src/GSM610/gsm610_priv.h
292	src/GSM610/add.c
293	src/GSM610/code.c
294	src/GSM610/decode.c
295	src/GSM610/gsm_create.c
296	src/GSM610/gsm_decode.c
297	src/GSM610/gsm_destroy.c
298	src/GSM610/gsm_encode.c
299	src/GSM610/gsm_option.c
300	src/GSM610/long_term.c
301	src/GSM610/lpc.c
302	src/GSM610/preprocess.c
303	src/GSM610/rpe.c
304	src/GSM610/short_term.c
305	src/GSM610/table.c
306	src/G72x/g72x.h
307	src/G72x/g72x_priv.h
308	src/G72x/g721.c
309	src/G72x/g723_16.c
310	src/G72x/g723_24.c
311	src/G72x/g723_40.c
312	src/G72x/g72x.c
313	src/ALAC/ALACAudioTypes.h
314	src/ALAC/ALACBitUtilities.h
315	src/ALAC/EndianPortable.h
316	src/ALAC/aglib.h
317	src/ALAC/dplib.h
318	src/ALAC/matrixlib.h
319	src/ALAC/alac_codec.h
320	src/ALAC/shift.h
321	src/ALAC/ALACBitUtilities.c
322	src/ALAC/ag_dec.c
323	src/ALAC/ag_enc.c
324	src/ALAC/dp_dec.c
325	src/ALAC/dp_enc.c
326	src/ALAC/matrix_dec.c
327	src/ALAC/matrix_enc.c
328	src/ALAC/alac_decoder.c
329	src/ALAC/alac_encoder.c
330	${sndfile_HDRS}
331	${CMAKE_CURRENT_BINARY_DIR}/src/config.h
332	)
333
334add_library (SndFile::sndfile ALIAS sndfile)
335
336target_include_directories (sndfile
337	PUBLIC
338		$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
339		$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
340		$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
341	PRIVATE
342		src
343		$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/src>
344	)
345target_link_libraries (sndfile
346	PRIVATE
347		$<$<BOOL:${LIBM_REQUIRED}>:m>
348		$<$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>:Vorbis::vorbisenc>
349		$<$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>:FLAC::FLAC>
350		$<$<AND:$<BOOL:${ENABLE_EXPERIMENTAL}>,$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>,$<BOOL:${HAVE_SPEEX}>>:Speex::Speex>
351		$<$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>:Opus::opus>
352	)
353set_target_properties (sndfile PROPERTIES
354	PUBLIC_HEADER "${sndfile_HDRS}"
355	)
356
357if (ENABLE_COMPATIBLE_LIBSNDFILE_NAME)
358	if (MINGW OR CYGWIN)
359		set_target_properties (sndfile PROPERTIES
360			RUNTIME_OUTPUT_NAME "sndfile-1"
361			)
362	else ()
363		set_target_properties (sndfile PROPERTIES
364			RUNTIME_OUTPUT_NAME "libsndfile-1"
365			)
366	endif ()
367endif ()
368
369if (BUILD_SHARED_LIBS)
370
371	if (WIN32)
372		set (VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR})
373		set (GEN_TOOL cmake)
374
375		set (WIN_RC_VERSION "${CPACK_PACKAGE_VERSION_MAJOR},${CPACK_PACKAGE_VERSION_MINOR},${CPACK_PACKAGE_VERSION_PATCH}")
376		set (CLEAN_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
377		set (PACKAGE_VERSION ${CPACK_PACKAGE_VERSION})
378
379		configure_file (src/version-metadata.rc.in src/version-metadata.rc @ONLY)
380		target_sources (sndfile PRIVATE ${PROJECT_BINARY_DIR}/src/version-metadata.rc)
381	endif ()
382
383	set_target_properties (sndfile PROPERTIES
384		SOVERSION ${PROJECT_VERSION_MAJOR}
385		VERSION ${PROJECT_VERSION}
386		)
387
388	# Symbol files generation
389
390	if (WIN32)
391		set (SYMBOL_FILENAME "sndfile.def")
392		set (SYMBOL_OS "win32")
393	elseif ((CMAKE_SYSTEM_NAME MATCHES "Darwin") OR (CMAKE_SYSTEM_NAME MATCHES "Rhapsody"))
394		set (SYMBOL_FILENAME "Symbols.darwin")
395		set (SYMBOL_OS "darwin")
396	elseif (CMAKE_SYSTEM_NAME MATCHES "OS2")
397		set (SYMBOL_FILENAME "Symbols.os2")
398		set (SYMBOL_OS "os2")
399	elseif (UNIX)
400		set (SYMBOL_FILENAME "Symbols.gnu-binutils")
401		set (SYMBOL_OS "linux")
402	endif ()
403
404	if (DEFINED SYMBOL_OS)
405		add_custom_command (
406			OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}
407			COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/src/create_symbols_file.py ${SYMBOL_OS} ${PROJECT_VERSION} > ${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}
408			COMMENT "Generating ${SYMBOL_FILENAME}..."
409			)
410
411		add_custom_target (GENFILES DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME})
412		if (SYMBOL_OS MATCHES "win32")
413			target_sources (sndfile
414				PRIVATE
415					${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}
416				)
417		elseif (SYMBOL_OS MATCHES "darwin")
418			add_dependencies (sndfile GENFILES)
419			if (CMAKE_VERSION VERSION_LESS 3.13)
420				set_property (TARGET sndfile APPEND_STRING PROPERTY
421					LINK_FLAGS "-Wl,-exported_symbols_list -Wl,${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}"
422					)
423			else ()
424				target_link_options (sndfile PRIVATE "LINKER:-exported_symbols_list,${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}")
425			endif()
426		elseif (SYMBOL_OS MATCHES "os")
427			add_dependencies (sndfile GENFILES)
428			if (CMAKE_VERSION VERSION_LESS 3.13)
429				set_property (TARGET sndfile APPEND_STRING PROPERTY
430					LINK_FLAGS "-Wl,-export-symbols ${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}"
431					)
432			else ()
433				target_link_options (sndfile PRIVATE "LINKER:-export-symbols ${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}")
434			endif()
435		elseif (UNIX)
436			add_dependencies (sndfile GENFILES)
437			if (CMAKE_VERSION VERSION_LESS 3.13)
438				set_property (TARGET sndfile APPEND_STRING PROPERTY
439					LINK_FLAGS "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}"
440					)
441			else ()
442				target_link_options (sndfile PRIVATE "LINKER:--version-script,${CMAKE_CURRENT_BINARY_DIR}/src/${SYMBOL_FILENAME}")
443			endif()
444		endif()
445	endif()
446
447endif ()
448
449#
450# Programs
451#
452
453if (BUILD_PROGRAMS)
454
455# sndfile-info
456
457	add_executable (sndfile-info
458		programs/sndfile-info.c
459		programs/common.c
460		programs/common.h
461		)
462	target_link_libraries (sndfile-info
463		PRIVATE
464			sndfile
465			$<$<BOOL:${LIBM_REQUIRED}>:m>
466		)
467
468# sndfile-play
469
470	add_executable (sndfile-play
471		$<$<NOT:$<BOOL:${BEOS}>>:programs/sndfile-play.c>
472		$<$<NOT:$<BOOL:${BEOS}>>:programs/common.c>
473		$<$<NOT:$<BOOL:${BEOS}>>:programs/sndfile-play.c>
474		$<$<BOOL:${BEOS}>:programs/sndfile-play-beos.cpp>
475		)
476	target_include_directories (sndfile-play
477		PRIVATE
478			src
479			${CMAKE_CURRENT_BINARY_DIR}/src
480		)
481	target_link_libraries (sndfile-play PRIVATE $<$<BOOL:${LIBM_REQUIRED}>:m>)
482	target_link_libraries (sndfile-play PRIVATE sndfile)
483	if (WIN32)
484		target_link_libraries(sndfile-play PRIVATE winmm)
485	# Maybe ALSA & Sndio are present in BeOS. They are not required
486	# so skip them anyway.
487	elseif ((NOT BEOS) AND ALSA_FOUND)
488		target_include_directories (sndfile-play PRIVATE ${ALSA_INCLUDE_DIRS})
489		target_link_libraries (sndfile-play PRIVATE ${ALSA_LIBRARIES})
490	elseif (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
491		target_link_libraries (sndfile-play PRIVATE Sndio::Sndio)
492	endif ()
493
494# sndfile-convert
495
496	add_executable (sndfile-convert
497		programs/sndfile-convert.c
498		programs/common.c
499		programs/common.h
500		)
501	target_link_libraries (sndfile-convert PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
502
503# sndfile-cmp
504
505	add_executable (sndfile-cmp
506		programs/sndfile-cmp.c
507		programs/common.c
508		programs/common.h
509		)
510	target_include_directories (sndfile-cmp
511		PUBLIC
512			src
513			${CMAKE_CURRENT_BINARY_DIR}/src
514			${CMAKE_CURRENT_BINARY_DIR}/tests
515		)
516	target_link_libraries (sndfile-cmp PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
517
518# sndfile-metadata-set
519
520	add_executable (sndfile-metadata-set
521		programs/sndfile-metadata-set.c
522		programs/common.c
523		programs/common.h
524		)
525	target_include_directories (sndfile-metadata-set
526		PUBLIC
527			src
528			${CMAKE_CURRENT_BINARY_DIR}/src
529			${CMAKE_CURRENT_BINARY_DIR}/tests
530		)
531	target_link_libraries (sndfile-metadata-set PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
532
533# sndfile-metadata-get
534
535	add_executable (sndfile-metadata-get
536		programs/sndfile-metadata-get.c
537		programs/common.c
538		programs/common.h
539		)
540	target_include_directories (sndfile-metadata-get
541		PUBLIC
542			src
543			${CMAKE_CURRENT_BINARY_DIR}/src
544			${CMAKE_CURRENT_BINARY_DIR}/tests
545		)
546	target_link_libraries (sndfile-metadata-get PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
547
548# sndfile-interleave
549
550	add_executable (sndfile-interleave
551		programs/sndfile-interleave.c
552		programs/common.c
553		programs/common.h
554		)
555	target_link_libraries (sndfile-interleave PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
556
557# sndfile-deinterleave
558
559	add_executable (sndfile-deinterleave
560		programs/sndfile-deinterleave.c
561		programs/common.c
562		programs/common.h
563		)
564	target_link_libraries (sndfile-deinterleave PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
565
566# sndfile-concat
567
568	add_executable (sndfile-concat
569		programs/sndfile-concat.c
570		programs/common.c
571		programs/common.h
572		)
573	target_link_libraries (sndfile-concat PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
574
575# sndfile-salvage
576
577	add_executable (sndfile-salvage
578		programs/sndfile-salvage.c
579		programs/common.c
580		programs/common.h
581		)
582	target_include_directories (sndfile-salvage
583		PUBLIC
584			src
585			${CMAKE_CURRENT_BINARY_DIR}/src
586			${CMAKE_CURRENT_BINARY_DIR}/tests
587		)
588	target_link_libraries (sndfile-salvage PRIVATE sndfile $<$<BOOL:${LIBM_REQUIRED}>:m>)
589
590	set (SNDFILE_PROGRAM_TARGETS
591		sndfile-info
592		sndfile-play
593		sndfile-convert
594		sndfile-cmp
595		sndfile-metadata-set
596		sndfile-metadata-get
597		sndfile-interleave
598		sndfile-deinterleave
599		sndfile-concat
600		sndfile-salvage
601		)
602
603	set_target_properties(${SNDFILE_PROGRAM_TARGETS} PROPERTIES FOLDER Programs)
604
605endif ()
606
607#
608# Examples
609#
610
611if (BUILD_EXAMPLES)
612
613# sndfile-to-text
614
615	add_executable (sndfile-to-text examples/sndfile-to-text.c)
616	target_link_libraries (sndfile-to-text PRIVATE sndfile)
617
618# sndfile-loopify
619
620	add_executable (sndfile-loopify examples/sndfile-loopify.c)
621	target_link_libraries (sndfile-loopify PRIVATE sndfile)
622
623# make_sine
624
625	add_executable (make_sine examples/make_sine.c)
626	target_link_libraries (make_sine
627		PRIVATE
628			sndfile
629			$<$<BOOL:${LIBM_REQUIRED}>:m>
630		)
631
632# sfprocess
633
634	add_executable (sfprocess examples/sfprocess.c)
635	target_link_libraries (sfprocess
636		PRIVATE
637			sndfile
638			$<$<BOOL:${LIBM_REQUIRED}>:m>
639		)
640
641# list_formats
642
643	add_executable (list_formats examples/list_formats.c)
644	target_link_libraries (list_formats
645		PRIVATE
646			sndfile
647			$<$<BOOL:${LIBM_REQUIRED}>:m>
648		)
649
650# sndfilehandle
651
652	add_executable (sndfilehandle examples/sndfilehandle.cc)
653	target_link_libraries (sndfilehandle PUBLIC sndfile)
654
655	set (SNDFILE_EXAMPLE_TARGETS
656		sndfile-to-text
657		sndfile-loopify
658		make_sine
659		sfprocess
660		list_formats
661		sndfilehandle
662		)
663
664	set_target_properties(${SNDFILE_EXAMPLE_TARGETS} PROPERTIES FOLDER Examples)
665
666
667endif ()
668
669#
670# sndfile-regtest
671#
672
673if (BUILD_REGTEST)
674
675	add_executable (sndfile-regtest
676		regtest/sndfile-regtest.c
677		regtest/database.c
678		regtest/checksum.c
679		)
680	target_include_directories (sndfile-regtest
681		PUBLIC
682			src
683			${CMAKE_CURRENT_BINARY_DIR}/src
684			${CMAKE_CURRENT_BINARY_DIR}/tests
685		)
686	target_link_libraries(sndfile-regtest
687		PRIVATE
688			sndfile
689			SQLite::SQLite3
690			$<$<BOOL:${LIBM_REQUIRED}>:m>
691		)
692
693endif ()
694
695#
696# Installation
697#
698
699if (ENABLE_PACKAGE_CONFIG)
700
701	if (WIN32 AND (NOT MINGW) AND (NOT CYGWIN))
702		set (CMAKE_INSTALL_PACKAGEDIR cmake)
703	 else ()
704	 	set (CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/SndFile)
705	 endif()
706
707	 install (TARGETS ${SNDFILE_PROGRAM_TARGETS}
708		RUNTIME DESTINATION			${CMAKE_INSTALL_BINDIR}
709 	)
710
711	install (TARGETS sndfile
712		EXPORT SndFileTargets
713		RUNTIME DESTINATION			${CMAKE_INSTALL_BINDIR}
714		ARCHIVE DESTINATION			${CMAKE_INSTALL_LIBDIR}
715		LIBRARY DESTINATION			${CMAKE_INSTALL_LIBDIR}
716		PUBLIC_HEADER DESTINATION	${CMAKE_INSTALL_INCLUDEDIR}
717	)
718
719	include (CMakePackageConfigHelpers)
720
721	if (ENABLE_EXTERNAL_LIBS)
722		set (SndFile_WITH_EXTERNAL_LIBS 1)
723	else ()
724		set (SndFile_WITH_EXTERNAL_LIBS 0)
725	endif ()
726
727	set (INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
728	configure_package_config_file(cmake/SndFileConfig.cmake.in SndFileConfig.cmake
729		INSTALL_DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}
730		PATH_VARS INCLUDE_INSTALL_DIR
731		)
732	write_basic_package_version_file (SndFileConfigVersion.cmake COMPATIBILITY SameMajorVersion)
733
734	install(EXPORT SndFileTargets
735		NAMESPACE SndFile::
736		DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}
737		)
738	install(
739		FILES
740			${CMAKE_CURRENT_BINARY_DIR}/SndFileConfig.cmake
741			${CMAKE_CURRENT_BINARY_DIR}/SndFileConfigVersion.cmake
742		DESTINATION	${CMAKE_INSTALL_PACKAGEDIR}
743		)
744
745else ()
746
747	install (TARGETS sndfile ${sdnfile_PROGRAMS}
748		RUNTIME DESTINATION			${CMAKE_INSTALL_BINDIR}
749		ARCHIVE DESTINATION			${CMAKE_INSTALL_LIBDIR}
750		LIBRARY DESTINATION			${CMAKE_INSTALL_LIBDIR}
751		PUBLIC_HEADER DESTINATION	${CMAKE_INSTALL_INCLUDEDIR})
752
753endif ()
754
755if (INSTALL_MANPAGES)
756
757	set (man_MANS
758		man/sndfile-info.1
759		man/sndfile-play.1
760		man/sndfile-convert.1
761		man/sndfile-cmp.1
762		man/sndfile-metadata-get.1
763		man/sndfile-concat.1
764		man/sndfile-interleave.1
765		man/sndfile-salvage.1
766		)
767	install (FILES ${man_MANS} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
768	install (FILES man/sndfile-metadata-get.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME sndfile-metadata-set.1)
769	install (FILES man/sndfile-interleave.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME sndfile-deinterleave.1)
770endif ()
771
772if (ENABLE_BOW_DOCS)
773	set (HTML_BGCOLOUR "white")
774	set (HTML_FGCOLOUR "black")
775else ()
776	set (HTML_BGCOLOUR "black")
777	set (HTML_FGCOLOUR "white")
778endif ()
779set (dist_doc_DATA
780	docs/index.md
781	docs/libsndfile.jpg
782	docs/libsndfile.css
783	docs/print.css
784	docs/api.md
785	docs/command.md
786	docs/bugs.md
787	docs/formats.md
788	docs/sndfile_info.md
789	docs/new_file_type_howto.md
790	docs/win32.md
791	docs/FAQ.md
792	docs/lists.md
793	docs/embedded_files.md
794	docs/octave.md
795	docs/tutorial.md
796	)
797install (FILES ${dist_doc_DATA} DESTINATION ${CMAKE_INSTALL_DOCDIR})
798
799if (INSTALL_PKGCONFIG_MODULE)
800	install (FILES ${CMAKE_CURRENT_BINARY_DIR}/sndfile.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
801endif ()
802
803#
804# Testing
805#
806
807if (BUILD_TESTING)
808
809	enable_testing ()
810
811	include (CMakeAutoGen)
812
813	# generate tests sources from autogen templates
814	lsf_autogen (tests benchmark c)
815	lsf_autogen (tests floating_point_test c)
816	lsf_autogen (tests header_test c)
817	lsf_autogen (tests pcm_test c)
818	lsf_autogen (tests pipe_test c)
819	lsf_autogen (tests rdwr_test c)
820	lsf_autogen (tests scale_clip_test c)
821	lsf_autogen (tests utils c h)
822	lsf_autogen (tests write_read_test c)
823	lsf_autogen (src test_endswap c)
824
825	# utils static library
826	add_library(test_utils STATIC tests/utils.c)
827	target_include_directories (test_utils
828		PUBLIC
829			src
830			${CMAKE_CURRENT_BINARY_DIR}/src
831			${CMAKE_CURRENT_BINARY_DIR}/tests
832		)
833	target_link_libraries(test_utils PRIVATE sndfile)
834
835	### test_main
836
837	add_executable (test_main
838		src/test_main.c
839		src/test_main.h
840		src/test_conversions.c
841		src/test_float.c
842		src/test_endswap.c
843		src/test_audio_detect.c
844		src/test_log_printf.c
845		src/test_file_io.c
846		src/test_ima_oki_adpcm.c
847		src/test_strncpy_crlf.c
848		src/test_broadcast_var.c
849		src/test_cart_var.c
850		src/test_binheader_writef.c
851		src/test_nms_adpcm.c
852		)
853	target_include_directories (test_main
854		PUBLIC
855			src
856			${CMAKE_CURRENT_BINARY_DIR}/src
857			${CMAKE_CURRENT_BINARY_DIR}/tests
858		)
859	target_link_libraries (test_main PRIVATE sndfile)
860	if (MSVC)
861		target_compile_definitions (test_main PRIVATE _USE_MATH_DEFINES)
862	endif ()
863	add_test (test_main test_main)
864
865	### sfversion_test
866
867	add_executable (sfversion tests/sfversion.c)
868	target_include_directories (sfversion
869		PRIVATE
870			src
871			${CMAKE_CURRENT_BINARY_DIR}/src
872		)
873	target_link_libraries (sfversion sndfile)
874	add_test (sfversion sfversion)
875	set_tests_properties (sfversion PROPERTIES
876		PASS_REGULAR_EXPRESSION "${PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_FULL}"
877		)
878
879	### error_test
880
881	add_executable (error_test tests/error_test.c)
882	target_link_libraries (error_test
883		PRIVATE
884			sndfile
885			test_utils
886			$<$<BOOL:${LIBM_REQUIRED}>:m>
887		)
888	add_test (error_test error_test)
889
890	### ulaw_test
891	add_executable (ulaw_test tests/ulaw_test.c)
892	target_link_libraries (ulaw_test
893		PRIVATE
894			sndfile
895			test_utils
896			$<$<BOOL:${LIBM_REQUIRED}>:m>
897		)
898	add_test (ulaw_test ulaw_test)
899
900	### alaw_test
901	add_executable (alaw_test tests/alaw_test.c)
902	target_link_libraries (alaw_test
903		PRIVATE
904			sndfile
905			test_utils
906			$<$<BOOL:${LIBM_REQUIRED}>:m>
907		)
908	add_test (alaw_test alaw_test)
909
910	### dwvw_test
911
912	add_executable (dwvw_test tests/dwvw_test.c)
913	target_link_libraries (dwvw_test
914		PRIVATE
915			sndfile
916			test_utils
917			$<$<BOOL:${LIBM_REQUIRED}>:m>
918		)
919	add_test (dwvw_test dwvw_test)
920
921	### command_test
922
923	add_executable (command_test tests/command_test.c)
924	target_link_libraries (command_test
925		PRIVATE
926			sndfile
927			test_utils
928			$<$<BOOL:${LIBM_REQUIRED}>:m>
929		)
930	add_test (command_test command_test all)
931
932	### floating_point_test
933
934	add_executable (floating_point_test
935		tests/dft_cmp.c
936		tests/floating_point_test.c
937		)
938	target_link_libraries (floating_point_test
939		PRIVATE
940			sndfile
941			test_utils
942			$<$<BOOL:${LIBM_REQUIRED}>:m>
943		)
944	target_include_directories (floating_point_test PRIVATE tests)
945	add_test (floating_point_test floating_point_test)
946
947	### checksum_test
948
949	add_executable (checksum_test tests/checksum_test.c)
950	target_link_libraries (checksum_test
951		PRIVATE
952			sndfile
953			test_utils
954			$<$<BOOL:${LIBM_REQUIRED}>:m>
955		)
956	add_test (checksum_test checksum_test)
957
958	### scale_clip_test
959
960	add_executable (scale_clip_test tests/scale_clip_test.c)
961	target_link_libraries (scale_clip_test
962		PRIVATE
963			sndfile
964			test_utils
965			$<$<BOOL:${LIBM_REQUIRED}>:m>
966		)
967	add_test (scale_clip_test scale_clip_test)
968
969	### headerless_test
970
971	add_executable (headerless_test tests/headerless_test.c)
972	target_link_libraries (headerless_test
973		PRIVATE
974			sndfile
975			test_utils
976			$<$<BOOL:${LIBM_REQUIRED}>:m>
977		)
978	add_test (headerless_test headerless_test)
979
980	### rdwr_test
981
982	add_executable (rdwr_test tests/rdwr_test.c)
983	target_link_libraries (rdwr_test
984		PRIVATE
985			sndfile
986			test_utils
987			$<$<BOOL:${LIBM_REQUIRED}>:m>
988		)
989	add_test (rdwr_test rdwr_test)
990
991	### locale_test
992
993	add_executable (locale_test tests/locale_test.c)
994	target_link_libraries (locale_test
995		PRIVATE
996			sndfile
997			test_utils
998			$<$<BOOL:${LIBM_REQUIRED}>:m>
999		)
1000	add_test (locale_test locale_test)
1001
1002	### win32_ordinal_test
1003
1004# Disabled because we cannot test with shared sndfile library
1005#	if (WIN32 AND BUILD_SHARED_LIBS)
1006#		add_executable (win32_ordinal_test tests/win32_ordinal_test.c)
1007#		target_link_libraries (win32_ordinal_test PRIVATE sndfile test_utils)
1008#		add_test (win32_ordinal_test win32_ordinal_test)
1009#	endif ()
1010
1011	### cpp_test
1012
1013	add_executable (cpp_test tests/cpp_test.cc)
1014	target_link_libraries (cpp_test
1015		PRIVATE
1016			sndfile
1017			test_utils
1018			$<$<BOOL:${LIBM_REQUIRED}>:m>
1019		)
1020	add_test (cpp_test cpp_test)
1021
1022	### external_libs_test
1023
1024	add_executable (external_libs_test tests/external_libs_test.c)
1025	target_link_libraries (external_libs_test
1026		PRIVATE
1027			sndfile
1028			test_utils
1029			$<$<BOOL:${LIBM_REQUIRED}>:m>
1030		)
1031	add_test (external_libs_test external_libs_test)
1032
1033	### format_check_test
1034
1035	add_executable (format_check_test tests/format_check_test.c)
1036	target_link_libraries (format_check_test
1037		PRIVATE
1038			sndfile
1039			test_utils
1040			$<$<BOOL:${LIBM_REQUIRED}>:m>
1041		)
1042	add_test (format_check_test format_check_test)
1043
1044	### channel_test
1045
1046	add_executable (channel_test tests/channel_test.c)
1047	target_link_libraries (channel_test
1048		PRIVATE
1049			sndfile
1050			test_utils
1051			$<$<BOOL:${LIBM_REQUIRED}>:m>
1052		)
1053	add_test (channel_test channel_test)
1054
1055	### pcm_test
1056
1057	add_executable (pcm_test tests/pcm_test.c)
1058	target_link_libraries (pcm_test
1059		PRIVATE
1060			sndfile
1061			test_utils
1062			$<$<BOOL:${LIBM_REQUIRED}>:m>
1063		)
1064	add_test (pcm_test pcm_test)
1065
1066	### common test executables
1067
1068	add_executable (write_read_test
1069		tests/generate.c
1070		tests/write_read_test.c
1071	)
1072	target_link_libraries (write_read_test
1073		PRIVATE
1074			sndfile
1075			test_utils
1076			$<$<BOOL:${LIBM_REQUIRED}>:m>
1077		)
1078	target_include_directories (write_read_test PRIVATE tests)
1079
1080	add_executable (lossy_comp_test tests/lossy_comp_test.c)
1081	target_link_libraries (lossy_comp_test
1082		PRIVATE
1083			sndfile
1084			test_utils
1085			$<$<BOOL:${LIBM_REQUIRED}>:m>
1086		)
1087
1088	add_executable (peak_chunk_test tests/peak_chunk_test.c)
1089	target_link_libraries (peak_chunk_test
1090		PRIVATE
1091			sndfile
1092			test_utils
1093			$<$<BOOL:${LIBM_REQUIRED}>:m>
1094		)
1095
1096	add_executable (header_test tests/header_test.c)
1097	target_link_libraries (header_test
1098		PRIVATE
1099			sndfile
1100			test_utils
1101			$<$<BOOL:${LIBM_REQUIRED}>:m>
1102		)
1103
1104	add_executable (misc_test tests/misc_test.c)
1105	target_link_libraries (misc_test
1106		PRIVATE
1107			sndfile
1108			test_utils
1109			$<$<BOOL:${LIBM_REQUIRED}>:m>
1110		)
1111
1112	add_executable (string_test tests/string_test.c)
1113	target_link_libraries (string_test
1114		PRIVATE
1115			sndfile
1116			test_utils
1117			$<$<BOOL:${LIBM_REQUIRED}>:m>
1118		)
1119
1120	add_executable (multi_file_test tests/multi_file_test.c)
1121	target_link_libraries (multi_file_test
1122		PRIVATE
1123			sndfile
1124			test_utils
1125			$<$<BOOL:${LIBM_REQUIRED}>:m>
1126		)
1127
1128	add_executable (aiff_rw_test tests/aiff_rw_test.c)
1129	target_link_libraries (aiff_rw_test
1130		PRIVATE
1131			sndfile
1132			test_utils
1133			$<$<BOOL:${LIBM_REQUIRED}>:m>
1134		)
1135
1136	add_executable (chunk_test tests/chunk_test.c)
1137	target_link_libraries (chunk_test
1138		PRIVATE
1139			sndfile
1140			test_utils
1141			$<$<BOOL:${LIBM_REQUIRED}>:m>
1142		)
1143
1144	add_executable (long_read_write_test tests/long_read_write_test.c)
1145	target_link_libraries (long_read_write_test
1146		PRIVATE
1147			sndfile
1148			test_utils
1149			$<$<BOOL:${LIBM_REQUIRED}>:m>
1150		)
1151
1152	add_executable (raw_test tests/raw_test.c)
1153	target_link_libraries (raw_test
1154		PRIVATE
1155			sndfile
1156			test_utils
1157			$<$<BOOL:${LIBM_REQUIRED}>:m>
1158		)
1159
1160	add_executable (compression_size_test tests/compression_size_test.c)
1161	target_link_libraries (compression_size_test
1162		PRIVATE
1163			sndfile
1164			test_utils
1165			$<$<BOOL:${LIBM_REQUIRED}>:m>
1166		)
1167
1168	add_executable (ogg_test tests/ogg_test.c)
1169	target_link_libraries (ogg_test
1170		PRIVATE
1171			sndfile
1172			test_utils
1173			$<$<BOOL:${LIBM_REQUIRED}>:m>
1174		)
1175
1176	add_executable (ogg_opus_test tests/ogg_opus_test.c)
1177	target_link_libraries (ogg_opus_test
1178		PRIVATE
1179			sndfile
1180			test_utils
1181			$<$<BOOL:${LIBM_REQUIRED}>:m>
1182		)
1183
1184	add_executable (stdin_test tests/stdin_test.c)
1185	target_link_libraries (stdin_test
1186		PRIVATE
1187			sndfile
1188			test_utils
1189			$<$<BOOL:${LIBM_REQUIRED}>:m>
1190		)
1191	set_target_properties (stdin_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY "tests")
1192
1193	add_executable (stdout_test tests/stdout_test.c)
1194	target_link_libraries (stdout_test
1195		PRIVATE
1196			sndfile
1197			test_utils
1198			$<$<BOOL:${LIBM_REQUIRED}>:m>
1199		)
1200	set_target_properties (stdout_test PROPERTIES RUNTIME_OUTPUT_DIRECTORY "tests")
1201
1202	add_executable (stdio_test tests/stdio_test.c)
1203	target_link_libraries (stdio_test
1204		PRIVATE
1205			sndfile
1206			test_utils
1207			$<$<BOOL:${LIBM_REQUIRED}>:m>
1208		)
1209
1210	add_executable (pipe_test tests/pipe_test.c)
1211	target_link_libraries (pipe_test
1212		PRIVATE
1213			sndfile
1214			test_utils
1215			$<$<BOOL:${LIBM_REQUIRED}>:m>
1216		)
1217
1218	add_executable (virtual_io_test tests/virtual_io_test.c)
1219	target_link_libraries (virtual_io_test
1220		PRIVATE
1221			sndfile
1222			test_utils
1223			$<$<BOOL:${LIBM_REQUIRED}>:m>
1224		)
1225
1226	### g72x_test
1227
1228	add_executable (g72x_test src/G72x/g72x_test.c)
1229	target_include_directories (g72x_test
1230		PRIVATE
1231			src
1232			${CMAKE_CURRENT_BINARY_DIR}/src
1233		)
1234	target_link_libraries (g72x_test
1235		PRIVATE
1236			sndfile
1237			$<$<BOOL:${LIBM_REQUIRED}>:m>
1238		)
1239	add_test (g72x_test g72x_test all)
1240
1241	### aiff-tests
1242
1243	add_test (write_read_test_aiff write_read_test aiff)
1244	add_test (lossy_comp_test_aiff_ulaw lossy_comp_test aiff_ulaw)
1245	add_test (lossy_comp_test_aiff_alaw lossy_comp_test aiff_alaw)
1246	add_test (lossy_comp_test_aiff_gsm610 lossy_comp_test aiff_gsm610)
1247	add_test (peak_chunk_test_aiff peak_chunk_test aiff)
1248	add_test (header_test_aiff header_test aiff)
1249	add_test (misc_test_aiff misc_test aiff)
1250	add_test (string_test_aiff string_test aiff)
1251	add_test (multi_file_test_aiff multi_file_test aiff)
1252	add_test (aiff_rw_test aiff_rw_test)
1253
1254	### au-tests
1255
1256	add_test (write_read_test_au write_read_test au)
1257	add_test (lossy_comp_test_au_ulaw lossy_comp_test au_ulaw)
1258	add_test (lossy_comp_test_au_alaw lossy_comp_test au_alaw)
1259	add_test (lossy_comp_test_au_g721 lossy_comp_test au_g721)
1260	add_test (lossy_comp_test_au_g723 lossy_comp_test au_g723)
1261	add_test (header_test_au header_test au)
1262	add_test (misc_test_au misc_test au)
1263	add_test (multi_file_test_au multi_file_test au)
1264
1265	### caf-tests
1266
1267	add_test (write_read_test_caf write_read_test caf)
1268	add_test (lossy_comp_test_caf_ulaw lossy_comp_test caf_ulaw)
1269	add_test (lossy_comp_test_caf_alaw lossy_comp_test caf_alaw)
1270	add_test (header_test_caf header_test caf)
1271	add_test (peak_chunk_test_caf peak_chunk_test caf)
1272	add_test (misc_test_caf misc_test caf)
1273	add_test (chunk_test_caf chunk_test caf)
1274	add_test (string_test_caf string_test caf)
1275	add_test (long_read_write_test_alac long_read_write_test alac)
1276
1277	# wav-tests
1278	add_test (write_read_test_wav write_read_test wav)
1279	add_test (lossy_comp_test_wav_pcm lossy_comp_test wav_pcm)
1280	add_test (lossy_comp_test_wav_ima lossy_comp_test wav_ima)
1281	add_test (lossy_comp_test_wav_msadpcm lossy_comp_test wav_msadpcm)
1282	add_test (lossy_comp_test_wav_ulaw lossy_comp_test wav_ulaw)
1283	add_test (lossy_comp_test_wav_alaw lossy_comp_test wav_alaw)
1284	add_test (lossy_comp_test_wav_gsm610 lossy_comp_test wav_gsm610)
1285	add_test (lossy_comp_test_wav_g721 lossy_comp_test wav_g721)
1286	add_test (lossy_comp_test_wav_nmsadpcm lossy_comp_test wav_nmsadpcm)
1287	add_test (peak_chunk_test_wav peak_chunk_test wav)
1288	add_test (header_test_wav header_test wav)
1289	add_test (misc_test_wav misc_test wav)
1290	add_test (string_test_wav string_test wav)
1291	add_test (multi_file_test_wav multi_file_test wav)
1292	add_test (chunk_test_wav chunk_test wav)
1293
1294	### w64-tests
1295
1296	add_test (write_read_test_w64 write_read_test w64)
1297	add_test (lossy_comp_test_w64_ima lossy_comp_test w64_ima)
1298	add_test (lossy_comp_test_w64_msadpcm lossy_comp_test w64_msadpcm)
1299	add_test (lossy_comp_test_w64_ulaw lossy_comp_test w64_ulaw)
1300	add_test (lossy_comp_test_w64_alaw lossy_comp_test w64_alaw)
1301	add_test (lossy_comp_test_w64_gsm610 lossy_comp_test w64_gsm610)
1302	add_test (header_test_w64 header_test w64)
1303	add_test (misc_test_w64 misc_test w64)
1304
1305	### rf64-tests
1306
1307	add_test (write_read_test_rf64 write_read_test rf64)
1308	add_test (header_test_rf64 header_test rf64)
1309	add_test (misc_test_rf64 misc_test rf64)
1310	add_test (string_test_rf64 string_test rf64)
1311	add_test (peak_chunk_test_rf64 peak_chunk_test rf64)
1312	add_test (chunk_test_rf64 chunk_test rf64)
1313
1314	### raw-tests
1315	add_test (write_read_test_raw write_read_test raw)
1316	add_test (lossy_comp_test_raw_ulaw lossy_comp_test raw_ulaw)
1317	add_test (lossy_comp_test_raw_alaw lossy_comp_test raw_alaw)
1318	add_test (lossy_comp_test_raw_gsm610 lossy_comp_test raw_gsm610)
1319	add_test (lossy_comp_test_vox_adpcm lossy_comp_test vox_adpcm)
1320	add_test (raw_test raw_test)
1321
1322	### paf-tests
1323	add_test (write_read_test_paf write_read_test paf)
1324	add_test (header_test_paf header_test paf)
1325	add_test (misc_test_paf misc_test paf)
1326
1327	### svx-tests
1328	add_test (write_read_test_svx write_read_test svx)
1329	add_test (header_test_svx header_test svx)
1330	add_test (misc_test_svx misc_test svx)
1331
1332	### nist-tests
1333	add_test (write_read_test_nist write_read_test nist)
1334	add_test (lossy_comp_test_nist_ulaw lossy_comp_test nist_ulaw)
1335	add_test (lossy_comp_test_nist_alaw lossy_comp_test nist_alaw)
1336	add_test (header_test_nist header_test nist)
1337	add_test (misc_test_nist misc_test nist)
1338
1339	### ircam-tests
1340	add_test (write_read_test_ircam write_read_test ircam)
1341	add_test (lossy_comp_test_ircam_ulaw lossy_comp_test ircam_ulaw)
1342	add_test (lossy_comp_test_ircam_alaw lossy_comp_test ircam_alaw)
1343	add_test (header_test_ircam header_test ircam)
1344	add_test (misc_test_ircam misc_test ircam)
1345
1346	### voc-tests
1347	add_test (write_read_test_voc write_read_test voc)
1348	add_test (lossy_comp_test_voc_ulaw lossy_comp_test voc_ulaw)
1349	add_test (lossy_comp_test_voc_alaw lossy_comp_test voc_alaw)
1350	add_test (header_test_voc header_test voc)
1351	add_test (misc_test_voc misc_test voc)
1352
1353	### mat4-tests
1354	add_test (write_read_test_mat4 write_read_test mat4)
1355	add_test (header_test_mat4 header_test mat4)
1356	add_test (misc_test_mat4 misc_test mat4)
1357
1358	### mat5-tests
1359	add_test (write_read_test_mat5 write_read_test mat5)
1360	add_test (header_test_mat5 header_test mat5)
1361	add_test (misc_test_mat5 misc_test mat5)
1362
1363	### pvf-tests
1364	add_test (write_read_test_pvf write_read_test pvf)
1365	add_test (header_test_pvf header_test pvf)
1366	add_test (misc_test_pvf misc_test pvf)
1367
1368	### xi-tests
1369	add_test (lossy_comp_test_xi_dpcm lossy_comp_test xi_dpcm)
1370
1371	### htk-tests
1372	add_test (write_read_test_htk write_read_test htk)
1373	add_test (header_test_htk header_test htk)
1374	add_test (misc_test_htk misc_test htk)
1375
1376	### avr-tests
1377	add_test (write_read_test_avr write_read_test avr)
1378	add_test (header_test_avr header_test avr)
1379	add_test (misc_test_avr misc_test avr)
1380
1381	### sds-tests
1382	add_test (write_read_test_sds write_read_test sds)
1383	add_test (header_test_sds header_test sds)
1384	add_test (misc_test_sds misc_test sds)
1385
1386	# sd2-tests
1387	add_test (write_read_test_sd2 write_read_test sd2)
1388
1389	### wve-tests
1390	add_test (lossy_comp_test_wve lossy_comp_test wve)
1391
1392	### mpc2k-tests
1393	add_test (write_read_test_mpc2k write_read_test mpc2k)
1394	add_test (header_test_mpc2k header_test mpc2k)
1395	add_test (misc_test_mpc2k misc_test mpc2k)
1396
1397	### flac-tests
1398	add_test (write_read_test_flac write_read_test flac)
1399	add_test (compression_size_test_flac compression_size_test flac)
1400	add_test (string_test_flac string_test flac)
1401
1402	### vorbis-tests
1403	add_test (ogg_test ogg_test)
1404	add_test (compression_size_test_vorbis compression_size_test vorbis)
1405	add_test (lossy_comp_test_ogg_vorbis lossy_comp_test ogg_vorbis)
1406	add_test (string_test_ogg string_test ogg)
1407	add_test (misc_test_ogg misc_test ogg)
1408
1409	### opus-tests ###
1410	add_test (ogg_opus_test ogg_opus_test)
1411	add_test (compression_size_test_opus compression_size_test opus)
1412	add_test (lossy_comp_test_ogg_opus lossy_comp_test ogg_opus)
1413	add_test (string_test_opus string_test opus)
1414
1415	### io-tests
1416	add_test (stdio_test stdio_test)
1417	add_test (pipe_test pipe_test)
1418	add_test (virtual_io_test virtual_io_test)
1419
1420	set (SNDFILE_TEST_TARGETS
1421		test_utils
1422		test_main
1423		sfversion
1424		error_test
1425		ulaw_test
1426		alaw_test
1427		dwvw_test
1428		command_test
1429		floating_point_test
1430		checksum_test
1431		scale_clip_test
1432		headerless_test
1433		rdwr_test
1434		locale_test
1435		cpp_test
1436		external_libs_test
1437		format_check_test
1438		channel_test
1439		pcm_test
1440		write_read_test
1441		lossy_comp_test
1442		peak_chunk_test
1443		header_test
1444		misc_test
1445		string_test
1446		multi_file_test
1447		aiff_rw_test
1448		chunk_test
1449		long_read_write_test
1450		raw_test
1451		compression_size_test
1452		ogg_test
1453		stdin_test
1454		stdout_test
1455		stdio_test
1456		pipe_test
1457		virtual_io_test
1458		g72x_test
1459		)
1460
1461#	if (WIN32 AND BUILD_SHARED_LIBS)
1462#		list (APPEND SNDFILE_TEST_TARGETS win32_ordinal_test)
1463#	endif ()
1464
1465	set_target_properties(${SNDFILE_TEST_TARGETS} PROPERTIES FOLDER Tests)
1466
1467endif ()
1468
1469if (ENABLE_CPACK)
1470	include (CPack)
1471endif ()
1472