protected backtrace wasn't posted b/c it never got into the instance var
[supercollider.git] / lang / CMakeLists.txt
blob0755faf3b68ca954dc3eded029144a8000c7afd3
2 if (FFT_GREEN)
3         add_definitions("-DSC_FFT_GREEN")
4 else()
5         find_package(FFTW3f)
6 endif()
8 include_directories(${CMAKE_SOURCE_DIR}/include/common
9                     ${CMAKE_SOURCE_DIR}/include/lang
10                     ${CMAKE_SOURCE_DIR}/external_libraries/boost_lockfree
11                     ${CMAKE_SOURCE_DIR}/external_libraries/boost
12                     ${CMAKE_SOURCE_DIR}/external_libraries/threadpool
13                     ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.2.6/include
14                     ${CMAKE_SOURCE_DIR}/external_libraries/TLSF-2.4.6/src
15                     ${CMAKE_SOURCE_DIR}/include/plugin_interface
16                     LangSource/Bison)
18 if(APPLE)
19         include_directories("LangPrimSource/${HID_UTIL_DIR}")
20 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
21         find_package(ALSA)
22 endif()
24 if(APPLE)
25         # apple bundles an old nongpl readline so we say no even though it is usually detectable
26         set(READLINE_FOUND false)
27 elseif(WIN32)
28         set(READLINE_FOUND false)
29 else()
30         find_package(Readline)
31 endif()
32 find_package(Sndfile)
34 set(sclang_sources
35         LangPrimSource/SC_Wii.cpp
36         LangPrimSource/PyrSignalPrim.cpp
37         LangPrimSource/PyrSched.cpp
38         LangPrimSource/PyrPrimitive.cpp
39         LangPrimSource/PyrMathPrim.cpp
40         LangPrimSource/SC_ComPort.cpp
41         LangPrimSource/OSCData.cpp
42         LangPrimSource/PyrArchiver.cpp
43         LangPrimSource/PyrArrayPrimitives.cpp
44         LangPrimSource/PyrBitPrim.cpp
45         LangPrimSource/PyrCharPrim.cpp
46         LangPrimSource/PyrFilePrim.cpp
47         LangPrimSource/PyrListPrim.cpp
48         LangPrimSource/PyrPlatformPrim.cpp
49         LangPrimSource/PyrStringPrim.cpp
50         LangPrimSource/PyrSymbolPrim.cpp
51         LangPrimSource/PyrUnixPrim.cpp
52         LangSource/AdvancingAllocPool.cpp
53         LangSource/ByteCodeArray.cpp
54         LangSource/DumpParseNode.cpp
55         LangSource/GC.cpp
56         LangSource/InitAlloc.cpp
57         LangSource/PyrFileUtils.cpp
58         LangSource/PyrInterpreter3.cpp
59         LangSource/PyrLexer.cpp
60         LangSource/PyrMathOps.cpp
61         LangSource/PyrMathSupport.cpp
62         LangSource/PyrMessage.cpp
63         LangSource/PyrObject.cpp
64         LangSource/PyrParseNode.cpp
65         LangSource/PyrSignal.cpp
66         LangSource/PyrSymbolTable.cpp
67         LangSource/SC_LanguageClient.cpp
68         LangSource/SC_LibraryConfig.cpp
69         LangSource/SC_TerminalClient.cpp
70         LangSource/Samp.cpp
71         LangSource/SimpleStack.cpp
72         LangSource/VMGlobals.cpp
73         LangSource/dumpByteCodes.cpp
75         ${CMAKE_SOURCE_DIR}/common/fftlib.c
76         ${CMAKE_SOURCE_DIR}/common/SC_fftlib.cpp
77         ${CMAKE_SOURCE_DIR}/common/SC_AllocPool.cpp
78         ${CMAKE_SOURCE_DIR}/common/SC_DirUtils.cpp
79         ${CMAKE_SOURCE_DIR}/common/SC_Sem.cpp
80         ${CMAKE_SOURCE_DIR}/common/SC_StandAloneInfo_Darwin.cpp
81         ${CMAKE_SOURCE_DIR}/common/SC_StringBuffer.cpp
82         ${CMAKE_SOURCE_DIR}/common/SC_StringParser.cpp
83         ${CMAKE_SOURCE_DIR}/common/scsynthsend.cpp
84         ${CMAKE_SOURCE_DIR}/common/sc_popen.cpp
87 file(GLOB boost_system_sources ../external_libraries/boost/libs/system/src/*cpp)
88 file(GLOB boost_fs_sources ../external_libraries/boost/libs/filesystem/v3/src/*cpp)
89 file(GLOB boost_regex_sources ../external_libraries/boost/libs/regex/src/*cpp)
90 list(APPEND sclang_sources ${boost_fs_sources} ${boost_system_sources} ${boost_regex_sources})
92 file(GLOB yaml_sources ../external_libraries/yaml-cpp-0.2.6/src/*cpp)
93 list(APPEND sclang_sources ${yaml_sources})
95 if(NOT WIN32)
96         list(APPEND sclang_sources LangPrimSource/PyrSerialPrim.cpp)
97 endif()
99 if(WIN32)
100         list(APPEND sclang_sources ${CMAKE_SOURCE_DIR}/common/SC_Win32Utils.cpp)
101 endif()
103 if(WIN32)
104         include_directories(../platform/windows/compat_stuff)
105         list(APPEND sclang_sources ../platform/windows/compat_stuff/getopt.c)
106 endif()
108 set(sclang_parser_source LangSource/Bison/lang11d_tab.cpp)
110 add_definitions(-DYYSTACK_USE_ALLOCA)
112 if (SC_QT AND DSO_VISIBILITY)
113         remove_definitions(-fvisibility=hidden)
114 endif()
116 if(UNIX)
117         if(APPLE)
118                 list(APPEND sclang_sources
119                         LangPrimSource/WiiMote_OSX/wiiremote.c
120                         LangPrimSource/SC_HID.cpp
121                         LangPrimSource/${HID_UTIL_DIR}/HID_Utilities.c
122                         LangPrimSource/${HID_UTIL_DIR}/HID_Name_Lookup.c
123                         LangPrimSource/${HID_UTIL_DIR}/HID_Queue_Utilities.c
124                         LangPrimSource/${HID_UTIL_DIR}/HID_Error_Handler.c
125                         LangPrimSource/SC_CoreMIDI.cpp
126                         LangPrimSource/SC_CoreAudioPrim.cpp
127                         LangPrimSource/SC_Speech.M
128                         )
129                 add_definitions(-DHAVE_SPEECH)
130                 if (CMAKE_COMPILER_IS_GNUCXX)
131                         set_source_files_properties(LangPrimSource/SC_Speech.M
132                                                                                 PROPERTIES COMPILE_FLAGS "-x objective-c++ -fobjc-exceptions")
133                 endif()
134                 if(NOT (HID_UTIL_DIR MATCHES "HID_Utilities_10_4"))
135                         list(APPEND sclang_sources
136                                 LangPrimSource/${HID_UTIL_DIR}/IOHIDElement_.c
137                                 LangPrimSource/${HID_UTIL_DIR}/IOHIDDevice_.c
138                         )
139                 endif()
140         else(APPLE)
141                 if(ALSA_FOUND)
142                         list(APPEND sclang_sources LangPrimSource/SC_AlsaMIDI.cpp)
143                 endif()
144                 list(APPEND sclang_sources LangPrimSource/SC_LID.cpp)
145                 add_definitions(-DHAVE_LID)
146         endif(APPLE)
147 else(UNIX)
148 endif(UNIX)
150 if(WIN32)
151         include_directories (../platform/windows/compat_stuff)
152         list(APPEND sclang_sources ../platform/windows/compat_stuff/getopt.c)
153 endif()
155 if (SC_WII OR APPLE)
156         if(CMAKE_SYSTEM_NAME MATCHES "Linux")
157                 find_package(CWiid)
158                 find_package(Bluetooth)
160                 if (BLUETOOTH_FOUND AND CWIID_FOUND)
161                         add_definitions(-DHAVE_WII)
162                         include_directories(${CWIID_INCLUDE_DIRS} ${BLUETOOTH_INCLUDE_DIRS})
163                         message(STATUS "Compiling with WiiMote support")
164                 else()
165                         message(SEND_ERROR "Cannot find libcwiid or libbluetooth")
166                 endif()
167         elseif(APPLE)
168                 add_definitions(-DHAVE_WII)
169                 list(APPEND sclang_sources LangPrimSource/WiiMote_OSX/wiiremote.c)
170                 include_directories(LangPrimSource/WiiMote_OSX)
171         endif()
172 endif()
174 if(SC_QT)
175         set(QT_COLLIDER_LANG_CLIENT ON)
176         include(../QtCollider/CMakeLists.txt)
177         list(APPEND sclang_sources ${QT_COLLIDER_SRCS})
178 endif()
180 if(0 AND FINAL_BUILD) # sclang final-builds are broken
181         CREATE_FINAL_FILE(libsclang_final.cpp ${sclang_sources})
182         add_library(libsclang SHARED libsclang_final.cpp ${sclang_parser_source})
183 else()
184         add_library(libsclang SHARED ${sclang_sources} ${sclang_parser_source})
185 endif()
187 set_property(TARGET libsclang
188         APPEND
189         PROPERTY COMPILE_DEFINITIONS BUILDING_SUPERCOLLIDER)
191 if (SC_WII OR APPLE)
192         if (BLUETOOTH_FOUND AND CWIID_FOUND)
193                 target_link_libraries(libsclang ${BLUETOOTH_LIBRARIES} ${CWIID_LIBRARIES})
194         elseif(APPLE)
195                 target_link_libraries(libsclang "-framework IOBluetooth")
196         endif()
197 endif()
199 if (SCLANG_SERVER)
200         target_link_libraries(libsclang libscsynth)
201 else()
202         set_property(TARGET libsclang
203                 APPEND
204                 PROPERTY COMPILE_DEFINITIONS NO_INTERNAL_SERVER
205                 )
206 endif()
209 set_property(TARGET libsclang
210         PROPERTY OUTPUT_NAME sclang)
213 ## external libraries
214 if(READLINE_FOUND)
215         message(STATUS "Compiling with Readline support")
216         set_property(TARGET libsclang
217                 APPEND
218                 PROPERTY COMPILE_DEFINITIONS HAVE_READLINE)
219         target_link_libraries(libsclang ${READLINE_LIBRARY})
220 endif(READLINE_FOUND)
222 if (APPLE)
223         target_link_libraries(libsclang "-framework Carbon")
224         target_link_libraries(libsclang "-framework CoreAudio")
225         target_link_libraries(libsclang "-framework CoreMIDI")
226         target_link_libraries(libsclang "-framework IOKit")
227         target_link_libraries(libsclang "-framework CoreServices")
228 endif()
230 if(ALSA_FOUND)
231         message(STATUS "Compiling with ALSA midi support")
232         set_property(TARGET libsclang
233                 APPEND
234                 PROPERTY COMPILE_DEFINITIONS HAVE_ALSA=1)
235         target_link_libraries(libsclang ${ALSA_LIBRARY})
236 endif(ALSA_FOUND)
238 if(SNDFILE_FOUND)
239         include_directories(${SNDFILE_INCLUDE_DIR})
240         target_link_libraries(libsclang ${SNDFILE_LIBRARIES})
241 elseif(NOT NO_LIBSNDFILE)
242         message(SEND_ERROR "Cannot find libsndfile")
243 endif(SNDFILE_FOUND)
245 if (FFTW3F_FOUND)
246         include_directories (${FFTW3F_INCLUDE_DIR})
247         target_link_libraries(libsclang ${FFTW3F_LIBRARY})
248 endif()
250 if (WIN32)
251         target_link_libraries(libsclang wsock32 ws2_32)
252 endif()
254 if (GC_SANITYCHECK)
255         add_definitions(-DGC_SANITYCHECK)
256 endif()
258 target_link_libraries(libsclang ${PTHREADS_LIBRARY} supercollider_boost_thread)
260 if(SC_QT)
261         target_link_libraries(libsclang ${QT_COLLIDER_LIBS})
262 endif()
264 add_executable(sclang LangSource/cmdLineFuncs.cpp)
265 target_link_libraries(sclang libsclang boost_thread)
267 set_property(TARGET sclang
268         APPEND
269         PROPERTY COMPILE_DEFINITIONS USE_SC_TERMINAL_CLIENT)
271 if(LTO)
272     set_property(TARGET sclang libsclang
273                  APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
275     set_property(TARGET sclang libsclang
276                  APPEND PROPERTY LINK_FLAGS "-flto -flto-report -fwhole-program")
277 endif()
279 if(APPLE)
280         # determines the app name and app install location (scappbundlename, scappdir):
281         include (${CMAKE_SOURCE_DIR}/cmake_modules/MacAppFolder.cmake)
283         install(TARGETS libsclang sclang
284                         DESTINATION "${scappauxresourcesdir}"
285                         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
286                         COMPONENT app)
287 elseif(WIN32)
288         install(TARGETS libsclang sclang
289                         DESTINATION "SuperCollider"
290                         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
291 else()
292         install(TARGETS libsclang sclang
293                         LIBRARY DESTINATION "lib"
294                         RUNTIME DESTINATION "bin"
295                         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
296 endif()