1// =============================================================================
2// PROJECT CHRONO - http://projectchrono.org
3//
4// Copyright (c) 2014 projectchrono.org
5// All rights reserved.
6//
7// Use of this source code is governed by a BSD-style license that can be found
8// in the LICENSE file at the top level of the distribution and at
9// http://projectchrono.org/license-chrono.txt.
10//
11// =============================================================================
12// Authors: Radu Serban
13// =============================================================================
14//
15// Chrono configuration header file
16//
17// Automatically created during CMake configuration.
18//
19// =============================================================================
20
21#ifndef CH_CONFIG_H
22#define CH_CONFIG_H
23
24// -----------------------------------------------------------------------------
25// Macros specifying enabled Chrono modules
26// -----------------------------------------------------------------------------
27
28// If module CASCADE was enabled, define CHRONO_CASCADE
29@CHRONO_CASCADE@
30
31// If module COSIMULATION was enabled, define CHRONO_COSIMULATION
32@CHRONO_COSIMULATION@
33
34// If module IRRLICHT was enabled, define CHRONO_IRRLICHT
35@CHRONO_IRRLICHT@
36
37// If module MATLAB was enabled, define CHRONO_MATLAB
38@CHRONO_MATLAB@
39
40// If module PARDISO_MKL was enabled, define CHRONO_PARDISO_MKL
41@CHRONO_PARDISO_MKL@
42
43// If module MUMPS was enabled, define CHRONO_MUMPS
44@CHRONO_MUMPS@
45
46// If module OPENGL was enabled, define CHRONO_OPENGL
47@CHRONO_OPENGL@
48
49// If module MULTICORE was enabled, define CHRONO_MULTICORE
50@CHRONO_MULTICORE@
51
52// If module POSTPROCESS was enabled, define CHRONO_POSTPROCESS
53@CHRONO_POSTPROCESS@
54
55// If module PYTHON was enabled, define CHRONO_PYTHON
56@CHRONO_PYTHON@
57
58// If module VEHICLE was enabled, define CHRONO_VEHICLE
59@CHRONO_VEHICLE@
60
61// If module FSI was enabled, define CHRONO_FSI
62@CHRONO_FSI@
63
64// If module GPU was enabled, define CHRONO_GPU
65@CHRONO_GPU@
66
67// If module SYNCHRONO was enabled, define CHRONO_SYNCHRONO
68@CHRONO_SYNCHRONO@
69
70// If module SENSOR was enabled, define CHRONO_SENSOR
71@CHRONO_SENSOR@
72
73// If module PARDISOPROJECT was enabled, define CHRONO_PARDISOPROJECT
74@CHRONO_PARDISOPROJECT@
75
76// -----------------------------------------------------------------------------
77// OpenMP settings
78// -----------------------------------------------------------------------------
79
80// If OpenMP is found the following define is set
81//   #define CHRONO_OMP_FOUND
82// Set the highest OpenMP version supported, one of:
83//   #define CHRONO_OMP_VERSION "2.0"
84//   #define CHRONO_OMP_VERSION "3.0"
85//   #define CHRONO_OMP_VERSION "4.0"
86// and define one or more of the following, as appropriate
87//   #define CHRONO_OMP_20
88//   #define CHRONO_OMP_30
89//   #define CHRONO_OMP_40
90@CHRONO_OMP_FOUND@
91@CHRONO_OMP_VERSION@
92@CHRONO_OMP_20@
93@CHRONO_OMP_30@
94@CHRONO_OMP_40@
95
96// If OpenMP support was enabled in the main ChronoEngine library, define CHRONO_OPENMP_ENABLED
97@CHRONO_OPENMP_ENABLED@
98
99// If TBB support was enabled in the main ChronoEngine library, define CHRONO_TBB_ENABLED
100@CHRONO_TBB_ENABLED@
101
102// -----------------------------------------------------------------------------
103
104// If SSE support was found, then
105//   #define CHRONO_HAS_SSE
106// and set the SSE level support, one of the following
107//   #define CHRONO_SSE_LEVEL "1.0"
108//   #define CHRONO_SSE_LEVEL "2.0"
109//   #define CHRONO_SSE_LEVEL "3.0"
110//   #define CHRONO_SSE_LEVEL "4.1"
111//   #define CHRONO_SSE_LEVEL "4.2"
112// and define one or more of the following, as appropriate
113//   #define CHRONO_SSE_1.0
114//   #define CHRONO_SSE_2.0
115//   #define CHRONO_SSE_3.0
116//   #define CHRONO_SSE_4.1
117//   #define CHRONO_SSE_4.2
118
119@CHRONO_HAS_SSE@
120@CHRONO_SSE_LEVEL@
121@CHRONO_SSE_1_0@
122@CHRONO_SSE_2_0@
123@CHRONO_SSE_3_0@
124@CHRONO_SSE_4_1@
125@CHRONO_SSE_4_2@
126
127// -----------------------------------------------------------------------------
128
129// If AVX support was found, then
130//   #define CHRONO_HAS_AVX
131// and set the SSE level support, one of the following
132//   #define CHRONO_AVX_LEVEL "1.0"
133//   #define CHRONO_AVX_LEVEL "2.0"
134// and define one or more of the following, as appropriate
135//   #define CHRONO_AVX_1.0
136//   #define CHRONO_AVX_2.0
137
138@CHRONO_HAS_AVX@
139@CHRONO_AVX_LEVEL@
140@CHRONO_AVX_1_0@
141@CHRONO_AVX_2_0@
142
143// -----------------------------------------------------------------------------
144
145// If NEON support was found, then
146//   #define CHRONO_HAS_NEON
147
148@CHRONO_HAS_NEON@
149
150// -----------------------------------------------------------------------------
151
152// If FMA support was found, then
153//   #define CHRONO_HAS_FMA
154
155@CHRONO_HAS_FMA@
156
157// -----------------------------------------------------------------------------
158
159// Use SIMD if available
160
161@CHRONO_SIMD_ENABLED@
162
163// -----------------------------------------------------------------------------
164
165// If HDF5 was found, then
166//   #define CHRONO_HAS_HDF5
167
168@CHRONO_HAS_HDF5@
169
170// -----------------------------------------------------------------------------
171
172// If CUDA is available, then
173//   #define CHRONO_HAS_CUDA
174//   #CHRONO_CUDA_VERSION
175
176@CHRONO_HAS_CUDA@
177@CHRONO_CUDA_VERSION@
178
179// If THRUST is available, then
180//   #define CHRONO_HAS_THRUST
181//   #CHRONO_THRUST_VERSION
182
183@CHRONO_HAS_THRUST@
184@CHRONO_THRUST_VERSION@
185
186// If CUDA is not available, force Thrust to always use the OMP backend
187#ifndef CHRONO_HAS_CUDA
188  #define THRUST_DEVICE_SYSTEM THRUST_DEVICE_SYSTEM_OMP
189#endif
190
191// -----------------------------------------------------------------------------
192
193// If Google Test and Benchmark are enabled and available, then
194//   #define CHRONO_HAS_GTEST
195//   #define CHRONO_HAS_GBENCHMARK
196
197@CHRONO_HAS_GTEST@
198@CHRONO_HAS_GBENCHMARK@
199
200// -----------------------------------------------------------------------------
201
202// If the Chrono multicore collision detection is available, define CHRONO_COLLISION
203@CHRONO_COLLISION@
204
205// Always use double in custom multicore collision detection
206#define USE_COLLISION_DOUBLE
207
208#endif
209