Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/CMakeLists.txt
| Show All 16 Lines | |||||
| include(cmake/external_libs.cmake) | include(cmake/external_libs.cmake) | ||||
| include(cmake/macros.cmake) | include(cmake/macros.cmake) | ||||
| # Build Flags | # Build Flags | ||||
| # todo: this code could be refactored a bit to avoid duplication | # todo: this code could be refactored a bit to avoid duplication | ||||
| # note: CXX_HAS_SSE is needed in case passing SSE flags fails altogether (gcc-arm) | # note: CXX_HAS_SSE is needed in case passing SSE flags fails altogether (gcc-arm) | ||||
| if(WITH_COMPILER_ASAN) | |||||
| if(CMAKE_COMPILER_IS_GNUCC) | |||||
| # GCC hangs compiling the big kernel files with asan, so disable it. | |||||
| set(CYCLES_KERNEL_ASAN_FLAGS "-fno-sanitize=all") | |||||
| elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") | |||||
| # With OSL, Cycles disables rtti in some modules, wich then breaks at linking | |||||
| # when trying to use vptr sanitizer (included into 'undefined' general option). | |||||
| set(CYCLES_KERNEL_ASAN_FLAGS "-fno-sanitize=vptr") | |||||
| endif() | |||||
| endif() | |||||
| if(WITH_CYCLES_NATIVE_ONLY) | if(WITH_CYCLES_NATIVE_ONLY) | ||||
| set(CXX_HAS_SSE FALSE) | set(CXX_HAS_SSE FALSE) | ||||
| set(CXX_HAS_AVX FALSE) | set(CXX_HAS_AVX FALSE) | ||||
| set(CXX_HAS_AVX2 FALSE) | set(CXX_HAS_AVX2 FALSE) | ||||
| add_definitions( | add_definitions( | ||||
| -DWITH_KERNEL_NATIVE | -DWITH_KERNEL_NATIVE | ||||
| ) | ) | ||||
| if(NOT MSVC) | if(NOT MSVC) | ||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") | ||||
| set(CYCLES_KERNEL_FLAGS "-march=native") | set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_ASAN_FLAGS} -march=native") | ||||
| endif() | endif() | ||||
| elseif(NOT WITH_CPU_SSE) | elseif(NOT WITH_CPU_SSE) | ||||
| set(CXX_HAS_SSE FALSE) | set(CXX_HAS_SSE FALSE) | ||||
| set(CXX_HAS_AVX FALSE) | set(CXX_HAS_AVX FALSE) | ||||
| set(CXX_HAS_AVX2 FALSE) | set(CXX_HAS_AVX2 FALSE) | ||||
| elseif(WIN32 AND MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") | elseif(WIN32 AND MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||||
| set(CXX_HAS_SSE TRUE) | set(CXX_HAS_SSE TRUE) | ||||
| set(CXX_HAS_AVX TRUE) | set(CXX_HAS_AVX TRUE) | ||||
| Show All 31 Lines | elseif(WIN32 AND MSVC AND NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||||
| set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ox") | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ox") | ||||
| set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Ox") | set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Ox") | ||||
| set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Ox") | set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /Ox") | ||||
| elseif(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) | elseif(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) | ||||
| check_cxx_compiler_flag(-msse CXX_HAS_SSE) | check_cxx_compiler_flag(-msse CXX_HAS_SSE) | ||||
| check_cxx_compiler_flag(-mavx CXX_HAS_AVX) | check_cxx_compiler_flag(-mavx CXX_HAS_AVX) | ||||
| check_cxx_compiler_flag(-mavx2 CXX_HAS_AVX2) | check_cxx_compiler_flag(-mavx2 CXX_HAS_AVX2) | ||||
| set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_ASAN_FLAGS}") | |||||
| # Assume no signal trapping for better code generation. | # Assume no signal trapping for better code generation. | ||||
| set(CYCLES_KERNEL_FLAGS "-fno-trapping-math") | set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-trapping-math") | ||||
| # Avoid overhead of setting errno for NaNs. | # Avoid overhead of setting errno for NaNs. | ||||
| set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-math-errno") | set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-math-errno") | ||||
| # Let compiler optimize 0.0 - x without worrying about signed zeros. | # Let compiler optimize 0.0 - x without worrying about signed zeros. | ||||
| set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-signed-zeros") | set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-signed-zeros") | ||||
| if(CMAKE_COMPILER_IS_GNUCC) | if(CMAKE_COMPILER_IS_GNUCC) | ||||
| # Assume no signal trapping for better code generation. | # Assume no signal trapping for better code generation. | ||||
| set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-signaling-nans") | set(CYCLES_KERNEL_FLAGS "${CYCLES_KERNEL_FLAGS} -fno-signaling-nans") | ||||
| ▲ Show 20 Lines • Show All 277 Lines • Show Last 20 Lines | |||||