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