diff --git a/CMakeLists.txt b/CMakeLists.txt index 95ced186753cd904c647c4c63b7dea56b8535e7b..78cb57cb3c97db1c01df929c2a7e2667311f7261 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,12 +35,29 @@ endif() set(TOP_DIR ${PROJECT_SOURCE_DIR}) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops -fno-plt") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -funroll-loops -fno-plt ") +include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -funroll-loops") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops") -if (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm|aarch64)") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8.2-a") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8.2-a") +check_c_compiler_flag("-fno-plt" C_SUPPORTS_NO_PLT) +if(C_SUPPORTS_NO_PLT) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-plt") +endif() +check_cxx_compiler_flag("-fno-plt" CXX_SUPPORTS_NO_PLT) +if(CXX_SUPPORTS_NO_PLT) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-plt") +endif() + +if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm|aarch64)") + check_c_compiler_flag("-march=armv8.2-a" C_SUPPORTS_ARM_ARCH) + if(C_SUPPORTS_ARM_ARCH) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8.2-a") + endif() + check_cxx_compiler_flag("-march=armv8.2-a" CXX_SUPPORTS_ARM_ARCH) + if(CXX_SUPPORTS_ARM_ARCH) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8.2-a") + endif() endif() message("TOP_DIR is ${TOP_DIR}") diff --git a/pmu/dump_perf_data.cpp b/pmu/dump_perf_data.cpp index e6e16fdbbb7a044921afc70daa39afa6d15186be..ef1dd22dd8fe65cea6fc092158e7b22355d896cd 100644 --- a/pmu/dump_perf_data.cpp +++ b/pmu/dump_perf_data.cpp @@ -620,7 +620,7 @@ private: unsigned idHdrSize = 0; const char *path = nullptr; - PerfFileHeader ph = {0}; + PerfFileHeader ph = {}; int fd = 0; map evt2id; set modules;