Fix two formatting mistakes in Buffer:query
[supercollider.git] / lang / CMakeLists.txt
blobcf058859b6de742606e0d7186186cdc42177e343
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
10                     LangSource/Bison)
12 if(APPLE)
13         include_directories("LangPrimSource/${HID_UTIL_DIR}")
14 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
15         find_package(ALSA)
16 elseif(WIN32)
17         find_package(Portmidi)
18 endif()
20 find_package(Readline 5.0)
22 find_package(Sndfile)
24 set(sclang_sources
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
45         LangSource/GC.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
60         LangSource/Samp.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})
85 if(NOT WIN32)
86         list(APPEND sclang_sources LangPrimSource/PyrSerialPrim.cpp)
87 endif()
89 if(WIN32)
90         list(APPEND sclang_sources ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
91 endif()
93 if(WIN32)
94         include_directories(../platform/windows/compat_stuff)
95         list(APPEND sclang_sources ../platform/windows/compat_stuff/getopt.c)
96 endif()
98 set(sclang_parser_source LangSource/Bison/lang11d_tab.cpp)
100 add_definitions(-DYYSTACK_USE_ALLOCA)
102 if(UNIX)
103         if(APPLE)
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
114                         )
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")
119                 endif()
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
124                         )
125                 endif()
126         else(APPLE)
127                 if(ALSA_FOUND)
128                         list(APPEND sclang_sources LangPrimSource/SC_AlsaMIDI.cpp)
129                 endif()
130                 list(APPEND sclang_sources LangPrimSource/SC_LID.cpp)
131                 add_definitions(-DHAVE_LID)
132         endif(APPLE)
133 else(UNIX)
134 endif(UNIX)
136 if(WIN32)
137         include_directories (../platform/windows/compat_stuff)
138         list(APPEND sclang_sources ../platform/windows/compat_stuff/getopt.c)
139         if(PORTMIDI_FOUND)
140                 include_directories (${PORTMIDI_INCLUDE_DIRS})
141                 add_definitions(-DHAVE_PORTMIDI)
142                 list(APPEND sclang_sources LangPrimSource/SC_PortMidi.cpp)
143         endif()
144 endif()
146 if (SC_WII OR APPLE)
147         if(CMAKE_SYSTEM_NAME MATCHES "Linux")
148                 find_package(CWiid)
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")
155                 else()
156                         message(SEND_ERROR "Cannot find libcwiid or libbluetooth")
157                 endif()
158         elseif(APPLE)
159                 add_definitions(-DHAVE_WII)
160                 list(APPEND sclang_sources LangPrimSource/WiiMote_OSX/wiiremote.c)
161                 include_directories(LangPrimSource/WiiMote_OSX)
162         endif()
163 endif()
165 if(SC_QT)
166         set(QT_COLLIDER_LANG_CLIENT ON)
167         include(../QtCollider/CMakeLists.txt)
168         list(APPEND sclang_sources ${QT_COLLIDER_SRCS})
169 endif()
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})
174 else()
175         add_library(libsclang STATIC ${sclang_sources} ${sclang_parser_source})
176 endif()
178 set_property(TARGET libsclang
179         APPEND
180         PROPERTY COMPILE_DEFINITIONS BUILDING_SUPERCOLLIDER)
182 if (SC_WII OR APPLE)
183         if (BLUETOOTH_FOUND AND CWIID_FOUND)
184                 target_link_libraries(libsclang ${BLUETOOTH_LIBRARIES} ${CWIID_LIBRARIES})
185         elseif(APPLE)
186                 target_link_libraries(libsclang "-framework IOBluetooth")
187         endif()
188 endif()
190 if (SCLANG_SERVER)
191         target_link_libraries(libsclang libscsynth)
192 else()
193         set_property(TARGET libsclang
194                 APPEND
195                 PROPERTY COMPILE_DEFINITIONS NO_INTERNAL_SERVER
196                 )
197 endif()
200 set_property(TARGET libsclang
201         PROPERTY OUTPUT_NAME sclang)
204 ## external libraries
205 if(READLINE_FOUND)
206         message(STATUS "Compiling with Readline support")
207         set_property(TARGET libsclang
208                 APPEND
209                 PROPERTY COMPILE_DEFINITIONS HAVE_READLINE)
210         include_directories(${READLINE_INCLUDE_DIR})
211         target_link_libraries(libsclang ${READLINE_LIBRARY})
212 endif(READLINE_FOUND)
214 if (APPLE)
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")
220 endif()
222 if(ALSA_FOUND)
223         message(STATUS "Compiling with ALSA midi support")
224         set_property(TARGET libsclang
225                 APPEND
226                 PROPERTY COMPILE_DEFINITIONS HAVE_ALSA=1)
227         target_link_libraries(libsclang ${ALSA_LIBRARY})
228 endif(ALSA_FOUND)
230 if(SNDFILE_FOUND)
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")
235 endif(SNDFILE_FOUND)
237 if (FFTW3F_FOUND)
238         include_directories (${FFTW3F_INCLUDE_DIR})
239         target_link_libraries(libsclang ${FFTW3F_LIBRARY})
240 endif()
242 if (WIN32)
243         target_link_libraries(libsclang wsock32 ws2_32)
244         if(PORTMIDI_FOUND)
245                 target_link_libraries(libsclang ${PORTMIDI_LIBRARIES})
246         endif()
247 endif()
249 if (GC_SANITYCHECK)
250         add_definitions(-DGC_SANITYCHECK)
251 endif()
253 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
254         target_link_libraries(libsclang rt)
255 endif()
257 target_link_libraries(libsclang ${PTHREADS_LIBRARY} boost_thread)
259 if(SC_QT)
260         target_link_libraries(libsclang ${QT_COLLIDER_LIBS})
261 endif()
263 add_executable(sclang LangSource/cmdLineFuncs.cpp)
264 target_link_libraries(sclang libsclang boost_thread)
266 set_property(TARGET sclang
267         APPEND
268         PROPERTY COMPILE_DEFINITIONS USE_SC_TERMINAL_CLIENT)
270 if(LTO)
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")
276 endif()
278 if(APPLE)
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)
285 elseif(WIN32)
286         install(TARGETS sclang
287                         DESTINATION "SuperCollider"
288                         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
289 else()
290         install(TARGETS sclang
291                         RUNTIME DESTINATION "bin"
292                         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
293 endif()