1 include_directories(${CMAKE_SOURCE_DIR}/include/common
2 ${CMAKE_SOURCE_DIR}/include/lang
3 ${CMAKE_SOURCE_DIR}/include/plugin_interface
4 ${CMAKE_SOURCE_DIR}/include/server
5 ${CMAKE_SOURCE_DIR}/external_libraries/boost_lockfree
6 ${CMAKE_SOURCE_DIR}/external_libraries/boost
7 ${CMAKE_SOURCE_DIR}/external_libraries/threadpool
8 ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include
9 ${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src
13 include_directories("LangPrimSource/${HID_UTIL_DIR}")
14 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
17 find_package(Portmidi)
20 find_package(Readline 5.0)
25 LangPrimSource/SC_Wii.cpp
26 LangPrimSource/PyrSignalPrim.cpp
27 LangPrimSource/PyrSched.cpp
28 LangPrimSource/PyrPrimitive.cpp
29 LangPrimSource/PyrMathPrim.cpp
30 LangPrimSource/SC_ComPort.cpp
31 LangPrimSource/OSCData.cpp
32 LangPrimSource/PyrArchiver.cpp
33 LangPrimSource/PyrArrayPrimitives.cpp
34 LangPrimSource/PyrBitPrim.cpp
35 LangPrimSource/PyrCharPrim.cpp
36 LangPrimSource/PyrFilePrim.cpp
37 LangPrimSource/PyrListPrim.cpp
38 LangPrimSource/PyrPlatformPrim.cpp
39 LangPrimSource/PyrStringPrim.cpp
40 LangPrimSource/PyrSymbolPrim.cpp
41 LangPrimSource/PyrUnixPrim.cpp
42 LangSource/AdvancingAllocPool.cpp
43 LangSource/ByteCodeArray.cpp
44 LangSource/DumpParseNode.cpp
46 LangSource/InitAlloc.cpp
47 LangSource/PyrFileUtils.cpp
48 LangSource/PyrInterpreter3.cpp
49 LangSource/PyrLexer.cpp
50 LangSource/PyrMathOps.cpp
51 LangSource/PyrMathSupport.cpp
52 LangSource/PyrMessage.cpp
53 LangSource/PyrObject.cpp
54 LangSource/PyrParseNode.cpp
55 LangSource/PyrSignal.cpp
56 LangSource/PyrSymbolTable.cpp
57 LangSource/SC_LanguageClient.cpp
58 LangSource/SC_LibraryConfig.cpp
59 LangSource/SC_TerminalClient.cpp
61 LangSource/SimpleStack.cpp
62 LangSource/VMGlobals.cpp
63 LangSource/dumpByteCodes.cpp
65 ${CMAKE_SOURCE_DIR}/common/fftlib.c
66 ${CMAKE_SOURCE_DIR}/common/SC_AllocPool.cpp
67 ${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
68 ${CMAKE_SOURCE_DIR}/common/SC_Reply.cpp
69 ${CMAKE_SOURCE_DIR}/common/SC_Sem.cpp
70 ${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
71 ${CMAKE_SOURCE_DIR}/common/SC_StringBuffer.cpp
72 ${CMAKE_SOURCE_DIR}/common/SC_StringParser.cpp
73 ${CMAKE_SOURCE_DIR}/common/scsynthsend.cpp
74 ${CMAKE_SOURCE_DIR}/common/sc_popen.cpp
77 file(GLOB boost_system_sources ../external_libraries/boost/libs/system/src/*cpp)
78 file(GLOB boost_fs_sources ../external_libraries/boost/libs/filesystem/v3/src/*cpp)
79 file(GLOB boost_regex_sources ../external_libraries/boost/libs/regex/src/*cpp)
80 list(APPEND sclang_sources ${boost_fs_sources} ${boost_system_sources} ${boost_regex_sources})
82 file(GLOB yaml_sources ../external_libraries/yaml-cpp-0.3.0/src/*cpp)
83 list(APPEND sclang_sources ${yaml_sources})
86 list(APPEND sclang_sources LangPrimSource/PyrSerialPrim.cpp)
90 list(APPEND sclang_sources ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
94 include_directories(../platform/windows/compat_stuff)
95 list(APPEND sclang_sources ../platform/windows/compat_stuff/getopt.c)
98 set(sclang_parser_source LangSource/Bison/lang11d_tab.cpp)
100 add_definitions(-DYYSTACK_USE_ALLOCA)
104 list(APPEND sclang_sources
105 LangPrimSource/WiiMote_OSX/wiiremote.c
106 LangPrimSource/SC_HID.cpp
107 LangPrimSource/${HID_UTIL_DIR}/HID_Utilities.c
108 LangPrimSource/${HID_UTIL_DIR}/HID_Name_Lookup.c
109 LangPrimSource/${HID_UTIL_DIR}/HID_Queue_Utilities.c
110 LangPrimSource/${HID_UTIL_DIR}/HID_Error_Handler.c
111 LangPrimSource/SC_CoreMIDI.cpp
112 LangPrimSource/SC_CoreAudioPrim.cpp
113 LangPrimSource/SC_Speech.M
115 add_definitions(-DHAVE_SPEECH)
116 if (CMAKE_COMPILER_IS_GNUCXX)
117 set_source_files_properties(LangPrimSource/SC_Speech.M
118 PROPERTIES COMPILE_FLAGS "-x objective-c++ -fobjc-exceptions")
120 if(NOT (HID_UTIL_DIR MATCHES "HID_Utilities_10_4"))
121 list(APPEND sclang_sources
122 LangPrimSource/${HID_UTIL_DIR}/IOHIDElement_.c
123 LangPrimSource/${HID_UTIL_DIR}/IOHIDDevice_.c
128 list(APPEND sclang_sources LangPrimSource/SC_AlsaMIDI.cpp)
130 list(APPEND sclang_sources LangPrimSource/SC_LID.cpp)
131 add_definitions(-DHAVE_LID)
137 include_directories (../platform/windows/compat_stuff)
138 list(APPEND sclang_sources ../platform/windows/compat_stuff/getopt.c)
140 include_directories (${PORTMIDI_INCLUDE_DIRS})
141 add_definitions(-DHAVE_PORTMIDI)
142 list(APPEND sclang_sources LangPrimSource/SC_PortMidi.cpp)
147 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
149 find_package(Bluetooth)
151 if (BLUETOOTH_FOUND AND CWIID_FOUND)
152 add_definitions(-DHAVE_WII)
153 include_directories(${CWIID_INCLUDE_DIRS} ${BLUETOOTH_INCLUDE_DIRS})
154 message(STATUS "Compiling with WiiMote support")
156 message(SEND_ERROR "Cannot find libcwiid or libbluetooth")
159 add_definitions(-DHAVE_WII)
160 list(APPEND sclang_sources LangPrimSource/WiiMote_OSX/wiiremote.c)
161 include_directories(LangPrimSource/WiiMote_OSX)
166 set(QT_COLLIDER_LANG_CLIENT ON)
167 include(../QtCollider/CMakeLists.txt)
168 list(APPEND sclang_sources ${QT_COLLIDER_SRCS})
171 if(0 AND FINAL_BUILD) # sclang final-builds are broken
172 CREATE_FINAL_FILE(libsclang_final.cpp ${sclang_sources})
173 add_library(libsclang STATIC libsclang_final.cpp ${sclang_parser_source})
175 add_library(libsclang STATIC ${sclang_sources} ${sclang_parser_source})
178 set_property(TARGET libsclang
180 PROPERTY COMPILE_DEFINITIONS BUILDING_SUPERCOLLIDER)
183 if (BLUETOOTH_FOUND AND CWIID_FOUND)
184 target_link_libraries(libsclang ${BLUETOOTH_LIBRARIES} ${CWIID_LIBRARIES})
186 target_link_libraries(libsclang "-framework IOBluetooth")
191 target_link_libraries(libsclang libscsynth)
193 set_property(TARGET libsclang
195 PROPERTY COMPILE_DEFINITIONS NO_INTERNAL_SERVER
200 set_property(TARGET libsclang
201 PROPERTY OUTPUT_NAME sclang)
204 ## external libraries
206 message(STATUS "Compiling with Readline support")
207 set_property(TARGET libsclang
209 PROPERTY COMPILE_DEFINITIONS HAVE_READLINE)
210 include_directories(${READLINE_INCLUDE_DIR})
211 target_link_libraries(libsclang ${READLINE_LIBRARY})
212 endif(READLINE_FOUND)
215 target_link_libraries(libsclang "-framework Carbon")
216 target_link_libraries(libsclang "-framework CoreAudio")
217 target_link_libraries(libsclang "-framework CoreMIDI")
218 target_link_libraries(libsclang "-framework IOKit")
219 target_link_libraries(libsclang "-framework CoreServices")
223 message(STATUS "Compiling with ALSA midi support")
224 set_property(TARGET libsclang
226 PROPERTY COMPILE_DEFINITIONS HAVE_ALSA=1)
227 target_link_libraries(libsclang ${ALSA_LIBRARY})
231 include_directories(${SNDFILE_INCLUDE_DIR})
232 target_link_libraries(libsclang ${SNDFILE_LIBRARIES})
233 elseif(NOT NO_LIBSNDFILE)
234 message(SEND_ERROR "Cannot find libsndfile")
238 include_directories (${FFTW3F_INCLUDE_DIR})
239 target_link_libraries(libsclang ${FFTW3F_LIBRARY})
243 target_link_libraries(libsclang wsock32 ws2_32)
245 target_link_libraries(libsclang ${PORTMIDI_LIBRARIES})
250 add_definitions(-DGC_SANITYCHECK)
253 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
254 target_link_libraries(libsclang rt)
257 target_link_libraries(libsclang ${PTHREADS_LIBRARY} boost_thread)
260 target_link_libraries(libsclang ${QT_COLLIDER_LIBS})
263 add_executable(sclang LangSource/cmdLineFuncs.cpp)
264 target_link_libraries(sclang libsclang boost_thread)
266 set_property(TARGET sclang
268 PROPERTY COMPILE_DEFINITIONS USE_SC_TERMINAL_CLIENT)
271 set_property(TARGET sclang libsclang
272 APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
274 set_property(TARGET sclang libsclang
275 APPEND PROPERTY LINK_FLAGS "-flto -flto-report -fwhole-program")
279 # determines the app name and app install location (scappbundlename, scappdir):
280 include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
282 install(TARGETS sclang
283 DESTINATION "${scappauxresourcesdir}"
284 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
286 install(TARGETS sclang
287 DESTINATION "SuperCollider"
288 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
290 install(TARGETS sclang
291 RUNTIME DESTINATION "bin"
292 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)