diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 230cc2d42..8c9a0cb5d 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -210,9 +210,11 @@ if (LINUX) set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -mfpmath=sse,387 -msse2 ${GCC_EXTRA_OPTIMIZATIONS}") endif (${ARCH} STREQUAL "x86_64") elseif(${CMAKE_C_COMPILER} MATCHES "clang*") - - find_program(CLANG clang++) + find_program(CLANG clang) mark_as_advanced(CLANG) + + find_program(CLANGXX clang++) + mark_as_advanced(CLANGXX) add_definitions( -DCC_CLANG @@ -234,6 +236,31 @@ if (LINUX) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -msse2") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -msse2") + elseif(${CMAKE_C_COMPILER} MATCHES "icc*" AND ${CMAKE_CXX_COMPILER} MATCHES "icpc*") + + find_program(ICC icc) + mark_as_advanced(ICC) + + add_definitions( + -DCC_ICC + -D_FORTIFY_SOURCE=2 + ) + + if (NOT STANDALONE) + # this stops us requiring a really recent glibc at runtime + add_definitions(-fno-stack-protector) + endif (NOT STANDALONE) + + if (NOT STANDALONE) + set(MARCH_FLAG " -axsse4.1 -msse2") + endif (NOT STANDALONE) + + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline-functions") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${MARCH_FLAG} -fno-inline-functions") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${MARCH_FLAG} -parallel -fp-model fast=1") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}${MARCH_FLAG} -parallel -fp-model fast=1") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -parallel -fp-model fast=1") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}${MARCH_FLAG} -parallel -fp-model fast=1") endif() set(CMAKE_CXX_FLAGS_DEBUG "-O0 ${CMAKE_CXX_FLAGS_DEBUG}") @@ -268,6 +295,9 @@ if (LINUX OR DARWIN) set(UNIX_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs -Wno-tautological-compare -Wno-char-subscripts -Wno-gnu -Wno-logical-op-parentheses -Wno-non-virtual-dtor ") set(UNIX_WARNINGS "${UNIX_WARNINGS} -Woverloaded-virtual -Wno-parentheses-equality -Wno-reorder -Wno-unused-function -Wno-unused-value -Wno-unused-variable") set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS}") + elseif(${CMAKE_C_COMPILER} MATCHES "icc") + set(UNIX_WARNINGS "-wd327 -wd597 -wd858") + set(UNIX_CXX_WARNINGS "${UNIX_WARNINGS}") endif() if (NOT DISABLE_FATAL_WARNINGS) diff --git a/indra/llcommon/llhash.h b/indra/llcommon/llhash.h index 5451c11c1..68aa13a1e 100644 --- a/indra/llcommon/llhash.h +++ b/indra/llcommon/llhash.h @@ -39,8 +39,8 @@ #include #include #elif LL_DARWIN || LL_LINUX -#if CC_GCC -# if GCC_VERSION >= 40300 // gcc 4.3 and up +#if CC_GCC || CC_ICC +# if GCC_VERSION >= 40300 || CC_ICC// gcc 4.3 or icc 11 and up # include # elif GCC_VERSION >= 30400 // gcc 3.4 and up # include diff --git a/indra/llcommon/llheartbeat.cpp b/indra/llcommon/llheartbeat.cpp index 49c0ad508..83cf3e50c 100644 --- a/indra/llcommon/llheartbeat.cpp +++ b/indra/llcommon/llheartbeat.cpp @@ -75,7 +75,7 @@ LLHeartbeat::rawSend() int result; #ifndef LL_DARWIN - union sigval dummy; + static union sigval dummy; result = sigqueue(getppid(), LL_HEARTBEAT_SIGNAL, dummy); #else result = kill(getppid(), LL_HEARTBEAT_SIGNAL);