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 string(TOLOWER "$ENV{AUDIOAPI}" AUDIOAPI)
35 if(AUDIOAPI STREQUAL "")
37 set(AUDIOAPI coreaudio)
39 set(AUDIOAPI portaudio)
45 if(NOT AUDIOAPI MATCHES "^(jack|coreaudio|portaudio)$")
46 message(WARNING "Unrecognised audio API: ${AUDIOAPI}")
49 if(AUDIOAPI STREQUAL jack)
52 message(FATAL_ERROR "Jack selected as audio API, but development files not found")
54 elseif(AUDIOAPI STREQUAL portaudio)
55 find_package(Portaudio)
56 if(NOT PORTAUDIO_FOUND)
57 message(FATAL_ERROR "Portaudio selected as audio API, but development files not found")
60 message(STATUS "Audio API: ${AUDIOAPI}")
78 SC_SequencedCommand.cpp
85 ${CMAKE_SOURCE_DIR}/common/SC_fftlib.cpp
86 ${CMAKE_SOURCE_DIR}/common/SC_AllocPool.cpp
87 ${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
88 ${CMAKE_SOURCE_DIR}/common/SC_Reply.cpp
89 ${CMAKE_SOURCE_DIR}/common/SC_Sem.cpp
90 ${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
91 ${CMAKE_SOURCE_DIR}/common/SC_StringBuffer.cpp
92 ${CMAKE_SOURCE_DIR}/common/SC_StringParser.cpp
93 ${CMAKE_SOURCE_DIR}/common/scsynthsend.cpp
94 ${CMAKE_SOURCE_DIR}/common/sc_popen.cpp
96 ${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src/tlsf.c
100 list(APPEND scsynth_sources ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
104 list(APPEND scsynth_sources ../../common/fftlib.c)
108 include_directories (${FFTW3F_INCLUDE_DIR})
112 include_directories(${CMAKE_SOURCE_DIR}/include/common
113 ${CMAKE_SOURCE_DIR}/common
114 ${CMAKE_SOURCE_DIR}/include/server
115 ${CMAKE_SOURCE_DIR}/include/plugin_interface)
117 include_directories (${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src)
119 set_property(DIRECTORY
121 PROPERTY COMPILE_DEFINITIONS SC_MEMORY_ALIGNMENT=32)
123 if (AUDIOAPI STREQUAL jack)
124 list(APPEND scsynth_sources SC_Jack.cpp)
125 add_definitions("-DSC_AUDIO_API=SC_AUDIO_API_JACK" ${JACK_DEFINITIONS})
126 include_directories(${JACK_INCLUDE_DIRS})
127 elseif (AUDIOAPI STREQUAL portaudio)
128 add_definitions("-DSC_AUDIO_API=SC_AUDIO_API_PORTAUDIO" ${PORTAUDIO_DEFINITIONS})
129 include_directories(${PORTAUDIO_INCLUDE_DIRS})
132 set (FINAL_BUILD 0) # disable final build for scsynth
135 set (LIBSCSYNTH_TYPE SHARED)
137 set (LIBSCSYNTH_TYPE STATIC)
141 CREATE_FINAL_FILE(libscsynth_final.cpp ${scsynth_sources})
142 add_library(libscsynth ${LIBSCSYNTH_TYPE} libscsynth_final.cpp)
144 add_library(libscsynth ${LIBSCSYNTH_TYPE} ${scsynth_sources})
147 set_property(TARGET libscsynth
149 PROPERTY COMPILE_DEFINITIONS BUILDING_SUPERCOLLIDER)
151 find_library(DL NAMES dl)
153 target_link_libraries(libscsynth ${DL})
157 add_definitions("-DHAVE_AVAHI=1")
158 include_directories(${AVAHI_INCLUDE_DIRS})
159 target_link_libraries(libscsynth ${AVAHI_LIBRARIES})
163 include_directories(${SNDFILE_INCLUDE_DIR})
164 target_link_libraries(libscsynth ${SNDFILE_LIBRARIES})
165 elseif(NOT NO_LIBSNDFILE)
166 message(SEND_ERROR "Cannot find libsndfile")
169 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
170 add_definitions(-DSC_PLUGIN_DIR="${CMAKE_INSTALL_PREFIX}/lib/SuperCollider/plugins")
173 if (AUDIOAPI STREQUAL jack)
174 target_link_libraries(libscsynth ${JACK_LIBRARIES})
175 elseif(AUDIOAPI STREQUAL portaudio)
176 target_link_libraries(libscsynth ${PORTAUDIO_LIBRARIES})
177 elseif(AUDIOAPI STREQUAL coreaudio)
178 target_link_libraries(libscsynth "-framework CoreAudio")
182 target_link_libraries(libscsynth ${PTHREADS_LIBRARIES})
187 target_link_libraries(libscsynth wsock32 ws2_32 winmm)
191 set_property(TARGET libscsynth PROPERTY OUTPUT_NAME scsynth)
194 # These two properties are ABI version info, not sc version:
195 set_property(TARGET libscsynth PROPERTY VERSION 1.0.0)
196 set_property(TARGET libscsynth PROPERTY SOVERSION 1)
200 target_link_libraries(libscsynth ${FFTW3F_LIBRARY})
204 target_link_libraries(libscsynth "-framework vecLib -framework CoreServices")
207 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
208 target_link_libraries(libscsynth rt)
212 add_executable(scsynth scsynth_main.cpp)
213 target_link_libraries(scsynth libscsynth ${PTHREADS_LIBRARY})
216 set_property(TARGET scsynth libscsynth
217 APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
219 set_property(TARGET scsynth libscsynth
220 APPEND PROPERTY LINK_FLAGS "-flto -flto-report -fwhole-program")
224 set(INSTALL_TARGETS scsynth libscsynth)
226 set(INSTALL_TARGETS scsynth)
230 # TODO allow apple users to install to fhs-ish path if INSTALL_FHS option is enabled
231 # determines the app name and app install location (scappbundlename, scappdir):
232 include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
233 install(TARGETS ${INSTALL_TARGETS}
234 RUNTIME DESTINATION "${scappauxresourcesdir}"
235 LIBRARY DESTINATION "${scappauxresourcesdir}"
236 PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE OWNER_WRITE)
238 install(TARGETS ${INSTALL_TARGETS}
239 DESTINATION "SuperCollider"
240 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
242 install(TARGETS ${INSTALL_TARGETS}
243 RUNTIME DESTINATION "bin"
244 LIBRARY DESTINATION "lib"
245 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)