# 'std::shared_mutex' is only available from C++17 onwards: https://github.com/akumuli/Akumuli/issues/383 # PPC arch is not supported by the upstream, so it is experimental. --- CMakeLists.txt.orig 2020-05-19 18:47:08.000000000 +0545 +++ CMakeLists.txt 2022-08-06 04:23:11.000000000 +0545 @@ -32,6 +32,12 @@ if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64") set(APP_ARCH "arm64") endif() + if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc") + set(APP_ARCH "ppc") + endif() + if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64") + set(APP_ARCH "ppc64") + endif() if("${APP_ARCH}" STREQUAL "") message(FATAL_ERROR "Architecture not supported") endif() @@ -49,13 +55,13 @@ # Debug flags set(CMAKE_CXX_FLAGS_DEBUG - "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -Wall -Werror -ggdb -fsanitize=address -std=c++11") + "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -Wall -Werror -ggdb -fsanitize=address -std=c++17") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG -Wall -Werror -ggdb -fsanitize=address -std=c99") # Generic release flags set(CMAKE_CXX_FLAGS_RELEASEGEN - "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -mtune=generic -O3 -std=c++11") + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -mtune=generic -O3 -std=c++17") set(CMAKE_C_FLAGS_RELEASEGEN "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -mtune=generic -O3 -std=c99") @@ -63,24 +69,40 @@ if("${APP_ARCH}" STREQUAL "amd64") # Use this flags only on amd64 set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -march=corei7-avx -O3 -std=c++11") + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -march=corei7-avx -O3 -std=c++17") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -march=corei7-avx -O3 -std=c99") message("amd64 CXXFLAGS ${CMAKE_CXX_FLAGS_RELEASE}") elseif("${APP_ARCH}" STREQUAL "i386") # Use this flags only on amd64 set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -march=corei7-avx -O3 -std=c++11") + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -march=corei7-avx -O3 -std=c++17") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -march=corei7-avx -O3 -std=c99") add_definitions(-DDISABLE_X64) add_definitions(-DDISABLEAVX) add_definitions(-DDISABLE_EMBEDDED_ASM) message("i386 CXXFLAGS ${CMAKE_CXX_FLAGS_RELEASE}") +elseif("${APP_ARCH}" STREQUAL "ppc") + # This work on ppc + set(CMAKE_CXX_FLAGS_RELEASE + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++17") + set(CMAKE_C_FLAGS_RELEASE + "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c99") + add_definitions(-DDISABLE_EMBEDDED_ASM) + message("ppc CXXFLAGS ${CMAKE_CXX_FLAGS_RELEASE}") +elseif("${APP_ARCH}" STREQUAL "ppc64") + # This work on ppc64 + set(CMAKE_CXX_FLAGS_RELEASE + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++17") + set(CMAKE_C_FLAGS_RELEASE + "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c99") + add_definitions(-DDISABLE_EMBEDDED_ASM) + message("ppc64 CXXFLAGS ${CMAKE_CXX_FLAGS_RELEASE}") elseif("${APP_ARCH}" STREQUAL "arm64") # This work on arm set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++11") + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++17") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c99") add_definitions(-DDISABLE_EMBEDDED_ASM) @@ -88,7 +110,7 @@ elseif("${APP_ARCH}" STREQUAL "arm") # This work on arm set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++11") + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++17") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c99") add_definitions(-DDISABLE_EMBEDDED_ASM) @@ -96,7 +118,7 @@ else() # This work on arm64 set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++11") + "${CMAKE_CXX_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c++17") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Werror -ffast-math -funroll-loops -O3 -std=c99") message("unknown CXXFLAGS ${CMAKE_CXX_FLAGS_RELEASE}")