Use cmake detection of 10.4 mac SDK to compile HID_Utilities_10_4 (resuscitated older...
[supercollider.git] / CMakeLists.txt
blobb6b445a75da7ae9d0d0b4e4f66c398f96be846a6
1 cmake_minimum_required (VERSION 2.6)
2 project (SuperCollider)
3 enable_testing()
5 include (cmake_modules/FinalFile.cmake)
7 if (NOT CMAKE_BUILD_TYPE)
8         message(STATUS "Build type defaulting to \"Release\"")
9         set(CMAKE_BUILD_TYPE "Release")
10 endif()
12 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules
13                       ${CMAKE_MODULE_PATH})
15 CONFIGURE_FILE(
16   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/cmake_uninstall.cmake.in"
17   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
18   IMMEDIATE @ONLY)
20 ADD_CUSTOM_TARGET(uninstall
21   "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
23 ADD_CUSTOM_TARGET(setMainVersion ALL
24        sh ${CMAKE_CURRENT_SOURCE_DIR}/setMainVersion.sh
25        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
26        VERBATIM
27       )
29 if(APPLE)
30         STRING(REGEX REPLACE "^.*MacOSX10.([0-9]+).*$" "\\1" MAC_OSX_SDK_VERSION  "${CMAKE_OSX_SYSROOT}")
32         if($MAC_OSX_SDK_VERSION GREATER 4)
33                 set(HID_UTIL_DIR "HID_Utilities")
34         else()
35                 set(HID_UTIL_DIR "HID_Utilities_10_4")
36         endif()
37         MESSAGE( STATUS "Using HID Utilities from folder '${HID_UTIL_DIR}'")
38 endif()
40 #############################################
41 # Compiler flags etc
43 if (${CMAKE_COMPILER_IS_GNUCXX})
44         add_definitions("-ffast-math" "-fschedule-insns2" "-fomit-frame-pointer")
46         option(DSO_VISIBILITY "DSO visibility support for gcc" OFF)
48         if (DSO_VISIBILITY)
49                 add_definitions(-fvisibility=hidden)
50         endif()
52         if(APPLE)
53                 add_definitions("-D_REENTRANT")
54         else()
55                 add_definitions("-pthread")
56         endif()
57 endif ()
59 if(APPLE)
60         set_property(DIRECTORY
61                 APPEND
62                 PROPERTY COMPILE_DEFINITIONS SC_DARWIN)
63         exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info)
64         if ("${_gcc_version_info}" MATCHES "Apple")
65                 add_definitions("-fpascal-strings")
66         endif()
67 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
68         add_definitions("-DSC_LINUX")
69         add_definitions(-DSC_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/SuperCollider")
70 endif()
72 if(WIN32)
73         set_property(DIRECTORY
74                      APPEND
75                      PROPERTY COMPILE_DEFINITIONS SC_WIN32 NOMINMAX _WINSOCKAPI_)
76         SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE} /MTd")
77         SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} /MT")
78 endif()
81 #############################################
82 # some default libraries
84 find_package(Pthreads)
86 if (NOT PTHREADS_FOUND)
87     message(SEND_ERROR "cannot find libpthreads")
88 endif()
89 include_directories(${PTHREADS_INCLUDE_DIR})
91 find_library(MATH_LIBRARY m)
93 if(CURL)
94         find_package(CURL)
95         if(CURL_FOUND)
96                 add_definitions("-DHAVE_LIBCURL")
97                 include_directories(${CURL_INCLUDE_DIRS})
98         endif()
99 endif()
101 #############################################
102 # Options
103 option(NOVA_SIMD "Build with nova-simd support." ON)
104 option(FINAL_BUILD "Build as single source file." OFF)
106 option(CURL "Build with curl for remote file download." ON)
108 option(FFT_GREEN "Use internal 'Green' FFT lib rather than FFTW. (Not recommended.)" OFF)
109 mark_as_advanced(FFT_GREEN)
111 option(SSE "Compile with support for SSE instructions.")
112 option(SSE41 "Compile with support for SSE4.1 instructions.")
113 option(SSE42 "Compile with support for SSE4.2 instructions.")
116 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
117     option(SUPERNOVA "Build with supernova as optional audio synthesis server" ON)
118 elseif()
119     option(SUPERNOVA "Build with supernova as optional audio synthesis server" OFF)
120 endif()
121 option(SN_MEMORY_DEBUGGING "Build supernova for memory debugging (disable memory pools).")
123 option(NO_LIBSNDFILE "Disable soundfile functionality. (Not recommended.)" OFF)
124 mark_as_advanced(NO_LIBSNDFILE)
126 if(NOT WIN32)
127         option(SCLANG_SERVER "Build with internal server." ON)
128 endif()
130 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
131         option(SC_WII "Build sclang with WII support" ON)
132 endif()
134 if(CMAKE_COMPILER_IS_GNUCXX)
135     option(NATIVE "Optimize binary for this architecture (binaries may not run on other machines, requires gcc-4.3 or higher).")
136     option(LTO "Use GCC's link time optimizer' (experimental).")
137 endif()
139 #############################################
140 # some preprocessor flags
141 if(CMAKE_COMPILER_IS_GNUCXX)
142   if(SSE)
143     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -mfpmath=sse")
144     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -mfpmath=sse")
145   endif()
146   if(SSE41)
147     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
148     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
149   endif()
150   if(SSE42)
151     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
152     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
153   endif()
154   if(NATIVE)
155     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
156     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
157   endif()
158 endif()
163 #############################################
164 # subdirectories
165 add_subdirectory(server)
166 add_subdirectory(lang)
167 add_subdirectory(bindings)
168 add_subdirectory(platform)
169 add_subdirectory(editors)
170 add_subdirectory(external_libraries)
171 add_subdirectory(testsuite)
173 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
174     install(DIRECTORY include
175         DESTINATION ${CMAKE_INSTALL_PREFIX}/include/SuperCollider
176         PATTERN app* EXCLUDE
177     )
178 endif()
180 if(APPLE)
181         # determines the app name and app install location (scappbundlename, scappdir):
182         include (cmake_modules/MacAppFolder.cmake)
184         set(auxresourcesdir ${scappauxresourcesdir})
186         # Some aux files which go in the app's folder
187         install(FILES README ChangeLog
188                 DESTINATION ${auxresourcesdir}
189         )
190         install(FILES COPYING AUTHORS
191                 DESTINATION ${scappdir}
192         )
193 else()
194         set(auxresourcesdir "share/SuperCollider")
195 endif()
197 install(DIRECTORY SCClassLibrary
198         DESTINATION ${auxresourcesdir}
199         PATTERN .git EXCLUDE
202 install(DIRECTORY Help
203         DESTINATION ${auxresourcesdir}
204         PATTERN .git EXCLUDE
207 install(DIRECTORY examples
208         DESTINATION ${auxresourcesdir}
209         PATTERN .git EXCLUDE
212 install(DIRECTORY sounds
213         DESTINATION ${auxresourcesdir}
214         PATTERN .git EXCLUDE
217 #############################################
218 # CPack support
220 set(CPACK_PACKAGE_VERSION_MAJOR 3)
221 set(CPACK_PACKAGE_VERSION_MINOR 5)
222 set(CPACK_PACKAGE_VERSION_PATCH dev)
223 include(CPack)