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