diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ef58d12..0c0cbbd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,34 @@ message(STATUS "Project version: ${PROJECT_VERSION_STRING_FULL}") execute_process(COMMAND git submodule update --init --recursive --no-fetch WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) +set(INTRINSICS "") +if(BUILD_ARCH STREQUAL "native") + message(STATUS "Checking support for CPU intrinsics") + include(FindSSE) + if(SSE2_FOUND) + message(STATUS "SSE2 support found") + set(INTRINSICS "${INTRINSICS} -msse2") + endif(SSE2_FOUND) + if(SSE3_FOUND) + message(STATUS "SSE3 support found") + set(INTRINSICS "${INTRINSICS} -msse3") + endif(SSE3_FOUND) + if(SSE4_1_FOUND) + message(STATUS "SSE4.1 support found") + set(INTRINSICS "${INTRINSICS} -msse4.1") + endif(SSE4_1_FOUND) + if(AVX_FOUND) + message(STATUS "AVX support found") + set(INTRINSICS "${INTRINSICS} -mavx") + endif(AVX_FOUND) + if(AVX2_FOUND) + message(STATUS "AVX2 support found") + set(INTRINSICS "${INTRINSICS} -mavx2") + endif(AVX2_FOUND) +else() + set(INTRINSICS "-msse4.1") +endif() + # Set compilation flags if(MSVC) set(CMAKE_CXX_FLAGS "/EHsc /DWIN32 /D_WINDOWS /DUNICODE /D_UNICODE /D_CRT_NONSTDC_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS") @@ -47,14 +75,15 @@ else() # These are used in src/CMakeLists.txt on a per-target basis list(APPEND ALL_WARNINGS -Wall; -Werror; -Wno-unused-result; -Wno-deprecated; -Wno-pragmas; -Wno-unused-parameter; -Wextra; -Wno-unused-function; - -Wno-unused-value; -Wno-unknown-pragmas; -Wno-sign-compare; -Wno-missing-field-initializers) + -Wno-unused-value; -Wno-unknown-pragmas; -Wno-sign-compare; -Wno-missing-field-initializers; + -Wno-unused-but-set-variable) # This warning does not exist prior to gcc 5.0 if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0) list(APPEND ALL_WARNINGS -Wsuggest-override) endif() - set(CMAKE_CXX_FLAGS "-std=c++11 -O3 -Ofast -m64 -pthread -march=${BUILD_ARCH} -msse4.1 -Wl,--no-as-needed -funroll-loops -ffinite-math-only -fPIC ${DISABLE_GLOBALLY}") + set(CMAKE_CXX_FLAGS "-std=c++11 -O3 -Ofast -m64 -pthread -march=${BUILD_ARCH} ${INTRINSICS} -Wl,--no-as-needed -funroll-loops -ffinite-math-only -fPIC ${DISABLE_GLOBALLY}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -g -rdynamic") set(CMAKE_CXX_FLAGS_DEBUG "-std=c++11 -g -rdynamic -O0 -pthread -Wl,--no-as-needed -fPIC -Wno-unused-result -Wno-deprecated -Werror -Wno-pragmas") set(CMAKE_CXX_FLAGS_SLIM "${CMAKE_CXX_FLAGS} -DNDEBUG") @@ -92,10 +121,10 @@ if(CUDA_FOUND) if(USE_STATIC_LIBS) find_library(CUDA_culibos_LIBRARY NAMES culibos PATHS ${CUDA_TOOLKIT_ROOT_DIR}/lib64) set(EXT_LIBS ${EXT_LIBS} ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_culibos_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}) - message("-- Found CUDA libraries: ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_culibos_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}") + message(STATUS "Found CUDA libraries: ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_culibos_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}") else(USE_STATIC_LIBS) set(EXT_LIBS ${EXT_LIBS} ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}) - message("-- Found CUDA libraries: ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}") + message(STATUS "Found CUDA libraries: ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}") endif(USE_STATIC_LIBS) if(USE_CUDNN) @@ -223,9 +252,9 @@ set(BOOST_COMPONENTS timer iostreams filesystem system chrono) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) add_definitions(-DUSE_BOOST_REGEX=1) set(BOOST_COMPONENTS ${BOOST_COMPONENTS} regex) - message("-- Using boost::regex") + message(STATUS "Using boost::regex") else() - message("-- Using std::regex") + message(STATUS "Using std::regex") endif() if(COMPILE_SERVER) |