3 find_package(Portaudio)
6 # here we choose who provides us with the FFT lib
8 add_definitions("-DSC_FFT_GREEN")
10 add_definitions("-DSC_FFT_VDSP")
15 add_definitions("-DSC_FFT_FFTW")
17 message(SEND_ERROR "Cannot find libfftw3f")
25 add_definitions(-DUSE_RENDEZVOUS=1)
29 add_definitions(-DUSE_RENDEZVOUS=1)
33 # Here we work out which audio API to use, from system type and/or user option.
34 if(AUDIOAPI STREQUAL "default")
36 set(AUDIOAPI coreaudio)
38 set(AUDIOAPI portaudio)
44 if(NOT AUDIOAPI MATCHES "^(jack|coreaudio|portaudio)$")
45 message(WARNING "Unrecognised audio API: ${AUDIOAPI}")
48 if(AUDIOAPI STREQUAL jack)
51 message(FATAL_ERROR "Jack selected as audio API, but development files not found")
53 elseif(AUDIOAPI STREQUAL portaudio)
54 find_package(Portaudio)
55 if(NOT PORTAUDIO_FOUND)
56 message(FATAL_ERROR "Portaudio selected as audio API, but development files not found")
59 message(STATUS "Audio API: ${AUDIOAPI}")
77 SC_SequencedCommand.cpp
84 ${CMAKE_SOURCE_DIR}/common/SC_fftlib.cpp
85 ${CMAKE_SOURCE_DIR}/common/SC_AllocPool.cpp
86 ${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
87 ${CMAKE_SOURCE_DIR}/common/SC_Reply.cpp
88 ${CMAKE_SOURCE_DIR}/common/SC_Sem.cpp
89 ${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
90 ${CMAKE_SOURCE_DIR}/common/SC_StringBuffer.cpp
91 ${CMAKE_SOURCE_DIR}/common/SC_StringParser.cpp
92 ${CMAKE_SOURCE_DIR}/common/scsynthsend.cpp
93 ${CMAKE_SOURCE_DIR}/common/sc_popen.cpp
95 ${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src/tlsf.c
99 list(APPEND scsynth_sources ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
103 list(APPEND scsynth_sources ../../common/fftlib.c)
107 include_directories (${FFTW3F_INCLUDE_DIR})
111 include_directories(${CMAKE_SOURCE_DIR}/include/common
112 ${CMAKE_SOURCE_DIR}/common
113 ${CMAKE_SOURCE_DIR}/include/server
114 ${CMAKE_SOURCE_DIR}/include/plugin_interface)
116 include_directories (${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src)
118 set_property(DIRECTORY
120 PROPERTY COMPILE_DEFINITIONS SC_MEMORY_ALIGNMENT=32)
122 if (AUDIOAPI STREQUAL jack)
123 list(APPEND scsynth_sources SC_Jack.cpp)
124 add_definitions("-DSC_AUDIO_API=SC_AUDIO_API_JACK" ${JACK_DEFINITIONS})
125 include_directories(${JACK_INCLUDE_DIRS})
126 elseif (AUDIOAPI STREQUAL portaudio)
127 add_definitions("-DSC_AUDIO_API=SC_AUDIO_API_PORTAUDIO" ${PORTAUDIO_DEFINITIONS})
128 include_directories(${PORTAUDIO_INCLUDE_DIRS})
131 set (FINAL_BUILD 0) # disable final build for scsynth
134 set (LIBSCSYNTH_TYPE SHARED)
136 set (LIBSCSYNTH_TYPE STATIC)
140 CREATE_FINAL_FILE(libscsynth_final.cpp ${scsynth_sources})
141 add_library(libscsynth ${LIBSCSYNTH_TYPE} libscsynth_final.cpp)
143 add_library(libscsynth ${LIBSCSYNTH_TYPE} ${scsynth_sources})
146 set_property(TARGET libscsynth
148 PROPERTY COMPILE_DEFINITIONS BUILDING_SUPERCOLLIDER)
150 find_library(DL NAMES dl)
152 target_link_libraries(libscsynth ${DL})
156 add_definitions("-DHAVE_AVAHI=1")
157 include_directories(${AVAHI_INCLUDE_DIRS})
158 target_link_libraries(libscsynth ${AVAHI_LIBRARIES})
162 include_directories(${SNDFILE_INCLUDE_DIR})
163 target_link_libraries(libscsynth ${SNDFILE_LIBRARIES})
164 elseif(NOT NO_LIBSNDFILE)
165 message(SEND_ERROR "Cannot find libsndfile")
168 if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
169 add_definitions(-DSC_PLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/lib/SuperCollider/plugins")
172 if (AUDIOAPI STREQUAL jack)
173 target_link_libraries(libscsynth ${JACK_LIBRARIES})
174 elseif(AUDIOAPI STREQUAL portaudio)
175 target_link_libraries(libscsynth ${PORTAUDIO_LIBRARIES})
176 elseif(AUDIOAPI STREQUAL coreaudio)
177 target_link_libraries(libscsynth "-framework CoreAudio")
181 target_link_libraries(libscsynth ${PTHREADS_LIBRARIES})
186 target_link_libraries(libscsynth wsock32 ws2_32 winmm)
190 set_property(TARGET libscsynth PROPERTY OUTPUT_NAME scsynth)
193 # These two properties are ABI version info, not sc version:
194 set_property(TARGET libscsynth PROPERTY VERSION 1.0.0)
195 set_property(TARGET libscsynth PROPERTY SOVERSION 1)
199 target_link_libraries(libscsynth ${FFTW3F_LIBRARY})
203 target_link_libraries(libscsynth "-framework vecLib -framework CoreServices")
206 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
207 target_link_libraries(libscsynth rt)
211 add_executable(scsynth scsynth_main.cpp)
212 target_link_libraries(scsynth libscsynth ${PTHREADS_LIBRARY})
215 set_property(TARGET scsynth libscsynth
216 APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
218 set_property(TARGET scsynth libscsynth
219 APPEND PROPERTY LINK_FLAGS "-flto -flto-report -fwhole-program")
223 set(INSTALL_TARGETS scsynth libscsynth)
225 set(INSTALL_TARGETS scsynth)
229 # TODO allow apple users to install to fhs-ish path if INSTALL_FHS option is enabled
230 # determines the app name and app install location (scappbundlename, scappdir):
231 include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
232 install(TARGETS ${INSTALL_TARGETS}
233 RUNTIME DESTINATION "${scappauxresourcesdir}"
234 LIBRARY DESTINATION "${scappauxresourcesdir}"
235 PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE OWNER_WRITE)
237 install(TARGETS ${INSTALL_TARGETS}
238 DESTINATION "SuperCollider"
239 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
241 install(TARGETS ${INSTALL_TARGETS}
242 RUNTIME DESTINATION "bin"
243 LIBRARY DESTINATION "lib"
244 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)