Skip to content

Commit

Permalink
fixs
Browse files Browse the repository at this point in the history
  • Loading branch information
beats-dh committed Oct 19, 2024
1 parent da5660c commit 3ef374f
Show file tree
Hide file tree
Showing 12 changed files with 442 additions and 238 deletions.
1 change: 1 addition & 0 deletions cmake/modules/BaseConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ find_package(pugixml CONFIG REQUIRED)
find_package(spdlog REQUIRED)
find_package(unofficial-argon2 CONFIG REQUIRED)
find_package(unofficial-libmariadb CONFIG REQUIRED)
find_package(cpuinfo CONFIG REQUIRED)

find_path(BOOST_DI_INCLUDE_DIRS "boost/di.hpp")

Expand Down
1 change: 1 addition & 0 deletions cmake/modules/CanaryLib.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ target_link_libraries(${PROJECT_NAME}_lib
unofficial::argon2::libargon2
unofficial::libmariadb
protobuf
cpuinfo::cpuinfo
)

if(FEATURE_METRICS)
Expand Down
98 changes: 33 additions & 65 deletions cmake/modules/CheckSIMDSupport.cmake
Original file line number Diff line number Diff line change
@@ -1,70 +1,38 @@
include(CheckCXXCompilerFlag)

if(MSVC)
check_cxx_compiler_flag("/arch:AVX2" COMPILER_SUPPORTS_AVX2)
if(COMPILER_SUPPORTS_AVX2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2")
add_definitions(-D__AVX2__ -D__SSE4_2__ -D__SSE4_1__ -D__SSE3__ -D__SSE2__ -D__SSE__)
log_option_enabled("AVX2: Advanced Vector Extensions 2 supported and enabled.")
elseif(COMPILER_SUPPORTS_AVX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
add_definitions(-D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__SSE3__ -D__SSE2__ -D__SSE__)
log_option_enabled("AVX: Advanced Vector Extensions supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE42)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE4.2")
add_definitions(-D__SSE4_2__ -D__SSE4_1__ -D__SSE3__ -D__SSE2__ -D__SSE__)
log_option_enabled("SSE4.2: Streaming SIMD Extensions 4.2 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE41)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE4.1")
add_definitions(-D__SSE4_1__ -D__SSE3__ -D__SSE2__ -D__SSE__)
log_option_enabled("SSE4.1: Streaming SIMD Extensions 4.1 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE3)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE3")
add_definitions(-D__SSE3__ -D__SSE2__ -D__SSE__)
log_option_enabled("SSE3: Streaming SIMD Extensions 3 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
add_definitions(-D__SSE2__ -D__SSE__)
log_option_enabled("SSE2: Streaming SIMD Extensions 2 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE")
add_definitions(-D__SSE__)
log_option_enabled("SSE: Streaming SIMD Extensions supported and enabled.")
else()
message(STATUS "No advanced SIMD support found. Proceeding with the default instruction set.")
macro(check_and_add_simd_flag target flag_def flag_name compiler_flag)
check_cxx_compiler_flag("${compiler_flag}" SUPPORTS_${flag_def})
if(SUPPORTS_${flag_def})
target_compile_options(${target} PRIVATE ${compiler_flag})
target_compile_definitions(${target} PRIVATE -D${flag_def})
set(ACTIVATED_SIMD_FLAGS "${ACTIVATED_SIMD_FLAGS}${flag_name}, ")
endif()
else()
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-mavx2" COMPILER_SUPPORTS_AVX2)
if(COMPILER_SUPPORTS_AVX2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2")
add_definitions(-D__AVX2__)
log_option_enabled("AVX2: Advanced Vector Extensions 2 supported and enabled.")
elseif(COMPILER_SUPPORTS_AVX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
add_definitions(-D__AVX__)
log_option_enabled("AVX: Advanced Vector Extensions supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE42)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
add_definitions(-D__SSE4_2__)
log_option_enabled("SSE4.2: Streaming SIMD Extensions 4.2 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE41)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
add_definitions(-D__SSE4_1__)
log_option_enabled("SSE4.1: Streaming SIMD Extensions 4.1 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE3)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse3")
add_definitions(-D__SSE3__)
log_option_enabled("SSE3: Streaming SIMD Extensions 3 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE2)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
add_definitions(-D__SSE2__)
log_option_enabled("SSE2: Streaming SIMD Extensions 2 supported and enabled.")
elseif(COMPILER_SUPPORTS_SSE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
add_definitions(-D__SSE__)
log_option_enabled("SSE: Streaming SIMD Extensions supported and enabled.")
endmacro()

function(configure_simd_flags target)
unset(ACTIVATED_SIMD_FLAGS)

if(MSVC)
check_and_add_simd_flag(${target} "__AVX512F__" "AVX-512" "/arch:AVX512")
check_and_add_simd_flag(${target} "__AVX2__" "AVX2" "/arch:AVX2")
check_and_add_simd_flag(${target} "__AVX__" "AVX" "/arch:AVX")
check_and_add_simd_flag(${target} "__SSE4_2__" "SSE4.2" "/arch:SSE4.2")
check_and_add_simd_flag(${target} "__SSE4_1__" "SSE4.1" "/arch:SSE4.1")
check_and_add_simd_flag(${target} "__SSE2__" "SSE2" "/arch:SSE2")
check_and_add_simd_flag(${target} "__SSE__" "SSE" "/arch:SSE")
else()
message(STATUS "No advanced SIMD support found. Proceeding with the default instruction set.")
check_and_add_simd_flag(${target} "__AVX512F__" "AVX-512" "-mavx512f")
check_and_add_simd_flag(${target} "__AVX2__" "AVX2" "-mavx2")
check_and_add_simd_flag(${target} "__AVX__" "AVX" "-mavx")
check_and_add_simd_flag(${target} "__SSE4_2__" "SSE4.2" "-msse4.2")
check_and_add_simd_flag(${target} "__SSE4_1__" "SSE4.1" "-msse4.1")
check_and_add_simd_flag(${target} "__SSE2__" "SSE2" "-msse2")
check_and_add_simd_flag(${target} "__SSE__" "SSE" "-msse")
endif()

string(REGEX REPLACE ", $" "" ACTIVATED_SIMD_FLAGS "${ACTIVATED_SIMD_FLAGS}")

if(!ACTIVATED_SIMD_FLAGS)
log_option_disabled("No SIMD flags were activated for target ${target}.")
endif()
endif()
endfunction()
4 changes: 3 additions & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ setup_target(${PROJECT_NAME})
set_output_directory(${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib)

# Configurar IPO e Linkagem Incremental para o executável
configure_simd_flags(${PROJECT_NAME})
configure_simd_flags(${PROJECT_NAME}_lib)

configure_linking(${PROJECT_NAME})

# Compiler warnings and options
Expand Down
2 changes: 2 additions & 0 deletions src/canary_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ void CanaryServer::logInfos() {
logger.info("A server developed by: {}", ProtocolStatus::SERVER_DEVELOPERS);
logger.info("Visit our website for updates, support, and resources: "
"https://docs.opentibiabr.com/");

logger.info("Running in: {} {}", g_cpuinfo().getArchitecture(), g_cpuinfo().getArchitectureType());
}

/**
Expand Down
Loading

0 comments on commit 3ef374f

Please sign in to comment.