scide: fix yaml serialization of slots
[supercollider.git] / CMakeLists.txt
blobb1d843934efa25b925d452d0b5b4652ae547bf01
1 cmake_minimum_required (VERSION 2.8)
2 project (SuperCollider)
4 include("SCVersion.txt")
5 set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}${PROJECT_VERSION_PATCH}")
6 message(STATUS "SuperCollider Version: ${PROJECT_VERSION}")
8 include(CTest)
9 enable_testing()
11 include (cmake_modules/FinalFile.cmake)
13 if (NOT CMAKE_BUILD_TYPE)
14         message(STATUS "Build type defaulting to \"RelWithDebInfo\"")
15         set(CMAKE_BUILD_TYPE "RelWithDebInfo")
16 endif()
18 if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
19         message(WARNING "WARNING: IN-PLACE BUILDS ARE NOT RECOMMENDED - PLEASE USE A BUILD DIRECTORY")
20 endif()
23 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules
24                       ${CMAKE_MODULE_PATH})
26 CONFIGURE_FILE(
27   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/cmake_uninstall.cmake.in"
28   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
29   IMMEDIATE @ONLY)
31 ADD_CUSTOM_TARGET(uninstall
32   "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
34 if(APPLE)
35         STRING(REGEX REPLACE "^.*MacOSX10.([0-9]+).*$" "\\1" MAC_OSX_SDK_VERSION  "${CMAKE_OSX_SYSROOT}")
37         if(CMAKE_OSX_DEPLOYMENT_TARGET)
38                 if (CMAKE_OSX_DEPLOYMENT_TARGET GREATER 10.4)
39                         set(HID_UTIL_DIR "HID_Utilities")
40                 else()
41                         set(HID_UTIL_DIR "HID_Utilities_10_4")
42                 endif()
43         else()
44                 if (${MAC_OSX_SDK_VERSION} GREATER 4)
45                         set(HID_UTIL_DIR "HID_Utilities")
46                 else()
47                         set(HID_UTIL_DIR "HID_Utilities_10_4")
48                 endif()
49         endif()
50         MESSAGE( STATUS "Using HID Utilities from folder '${HID_UTIL_DIR}'")
51 endif()
53 if (CMAKE_SYSTEM_NAME MATCHES "Linux")
54         set(LINUX 1)
55 endif()
57 #############################################
58 # Compiler flags etc
60 if (${CMAKE_COMPILER_IS_GNUCXX})
61         exec_program(${CMAKE_CXX_COMPILER} ARGS -dumpversion OUTPUT_VARIABLE _gcc_version)
63         add_definitions("-fschedule-insns2" "-fomit-frame-pointer")
65         add_definitions("-Wreturn-type")
67 #       disabled for now: -ffast-math breaks avx intrinsics and -fsigned-zeros/-fno-associative-math are not available in some versions
68 #       if (${_gcc_version} VERSION_GREATER 4.0.99)
69 #               add_definitions("-ffast-math -fsigned-zeros -fno-associative-math")
70 #       endif()
72         option(DSO_VISIBILITY "DSO visibility support for gcc" OFF)
74         if (DSO_VISIBILITY)
75                 add_definitions(-fvisibility=hidden)
76         endif()
78         if(APPLE)
79                 exec_program(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info)
80                 if ("${_gcc_version_info}" MATCHES "Apple")
81                         add_definitions("-fpascal-strings")
82                 endif()
83                 add_definitions("-D_REENTRANT")
84         elseif(NOT (WIN32 AND NOT CYGWIN))
85                 add_definitions("-pthread")
86         endif()
87 endif ()
89 if (${CMAKE_CXX_COMPILER} MATCHES icpc)
90         set(CMAKE_COMPILER_IS_INTEL 1)
91         add_definitions(-Wno-unknown-pragmas)
92         add_definitions(-simd)
93 endif()
95 if (${CMAKE_CXX_COMPILER} MATCHES clang)
96         option(DSO_VISIBILITY "DSO visibility support for clang" OFF)
98         if (DSO_VISIBILITY)
99                 add_definitions(-fvisibility=hidden)
100         endif()
102         set(CMAKE_COMPILER_IS_CLANG 1)
103 endif()
105 if(APPLE)
106         set_property(DIRECTORY
107                 APPEND
108                 PROPERTY COMPILE_DEFINITIONS SC_DARWIN)
109 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
110         add_definitions("-DSC_LINUX")
111         add_definitions(-DSC_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/SuperCollider")
112 elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
113         add_definitions("-DSC_FREEBSD")
114         add_definitions(-DSC_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/SuperCollider")
115 endif()
117 if(WIN32)
118     set_property(DIRECTORY
119                  APPEND
120                  PROPERTY COMPILE_DEFINITIONS SC_WIN32 NOMINMAX _WIN32_WINNT=0x0500)
122     add_definitions(-DWIN32_LEAN_AND_MEAN)
124     if(MSVC)
125         SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
126         SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
127     endif()
129     # correctly link the static Boost Thread library:
130     add_definitions(-DBOOST_THREAD_USE_LIB)
131         #avoid unnecesary autolink
132         add_definitions(-DBOOST_DATE_TIME_NO_LIB)
133 endif()
136 #############################################
137 # Options
138 option(NOVA_SIMD "Build with nova-simd support." ON)
139 option(FINAL_BUILD "Build as single source file." OFF)
141 option(CURL "Build with curl for remote file download." ON)
143 option(FFT_GREEN "Use internal 'Green' FFT lib rather than FFTW. (Not recommended.)" OFF)
145 option(SSE "Compile with support for SSE instructions.")
146 option(SSE41 "Compile with support for SSE4.1 instructions.")
147 option(SSE42 "Compile with support for SSE4.2 instructions.")
149 set(AUDIOAPI "default" CACHE STRING "Audio API to use (one of {default,coreaudio,jack,portaudio})")
150 option(LIBSCSYNTH "Compile libscsynth as shared library" OFF)
152 option(INSTALL_HELP "Install help docs and examples along with the software" ON)
153 option(INSTALL_OLD_HELP "Install old and deprecated help files" ON)
154 option(SC_DOC_RENDER "Pre-render SCDoc documentation. (For putting online, etc)" OFF)
155 option(SC_IDE "Build Qt IDE." ON)
157 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
158     option(SUPERNOVA "Build with supernova as optional audio synthesis server" ON)
159 elseif()
160     option(SUPERNOVA "Build with supernova as optional audio synthesis server" OFF)
161 endif()
163 option(SN_MEMORY_DEBUGGING "Build supernova for memory debugging (disable memory pools).")
164 option(SC_MEMORY_DEBUGGING "Build sclang&scsynth for memory debugging (disable memory pools).")
165 option(GC_SANITYCHECK "Enable sanity checks in the sclang garbage collector.")
167 option(NO_LIBSNDFILE "Disable soundfile functionality. (Not recommended.)" OFF)
169 option(NO_AVAHI "Disable Avahi support. (Not recommended.)" OFF)
171 option(SCLANG_SERVER "Build with internal server." ON)
173 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
174         option(SC_WII "Build sclang with WII support" ON)
175 endif()
177 option(SC_QT "Build SuperCollider with Qt GUI" ON)
178 if (SC_QT)
179   message( STATUS "Compiling with Qt GUI" )
180 endif (SC_QT)
182 if(WIN32)
183         option(SC_PSYCOLLIDER "Build PsyCollider" ON)
184 else()
185         option(SC_PSYCOLLIDER "Build PsyCollider" OFF)
186 endif()
188 if(WIN32)
189     option(SC_WIN_DEP_DIRS
190         "A list of directories where dependencies will be searched for when packaging.")
191 endif()
193 if(CMAKE_COMPILER_IS_GNUCXX)
194     option(NATIVE "Optimize binary for this architecture (binaries may not run on other machines, requires gcc-4.3 or higher).")
195     option(LTO "Use GCC's link time optimizer' (experimental).")
196 endif()
198 option(SC_SYMLINK_CLASSLIB "Place a symlink of SCCLassLibrary instead of copying" OFF)
199 option(SC_OX "Try to compile with support for C++0x (experimental, mainly related to supernova)" OFF)
201 #############################################
202 # some default libraries
204 find_package(Pthreads)
206 if (NOT PTHREADS_FOUND)
207     message(SEND_ERROR "cannot find libpthreads")
208 endif()
209 include_directories(${PTHREADS_INCLUDE_DIR})
211 if (MSVC OR MINGW)
212     set(MATH_LIBRARY "")
213 else()
214     find_library(MATH_LIBRARY m)
215 endif()
217 if(CURL)
218         find_package(CURL)
219         if(CURL_FOUND)
220                 add_definitions("-DHAVE_LIBCURL")
221                 include_directories(${CURL_INCLUDE_DIRS})
222         endif()
223 endif()
225 set(Boost_USE_MULTITHREADED      ON)
226 find_package( Boost 1.48.0 COMPONENTS thread system filesystem program_options regex test )
228 if (SC_OX)
229         set(Boost_FOUND OFF) # boost 1.48 does not like c++11
230 endif()
232 if (Boost_FOUND)
233         link_directories(${Boost_LIBRARY_DIRS})
234 else()
235         message("building boost libraries manually")
236 endif()
240 #############################################
241 # some preprocessor flags
242 if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
243         if (SSE)
244                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -mfpmath=sse")
245                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -mfpmath=sse")
246         endif()
247         if (SSE41)
248                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
249                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
250         endif()
251         if (SSE42)
252                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
253                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
254         endif()
255         if (NATIVE)
256                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
257                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
258         endif()
260         if (SC_OX)
261                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
262         endif()
263 endif()
265 if (CMAKE_COMPILER_IS_INTEL AND NOT WIN32)
266         if (SSE42)
267                 add_definitions(-xSSE4.2)
268         elseif (SSE41)
269                 add_definitions(-xSSE4.1)
270         elseif (SSE)
271                 add_definitions(-mia32)
272         endif()
273         if (SC_OX)
274                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
275         endif()
277         # disable warnings
278         add_definitions(-diag-disable 170) # pointer points outside of underlying object ... used heavily in sclang
279         add_definitions(-diag-disable 279) # controlling expression is constant
281 endif()
283 if (SC_MEMORY_DEBUGGING)
284         add_definitions(-DDISABLE_MEMORY_POOLS)
285 endif()
287 #############################################
288 # subdirectories
289 add_subdirectory(external_libraries)
290 add_subdirectory(server)
291 add_subdirectory(lang)
292 add_subdirectory(editors)
293 add_subdirectory(platform)
295 if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
296     install(DIRECTORY include/common include/plugin_interface include/server include/lang
297         DESTINATION ${CMAKE_INSTALL_PREFIX}/include/SuperCollider
298         FILES_MATCHING PATTERN "*.h"
299     )
300 endif()
302 if(APPLE)
303         # determines the app name and app install location (scappbundlename, scappdir):
304         include (cmake_modules/MacAppFolder.cmake)
306         set(auxresourcesdir ${scappauxresourcesdir})
308         # Some aux files which go in the app's folder
309         install(FILES README.txt ChangeLog COPYING AUTHORS platform/mac/MOVED_STUFF.txt
310                 DESTINATION ${scappbundlename}
311         )
312 elseif (WIN32)
313         set(auxresourcesdir "SuperCollider")
314 else()
315         set(auxresourcesdir "share/SuperCollider")
316 endif()
318 set(SCCLASSLIB_EXCLUDE_REGEX "IGNOREME")
320 if(NOT SC_QT)
321         set(SCCLASSLIB_EXCLUDE_REGEX "${SCCLASSLIB_EXCLUDE_REGEX}|QtCollider")
322 endif()
324 if(WIN32)
325         set(SCCLASSLIB_EXCLUDE_REGEX "${SCCLASSLIB_EXCLUDE_REGEX}|PsycolliderDocument")
326 endif()
329 if(APPLE)
331         if(SC_SYMLINK_CLASSLIB)
333                 #if there are folders inside SCCLassLibrary abort cmake.
334                 file(GLOB classlibraryfolders "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary/[^.]*")
335                 foreach(onedirectory ${classlibraryfolders})
336                         message( "${onedirectory}" )
337                         if(NOT IS_SYMLINK "${onedirectory}")
338                                 message(FATAL_ERROR "Symlinking will fail ! SCClassLibrary folder already exists and has directories inside, please delete it first." )
339                         endif()
340                 endforeach(onedirectory)
342                 message(STATUS "Will create symlink of SCClassLibrary to ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary" )
343                 if(NOT EXISTS "{CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary")
344                         install( CODE "EXECUTE_PROCESS(COMMAND mkdir ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary)" )
345                 endif()
346                 #symlink the folders inside SCCLassLibrary. Check if QtCollider folder should be symlinked or not.
347                 file(GLOB classlibraryfolders RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary" "SCClassLibrary/[^.]*")
348                 foreach(onedirectory ${classlibraryfolders})
349                         if(NOT "${onedirectory}" MATCHES "${SCCLASSLIB_EXCLUDE_REGEX}")
350                                 install( CODE
351                                         "EXECUTE_PROCESS(COMMAND ln -shF ${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/${onedirectory} ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary/${onedirectory} )" )
352                         endif()
353                 endforeach(onedirectory)
354         else()
355                 message(STATUS "Will copy SCCLassLibrary to ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}")
357                 #if directory contains symlinks, unlink them.
358                 if(EXISTS "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary")
359                         file(GLOB classlibraryfolders "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/SCClassLibrary/[^.]*")
360                         foreach(onedirectory ${classlibraryfolders})
361                                 if(IS_SYMLINK "${onedirectory}")
362                                         message(STATUS "Unlinking ${onedirectory}")
363                                         install( CODE "EXECUTE_PROCESS(COMMAND unlink ${onedirectory} )" )
364                                 endif()
365                         endforeach(onedirectory)
366                 endif()
368                 install(DIRECTORY SCClassLibrary
369                         DESTINATION ${auxresourcesdir}
370                         REGEX ${SCCLASSLIB_EXCLUDE_REGEX} EXCLUDE
371                 )
372         endif()
373 else()
374         install(DIRECTORY SCClassLibrary
375                 DESTINATION ${auxresourcesdir}
376                 REGEX ${SCCLASSLIB_EXCLUDE_REGEX} EXCLUDE
377                 PATTERN "*~" EXCLUDE
378                 PATTERN "*#" EXCLUDE
379         )
380 endif()
382 configure_file(platform/SCVersion.sc.in SCVersion/SCVersion.sc)
383 install(DIRECTORY "${CMAKE_BINARY_DIR}/SCVersion" DESTINATION "${auxresourcesdir}/SCClassLibrary")
385 install(DIRECTORY sounds
386         DESTINATION ${auxresourcesdir}
389 if(APPLE AND ("${standalone}" STREQUAL ""))
390         set(exampledir "${scappbundlename}")
391 else()
392         set(exampledir "${auxresourcesdir}")
393 endif()
395 install(DIRECTORY examples
396         DESTINATION ${exampledir}
397         PATTERN "*~" EXCLUDE
398         PATTERN "*#" EXCLUDE
401 if(INSTALL_OLD_HELP)
402         install(DIRECTORY Help
403                 DESTINATION ${auxresourcesdir}
404         )
405 endif()
407 if(INSTALL_HELP)
408         if(SC_SYMLINK_CLASSLIB AND APPLE)
409                 message(STATUS "Will create symlink of HelpSource to ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource")
410                 if(EXISTS "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource")
411                         message(FATAL_ERROR "Symlinking will fail ! HelpSource folder already exists, please delete it first." )
412                 endif()
413                 install( CODE
414                                         "EXECUTE_PROCESS(COMMAND ln -shF ${CMAKE_CURRENT_SOURCE_DIR}/HelpSource ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource )" )
415         else()
416                 message(STATUS "Will copy HelpSource to ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}")
417                 if(APPLE)
418                         if(EXISTS "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource")
419                                 if(IS_SYMLINK "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource")
420                                         message(STATUS "Unlinking ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource")
421                                         install( CODE "EXECUTE_PROCESS(COMMAND unlink ${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HelpSource )" )
422                                 endif()
423                         endif()
424                 endif()
425                 install(DIRECTORY HelpSource
426                         DESTINATION ${auxresourcesdir}
427                         PATTERN "*~" EXCLUDE
428                         PATTERN "*#" EXCLUDE
429                 )
430         endif()
431 endif()
433 #############################################
435 # build scdoc help files
437 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/Common")
438 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/Platform")
439 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/SCDoc")
440 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/DefaultLibrary")
441 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/JITLib")
442 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/SCClassLibrary/backwards_compatibility")
444 # this folder has an extension to Platform that disables the loadStartupFiles method
445 list(APPEND BUILD_CLASSLIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/platform/disable_startup_files")
447 foreach(arg ${BUILD_CLASSLIBRARIES})
448         set(BUILD_CLASSLIBRARYPATH "${BUILD_CLASSLIBRARYPATH}+${arg}\n")
449 endforeach()
451 configure_file(build_sclang.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg)
453 if(SC_DOC_RENDER)
454         file(GLOB_RECURSE SCDocSources RELATIVE HelpSource .*[^~])
455         file(GLOB_RECURSE SCDocClasses RELATIVE SCClassLibrary/SCDoc *.sc)
457         add_custom_target(doc ALL
458                                         COMMAND ${CMAKE_CURRENT_BINARY_DIR}/lang/sclang${CMAKE_EXECUTABLE_SUFFIX}
459                                                         -l ${CMAKE_CURRENT_BINARY_DIR}/build_sclang.cfg
460                                                         platform/renderAllHelp.scd ${CMAKE_CURRENT_SOURCE_DIR}/HelpSource ${CMAKE_CURRENT_BINARY_DIR}/RenderedHelp
461                                         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
462                                         DEPENDS sclang ${SCDocSources} ${SCDocClasses})
464 endif()
466 set_directory_properties(
467         PROPERTIES
468         ADDITIONAL_MAKE_CLEAN_FILES "RenderedHelp")
470 #############################################
472 # testsuite
474 add_subdirectory(testsuite)
476 #############################################
477 # CPack support
479 set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
480 set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
481 set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
483 if(APPLE)
484         set(CPACK_GENERATOR "DragNDrop")
485         set(CPACK_DMG_FORMAT "UDBZ")
486         set(CPACK_DMG_VOLUME_NAME "${scappbundlename}")
487         set(CPACK_SYSTEM_NAME "OSX")
488 #       set(CPACK_PACKAGE_FILE_NAME "${scappbundlename}-${PROJECT_VERSION}")
489         set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/package/ds_store")
490         set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/package/background.png")
491         set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/platform/mac/Resources/SCcube.icns")
492 endif()
494 if(NOT WIN32) # We define a custom 'package' target in platform/windows/CMakeLists.txt
495     include(CPack)
496 endif()
498 #############################################
499 # hide advanced variables
500 mark_as_advanced(AVAHI_LIBRARIES AVAHI_INCLUDE_DIRS AVAHI_INCLUDE_DIR AVAHI_LIBRARY-COMMON AVAHI_LIBRARY-CLIENT)
501 mark_as_advanced(DL)
502 mark_as_advanced(EMACS_EXECUTABLE)
503 mark_as_advanced(FFTW3F_INCLUDE_DIR FFTW3F_LIBRARY)
504 mark_as_advanced(JACK JACK_INCLUDE_DIR JACK_LIBRARY)
505 mark_as_advanced(MATH_LIBRARY)
506 mark_as_advanced(QT_QMAKE_EXECUTABLE)
507 mark_as_advanced(SNDFILE)