Tizen 2.1 base
[platform/upstream/libbullet.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.4.3)
2 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
3
4 #this line has to appear before 'PROJECT' in order to be able to disable incremental linking
5 SET(MSVC_INCREMENTAL_DEFAULT ON)
6
7 PROJECT(BULLET_PHYSICS)
8 SET(BULLET_VERSION 2.80)
9
10 IF(COMMAND cmake_policy)
11    cmake_policy(SET CMP0003 NEW)
12 ENDIF(COMMAND cmake_policy)
13
14
15 IF (NOT CMAKE_BUILD_TYPE)
16 # SET(CMAKE_BUILD_TYPE "Debug")
17  SET(CMAKE_BUILD_TYPE "Release")
18 ENDIF (NOT CMAKE_BUILD_TYPE) 
19
20 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
21 #MESSAGE("CMAKE_CXX_FLAGS_DEBUG="+${CMAKE_CXX_FLAGS_DEBUG})
22
23 OPTION(USE_DOUBLE_PRECISION "Use double precision"      OFF)
24 OPTION(USE_GRAPHICAL_BENCHMARK "Use Graphical Benchmark" ON)
25 OPTION(USE_MULTITHREADED_BENCHMARK "Use Multithreaded Benchmark" OFF)
26
27 IF (USE_MULTITHREADED_BENCHMARK)
28         ADD_DEFINITIONS(-DUSE_PARALLEL_SOLVER_BENCHMARK -DUSE_PARALLEL_DISPATCHER_BENCHMARK)
29 ENDIF()
30
31 OPTION(USE_MSVC_RUNTIME_LIBRARY_DLL "Use MSVC Runtime Library DLL (/MD or /MDd)" OFF)
32 OPTION(USE_MSVC_INCREMENTAL_LINKING "Use MSVC Incremental Linking" OFF)
33
34 OPTION(USE_CUSTOM_VECTOR_MATH "Use custom vectormath library" OFF)
35
36 IF (USE_CUSTOM_VECTOR_MATH)
37         ADD_DEFINITIONS(-DUSE_SYSTEM_VECTORMATH)
38         IF(WIN32)
39         SET (VECTOR_MATH_INCLUDE ${BULLET_PHYSICS_SOURCE_DIR}/src/vectormath/sse CACHE PATH "Vector Math library include path.")
40         ELSE(WIN32)
41         SET (VECTOR_MATH_INCLUDE ${BULLET_PHYSICS_SOURCE_DIR}/src/vectormath/scalar CACHE PATH "Vector Math library include path.")
42         ENDIF(WIN32)
43 ENDIF(USE_CUSTOM_VECTOR_MATH)
44
45 IF (MSVC)
46         FIND_PATH(DIRECTX_SDK_BASE_DIR Include/D3D11.h PATH  $ENV{DXSDK_DIR} )
47         IF(DIRECTX_SDK_BASE_DIR)
48                 OPTION(USE_DX11 "Use DirectX 11"        ON)
49         ELSE()
50                 OPTION(USE_DX11 "Use DirectX 11"        OFF)
51         ENDIF()
52 ENDIF(MSVC)
53
54
55 #SET(CMAKE_EXE_LINKER_FLAGS_INIT    "/STACK:10000000 /INCREMENTAL:NO")  
56 #SET(CMAKE_EXE_LINKER_FLAGS    "/STACK:10000000 /INCREMENTAL:NO")       
57
58 #MESSAGE("MSVC_INCREMENTAL_YES_FLAG"+${MSVC_INCREMENTAL_YES_FLAG})
59
60
61 IF(MSVC)
62         IF (NOT USE_MSVC_INCREMENTAL_LINKING)
63                 #MESSAGE("MSVC_INCREMENTAL_DEFAULT"+${MSVC_INCREMENTAL_DEFAULT})
64                 SET( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:NO")
65                  
66                 STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags ${CMAKE_EXE_LINKER_FLAGS_DEBUG}) 
67                 SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "/INCREMENTAL:NO ${replacementFlags}" )
68                 MESSAGE("CMAKE_EXE_LINKER_FLAGS_DEBUG=${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
69         
70 #               STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags2 ${CMAKE_EXE_LINKER_FLAGS}) 
71 #               SET(CMAKE_EXE_LINKER_FLAGS ${replacementFlag2}) 
72 #               STRING(REPLACE "INCREMENTAL:YES" "" replacementFlags3 ${CMAKE_EXTRA_LINK_FLAGS}) 
73 #               SET(CMAKE_EXTRA_LINK_FLAGS ${replacementFlag3}) 
74                 
75                 
76                 STRING(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replacementFlags3 ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO})
77                 SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${replacementFlags3}) 
78                 SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO ${replacementFlags3}" )
79         
80         ENDIF (NOT USE_MSVC_INCREMENTAL_LINKING)
81
82         IF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
83                 #We statically link to reduce dependancies
84                 FOREACH(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
85                         IF(${flag_var} MATCHES "/MD")
86                                 STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
87                         ENDIF(${flag_var} MATCHES "/MD")
88                         IF(${flag_var} MATCHES "/MDd")
89                                 STRING(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
90                         ENDIF(${flag_var} MATCHES "/MDd")
91                 ENDFOREACH(flag_var)
92         ENDIF (NOT USE_MSVC_RUNTIME_LIBRARY_DLL)
93
94         OPTION(USE_MSVC_SSE "Use MSVC /arch:sse option" ON)
95         IF (USE_MSVC_SSE)
96                 ADD_DEFINITIONS(/arch:SSE)
97         ENDIF()
98         OPTION(USE_MSVC_FAST_FLOATINGPOINT "Use MSVC /fp:fast option"   ON)
99         IF (USE_MSVC_FAST_FLOATINGPOINT)
100                 ADD_DEFINITIONS(/fp:fast)
101   ENDIF()
102 ENDIF(MSVC)
103
104
105
106 IF (WIN32)
107 OPTION(INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES "Create MSVC projectfiles that can be distributed" OFF)
108
109 IF (INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
110         SET (LIBRARY_OUTPUT_PATH ${BULLET_PHYSICS_SOURCE_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
111         SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR})
112         SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${BULLET_PHYSICS_SOURCE_DIR})
113         SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${BULLET_PHYSICS_SOURCE_DIR})
114         SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${BULLET_PHYSICS_SOURCE_DIR})
115         SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${BULLET_PHYSICS_SOURCE_DIR})
116 ELSE()
117         SET (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
118 ENDIF()
119
120
121
122 OPTION(INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES "Create MSVC projectfiles with relative paths" OFF)
123 OPTION(INTERNAL_ADD_POSTFIX_EXECUTABLE_NAMES "Add MSVC postfix for executable names (_Debug)" OFF)
124
125 SET(CMAKE_DEBUG_POSTFIX "_Debug" CACHE STRING "Adds a postfix for debug-built libraries.")
126 SET(CMAKE_MINSIZEREL_POSTFIX "_MinsizeRel" CACHE STRING "Adds a postfix for MinsizeRelease-built libraries.")
127 SET(CMAKE_RELWITHDEBINFO_POSTFIX "_RelWithDebugInfo" CACHE STRING "Adds a postfix for ReleaseWithDebug-built libraries.")
128
129
130
131 IF(MSVC)
132         FIND_PATH(AMD_OPENCL_BASE_DIR include/CL/cl.h PATH  $ENV{ATISTREAMSDKROOT} $ENV{AMDAPPSDKROOT} )
133         IF(AMD_OPENCL_BASE_DIR)
134                 #AMD adds an extras slash at the end of the ATISTREAMSDKROOT variable
135                 SET(AMD_OPENCL_INCLUDES ${AMD_OPENCL_BASE_DIR}/include )
136                 MESSAGE("AMD OPENCL SDK FOUND")
137                 MESSAGE(${AMD_OPENCL_INCLUDES})
138                 IF (CMAKE_CL_64)
139                         SET(CMAKE_ATISTREAMSDK_LIBPATH          ${AMD_OPENCL_BASE_DIR}/lib/x86_64 )
140                 ELSE(CMAKE_CL_64)
141                         SET(CMAKE_ATISTREAMSDK_LIBPATH          ${AMD_OPENCL_BASE_DIR}/lib/x86 )
142                 ENDIF(CMAKE_CL_64)
143                 OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" ON)
144         ELSE()
145                 OPTION(BUILD_AMD_OPENCL_DEMOS "Build OpenCL demos for AMD (GPU or CPU)" OFF)
146         ENDIF()
147         
148         FIND_PATH(INTEL_OPENCL_BASE_DIR include/CL/cl.h PATH  $ENV{INTELOCLSDKROOT} )
149         IF(INTEL_OPENCL_BASE_DIR)
150                 SET(INTEL_OPENCL_INCLUDES ${INTEL_OPENCL_BASE_DIR}/include )
151                 MESSAGE("INTEL OPENCL SDK FOUND")
152                 MESSAGE(${INTEL_OPENCL_INCLUDES})
153                 IF (CMAKE_CL_64)
154                         SET(CMAKE_INTELOCLSDK_LIBPATH           ${INTEL_OPENCL_BASE_DIR}/lib/x64 )
155                 ELSE(CMAKE_CL_64)
156                         SET(CMAKE_INTELOCLSDK_LIBPATH           ${INTEL_OPENCL_BASE_DIR}/lib/x86 )
157                 ENDIF(CMAKE_CL_64)
158                 SET(INTEL_OPENCL_LIBRARIES ${CMAKE_INTELOCLSDK_LIBPATH}/OpenCL.lib)
159                 OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)"    ON)
160         ELSE()
161                 OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)"    OFF)
162         ENDIF()
163         
164         FIND_PATH(NVIDIA_OPENCL_BASE_DIR include/CL/cl.h PATH  $ENV{CUDA_PATH} )
165         IF(NVIDIA_OPENCL_BASE_DIR)
166                 SET(NVIDIA_OPENCL_INCLUDES ${NVIDIA_OPENCL_BASE_DIR}/include )
167                 MESSAGE("NVIDIA OPENCL SDK FOUND")
168                 MESSAGE(${NVIDIA_OPENCL_INCLUDES})
169                 IF (CMAKE_CL_64)
170                         SET(CMAKE_NVSDKCOMPUTE_LIBPATH          ${NVIDIA_OPENCL_BASE_DIR}/lib/x64 )
171                 ELSE(CMAKE_CL_64)
172                         SET(CMAKE_NVSDKCOMPUTE_LIBPATH          ${NVIDIA_OPENCL_BASE_DIR}/lib/Win32     )
173                 ENDIF(CMAKE_CL_64)
174         SET(NVIDIA_OPENCL_LIBRARIES             ${CMAKE_NVSDKCOMPUTE_LIBPATH}/OpenCL.lib)
175         
176                 OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)"  ON)
177         ELSE()
178                 OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)"  OFF)
179         ENDIF()
180 ENDIF()
181
182
183
184 IF (INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES)
185 SET(CMAKE_SUPPRESS_REGENERATION  1)
186 SET(CMAKE_USE_RELATIVE_PATHS 1)
187 ENDIF(INTERNAL_CREATE_MSVC_RELATIVE_PATH_PROJECTFILES)
188
189 ENDIF (WIN32)
190
191 IF (MSVC OR APPLE)
192         OPTION(BUILD_MINICL_OPENCL_DEMOS "Build OpenCL demos for MiniCL (Generic CPU)"  ON)
193 ELSE()
194         OPTION(BUILD_MINICL_OPENCL_DEMOS "Build OpenCL demos for MiniCL (Generic CPU)" OFF)
195         
196         FIND_PATH(INTEL_OPENCL_INCLUDES CL/cl.h)
197         FIND_PATH(INTEL_OPENCL_ICD_CFG intelocl64.icd /etc/OpenCL/vendors)
198         FIND_LIBRARY(INTEL_OPENCL_LIBRARIES OpenCL PATH /usr/lib64)
199         IF (INTEL_OPENCL_INCLUDES AND INTEL_OPENCL_LIBRARIES AND INTEL_OPENCL_ICD_CFG)
200                 MESSAGE("INTEL OPENCL SDK FOUND")
201                 MESSAGE(${INTEL_OPENCL_LIBRARIES})
202                 OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)"        ON)
203         ELSE ()
204                 MESSAGE("INTEL OPENCL NOT FOUND")
205                 OPTION(BUILD_INTEL_OPENCL_DEMOS "Build OpenCL demos for Intel (CPU)"        OFF)
206         ENDIF ()
207
208         FIND_PATH(NVIDIA_OPENCL_INCLUDES CL/cl.h)
209         FIND_PATH(NVIDIA_OPENCL_ICD_CFG nvidia.icd /etc/OpenCL/vendors)
210         FIND_LIBRARY(NVIDIA_OPENCL_LIBRARIES OpenCL PATH /usr/lib64 /usr/local/lib)
211         IF (NVIDIA_OPENCL_INCLUDES AND NVIDIA_OPENCL_LIBRARIES AND NVIDIA_OPENCL_ICD_CFG)
212                 MESSAGE("NVidia OPENCL FOUND")
213                 MESSAGE(${NVIDIA_OPENCL_LIBRARIES})
214                 OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)"  ON)
215         ELSE ()
216                 MESSAGE("NVidia OPENCL NOT FOUND")
217                 OPTION(BUILD_NVIDIA_OPENCL_DEMOS "Build OpenCL demos for NVidia (GPU)"  OFF)
218         ENDIF ()
219
220 ENDIF()
221
222 OPTION(BUILD_CPU_DEMOS "Build original Bullet CPU demos"        ON)
223
224
225
226 OPTION(INTERNAL_UPDATE_SERIALIZATION_STRUCTURES "Internal update serialization structures" OFF)
227 IF (INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
228 ADD_DEFINITIONS( -DBT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
229 ENDIF (INTERNAL_UPDATE_SERIALIZATION_STRUCTURES)
230
231 IF (USE_DOUBLE_PRECISION)
232 ADD_DEFINITIONS( -DBT_USE_DOUBLE_PRECISION)
233 SET( BULLET_DOUBLE_DEF "-DBT_USE_DOUBLE_PRECISION")
234 ENDIF (USE_DOUBLE_PRECISION)
235
236 IF(USE_GRAPHICAL_BENCHMARK)
237 ADD_DEFINITIONS( -DUSE_GRAPHICAL_BENCHMARK)
238 ENDIF (USE_GRAPHICAL_BENCHMARK)
239
240 IF (WIN32)
241 OPTION(USE_GLUT "Use Glut"      ON)
242 ADD_DEFINITIONS( -D_IRR_STATIC_LIB_ )
243 ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
244 ADD_DEFINITIONS( -D_CRT_SECURE_NO_DEPRECATE )
245 ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
246
247 IF (USE_GLUT AND MSVC)
248         string (REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
249         remove_definitions(-D_WINDOWS )
250 ENDIF()
251
252
253
254 ELSE(WIN32)
255 OPTION(USE_GLUT "Use Glut"      ON)
256 ENDIF(WIN32)
257
258    
259 IF(COMMAND cmake_policy)
260    cmake_policy(SET CMP0003 NEW)
261 ENDIF(COMMAND cmake_policy)
262    
263
264 # This is the shortcut to finding GLU, GLUT and OpenGL if they are properly installed on your system
265 # This should be the case.
266
267 FIND_PACKAGE(OpenGL)
268 IF (OPENGL_FOUND)
269         MESSAGE("OPENGL FOUND")
270         MESSAGE(${OPENGL_LIBRARIES})
271 ELSE (OPENGL_FOUND)
272         MESSAGE("OPENGL NOT FOUND")
273         SET(OPENGL_gl_LIBRARY opengl32)
274         SET(OPENGL_glu_LIBRARY glu32)
275 ENDIF (OPENGL_FOUND)
276
277 # ADD_DEFINITIONS(-DBT_USE_FREEGLUT)
278
279 FIND_PACKAGE(GLU)
280
281 IF (USE_GLUT)
282         FIND_PACKAGE(GLUT)
283         IF (GLUT_FOUND)
284                 MESSAGE("GLUT FOUND")
285                 MESSAGE(${GLUT_glut_LIBRARY})
286         ELSE (GLUT_FOUND)
287                 IF (MINGW)
288                         MESSAGE ("GLUT NOT FOUND not found, trying to use MINGW glut32")
289                         SET(GLUT_glut_LIBRARY glut32)
290                         #TODO add better GLUT detection for MinGW
291                         SET(GLUT_FOUND TRUE)
292                 ENDIF (MINGW)
293                 IF (MSVC)
294                         SET(GLUT_FOUND TRUE)
295                         IF (CMAKE_CL_64)
296                                 message("Win64 using Glut/glut64.lib")
297                                 SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut64.lib)
298                         ELSE(CMAKE_CL_64)
299                                 message("Win32 using Glut/glut32.lib")
300                                 SET(GLUT_glut_LIBRARY ${BULLET_PHYSICS_SOURCE_DIR}/Glut/glut32.lib)
301                         ENDIF (CMAKE_CL_64)
302                         INCLUDE_DIRECTORIES(${BULLET_PHYSICS_SOURCE_DIR}/Glut)
303                 ELSE()
304                         MESSAGE("GLUT NOT FOUND")       
305                 ENDIF (MSVC)
306         ENDIF (GLUT_FOUND)
307
308         IF(NOT WIN32)   
309                 # This is added for linux. This should always work if everything is installed and working fine.
310                 INCLUDE_DIRECTORIES(/usr/include /usr/local/include) 
311         ENDIF()
312 ENDIF(USE_GLUT)
313
314
315 OPTION(BUILD_DEMOS "Set when you want to build the demos" ON)
316 IF(BUILD_DEMOS)
317         IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos)
318                 SUBDIRS(Demos)
319         ENDIF()
320 ENDIF(BUILD_DEMOS)
321
322 #  "Demos_ps3")
323 IF (MSVC)
324         IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
325                 IF(EXISTS ${BULLET_PHYSICS_SOURCE_DIR}/Demos_ps3 AND IS_DIRECTORY ${BULLET_PHYSICS_SOURCE_DIR}/Demos_ps3)
326                 MESSAGE("Demos_ps3 found")
327                         SUBDIRS(Demos_ps3)
328                 ENDIF()
329         ENDIF()
330 ENDIF(MSVC)
331
332
333 OPTION(BUILD_EXTRAS "Set when you want to build the extras" ON)
334 IF(BUILD_EXTRAS)
335   SUBDIRS(Extras)
336 ENDIF(BUILD_EXTRAS)
337
338 #Maya Dynamica plugin is moved to http://dynamica.googlecode.com
339
340 SUBDIRS(src)
341
342 IF("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles")
343         OPTION(INSTALL_LIBS "Set when you want to install libraries" ON)
344 ELSE()
345         IF(APPLE AND FRAMEWORK)
346                 OPTION(INSTALL_LIBS "Set when you want to install libraries" ON)
347         ELSE()
348 #by default, don't enable the 'INSTALL' option for Xcode and MSVC projectfiles
349                 OPTION(INSTALL_LIBS "Set when you want to install libraries" OFF)
350         ENDIF()
351 ENDIF()
352
353 IF(INSTALL_LIBS)
354         SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
355         SET (LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name")
356         ## the following are directories where stuff will be installed to
357         SET(INCLUDE_INSTALL_DIR      "${CMAKE_INSTALL_PREFIX}/include/bullet/" CACHE PATH "The subdirectory to the header prefix")
358         SET(PKGCONFIG_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
359         IF(NOT WIN32)
360           CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bullet.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc @ONLY)
361         INSTALL(
362             FILES
363         ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc
364         DESTINATION
365         ${PKGCONFIG_INSTALL_PREFIX})
366         ENDIF(NOT WIN32)
367 ENDIF(INSTALL_LIBS)
368
369 #INSTALL of other files requires CMake 2.6
370 IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
371         OPTION(INSTALL_EXTRA_LIBS "Set when you want extra libraries installed" OFF)
372 ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
373
374 OPTION(BUILD_UNIT_TESTS "Build Unit Tests"      OFF)
375
376 IF (BUILD_UNIT_TESTS)
377         SUBDIRS(UnitTests)
378 ENDIF()