|
@@ -8,6 +8,9 @@ option(DOUBLE_PRECISION "Use double precision math" OFF)
|
|
# When turning this option on, the library will be compiled with debug symbols
|
|
# When turning this option on, the library will be compiled with debug symbols
|
|
option(GENERATE_DEBUG_SYMBOLS "Generate debug symbols" ON)
|
|
option(GENERATE_DEBUG_SYMBOLS "Generate debug symbols" ON)
|
|
|
|
|
|
|
|
+# When turning this option on, the library will override the default CMAKE_CXX_FLAGS_DEBUG/RELEASE values, otherwise they will use the platform defaults
|
|
|
|
+option(OVERRIDE_CXX_FLAGS "Override CMAKE_CXX_FLAGS_DEBUG/RELEASE" ON)
|
|
|
|
+
|
|
# When turning this option on, the library will be compiled in such a way to attempt to keep the simulation deterministic across platforms
|
|
# When turning this option on, the library will be compiled in such a way to attempt to keep the simulation deterministic across platforms
|
|
option(CROSS_PLATFORM_DETERMINISTIC "Cross platform deterministic" OFF)
|
|
option(CROSS_PLATFORM_DETERMINISTIC "Cross platform deterministic" OFF)
|
|
|
|
|
|
@@ -125,10 +128,7 @@ if (("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR "${CMAKE_SYSTEM_NAME}" STREQUA
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASEUBSAN "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASEUBSAN "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASECOVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASECOVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
|
|
endif()
|
|
endif()
|
|
-elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "iOS" OR MINGW OR EMSCRIPTEN)
|
|
|
|
- # Set general compiler flags
|
|
|
|
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I.")
|
|
|
|
-
|
|
|
|
|
|
+elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "iOS" OR MINGW OR EMSCRIPTEN OR ANDROID)
|
|
# Enable warnings
|
|
# Enable warnings
|
|
if (ENABLE_ALL_WARNINGS)
|
|
if (ENABLE_ALL_WARNINGS)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
|
|
@@ -160,17 +160,17 @@ elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQU
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# Set compiler flags for various configurations
|
|
# Set compiler flags for various configurations
|
|
- set(CMAKE_CXX_FLAGS_DEBUG "")
|
|
|
|
- set(CMAKE_CXX_FLAGS_RELEASE "-O3")
|
|
|
|
- set(CMAKE_CXX_FLAGS_DISTRIBUTION "-O3")
|
|
|
|
|
|
+ if (OVERRIDE_CXX_FLAGS)
|
|
|
|
+ set(CMAKE_CXX_FLAGS_DEBUG "")
|
|
|
|
+ set(CMAKE_CXX_FLAGS_RELEASE "-O3")
|
|
|
|
+ endif()
|
|
|
|
+ set(CMAKE_CXX_FLAGS_DISTRIBUTION "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
set(CMAKE_CXX_FLAGS_RELEASEASAN "-fsanitize=address")
|
|
set(CMAKE_CXX_FLAGS_RELEASEASAN "-fsanitize=address")
|
|
set(CMAKE_CXX_FLAGS_RELEASEUBSAN "-fsanitize=undefined,implicit-conversion,float-divide-by-zero,local-bounds -fno-sanitize-recover=all")
|
|
set(CMAKE_CXX_FLAGS_RELEASEUBSAN "-fsanitize=undefined,implicit-conversion,float-divide-by-zero,local-bounds -fno-sanitize-recover=all")
|
|
set(CMAKE_CXX_FLAGS_RELEASECOVERAGE "-O0 -DJPH_NO_FORCE_INLINE -fprofile-instr-generate -fcoverage-mapping")
|
|
set(CMAKE_CXX_FLAGS_RELEASECOVERAGE "-O0 -DJPH_NO_FORCE_INLINE -fprofile-instr-generate -fcoverage-mapping")
|
|
|
|
|
|
# Set linker flags
|
|
# Set linker flags
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
|
|
-elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Android")
|
|
|
|
- set(CMAKE_CXX_FLAGS_DISTRIBUTION "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# Set linker flags
|
|
# Set linker flags
|