ConfigurationString.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2023 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. JPH_NAMESPACE_BEGIN
  6. /// Construct a string that lists the most important configuration settings
  7. inline const char *GetConfigurationString()
  8. {
  9. return JPH_IF_SINGLE_PRECISION_ELSE("Single", "Double") " precision "
  10. #if defined(JPH_CPU_X86)
  11. "x86 "
  12. #elif defined(JPH_CPU_ARM)
  13. "ARM "
  14. #elif defined(JPH_CPU_RISCV)
  15. "RISC-V "
  16. #elif defined(JPH_CPU_PPC)
  17. "PowerPC "
  18. #ifdef JPH_CPU_BIG_ENDIAN
  19. "(Big Endian) "
  20. #else
  21. "(Little Endian) "
  22. #endif
  23. #elif defined(JPH_CPU_LOONGARCH)
  24. "LoongArch "
  25. #elif defined(JPH_CPU_E2K)
  26. "E2K "
  27. #elif defined(JPH_CPU_WASM)
  28. "WASM "
  29. #else
  30. #error Unknown CPU architecture
  31. #endif
  32. #if JPH_CPU_ADDRESS_BITS == 64
  33. "64-bit "
  34. #elif JPH_CPU_ADDRESS_BITS == 32
  35. "32-bit "
  36. #endif
  37. "with instructions: "
  38. #ifdef JPH_USE_NEON
  39. "NEON "
  40. #endif
  41. #ifdef JPH_USE_SSE
  42. "SSE2 "
  43. #endif
  44. #ifdef JPH_USE_SSE4_1
  45. "SSE4.1 "
  46. #endif
  47. #ifdef JPH_USE_SSE4_2
  48. "SSE4.2 "
  49. #endif
  50. #ifdef JPH_USE_AVX
  51. "AVX "
  52. #endif
  53. #ifdef JPH_USE_AVX2
  54. "AVX2 "
  55. #endif
  56. #ifdef JPH_USE_AVX512
  57. "AVX512 "
  58. #endif
  59. #ifdef JPH_USE_F16C
  60. "F16C "
  61. #endif
  62. #ifdef JPH_USE_LZCNT
  63. "LZCNT "
  64. #endif
  65. #ifdef JPH_USE_TZCNT
  66. "TZCNT "
  67. #endif
  68. #ifdef JPH_USE_FMADD
  69. "FMADD "
  70. #endif
  71. #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
  72. "(Cross Platform Deterministic) "
  73. #endif
  74. #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
  75. "(FP Exceptions) "
  76. #endif
  77. #ifdef JPH_DEBUG_RENDERER
  78. "(Debug Renderer) "
  79. #endif
  80. #ifdef JPH_PROFILE_ENABLED
  81. "(Profile) "
  82. #endif
  83. #if defined(JPH_OBJECT_LAYER_BITS) && JPH_OBJECT_LAYER_BITS == 32
  84. "(32-bit ObjectLayer) "
  85. #else
  86. "(16-bit ObjectLayer) "
  87. #endif
  88. #ifdef JPH_ENABLE_ASSERTS
  89. "(Assertions) "
  90. #endif
  91. #ifdef JPH_OBJECT_STREAM
  92. "(ObjectStream) "
  93. #endif
  94. #ifdef JPH_DEBUG
  95. "(Debug) "
  96. #endif
  97. #if defined(__cpp_rtti) && __cpp_rtti
  98. "(C++ RTTI) "
  99. #endif
  100. #if defined(__cpp_exceptions) && __cpp_exceptions
  101. "(C++ Exceptions) "
  102. #endif
  103. ;
  104. }
  105. JPH_NAMESPACE_END