From 7d55fc30b5d1d8f17389df5da9a69a457e6c7472 Mon Sep 17 00:00:00 2001 From: Antonin Portelli Date: Sat, 10 Feb 2024 12:58:23 +0100 Subject: [PATCH] compiler flags and warning cleanup --- CMakeLists.txt | 23 ++++++++++++++++++++--- examples/CMakeLists.txt | 2 +- lib/CMakeLists.txt | 17 ++++++++++++++--- lib/source-list.cmake | 1 - physics/2pt-fit.cpp | 6 +++--- physics/CMakeLists.txt | 2 +- utils/CMakeLists.txt | 2 +- 7 files changed, 40 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f45f21e..d3665cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,15 +6,32 @@ project( LANGUAGES C CXX) # includes +include(CheckCXXCompilerFlag) include(CMakePackageConfigHelpers) include(FetchContent) include(FindPackageMessage) include(GNUInstallDirs) -# C++ standard +# C++ compile flags set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_EXTENSIONS OFF) +check_cxx_compiler_flag("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE) +if(COMPILER_SUPPORTS_MARCH_NATIVE) + set(MARCH_FLAG "-march=native") +endif() +check_cxx_compiler_flag("-mtune=native" COMPILER_SUPPORTS_MTUNE_NATIVE) +if(COMPILER_SUPPORTS_MTUNE_NATIVE) + set(MTUNE_FLAG "-mtune=native") +endif() +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG ${MARCH_FLAG} ${MTUNE_FLAG}") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG ${MARCH_FLAG} ${MTUNE_FLAG}") +set(gcc_like_cxx "$") +add_library(compiler_flags INTERFACE) +target_compile_features(compiler_flags INTERFACE cxx_std_14) +target_compile_options( + compiler_flags + INTERFACE "$<${gcc_like_cxx}:-Wall;-Wextra;-Wshadow;-Wformat=2;-Wunused>") # installation rpath setup set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") @@ -30,8 +47,8 @@ if(NOT eigen3_POPULATED) FetchContent_Populate(Eigen3) message(STATUS "Eigen3 fetched") endif() -file(CREATE_LINK ${eigen3_SOURCE_DIR}/Eigen ${CMAKE_SOURCE_DIR}/lib/LatAnalyze/Eigen - SYMBOLIC) +file(CREATE_LINK ${eigen3_SOURCE_DIR}/Eigen + ${CMAKE_SOURCE_DIR}/lib/LatAnalyze/Eigen SYMBOLIC) # dependencies find_package(GSL REQUIRED) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 3cdefb6..9d7aaf8 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -17,5 +17,5 @@ set(EXAMPLES_STEM foreach(_stem ${EXAMPLES_STEM}) add_executable(${_stem} ${_stem}.cpp) - target_link_libraries(${_stem} LatAnalyze) + target_link_libraries(${_stem} LatAnalyze compiler_flags) endforeach() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 808f4e2..ea71d56 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -33,6 +33,18 @@ flex_target(MathLexer LatAnalyze/Core/MathLexer.lpp ${CMAKE_CURRENT_BINARY_DIR}/MathLexer.cpp) add_flex_bison_dependency(MathLexer MathParser) +# intermediate libraries +add_library(parsers STATIC) +target_include_directories(parsers PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_sources( + parsers PRIVATE ${BISON_AsciiParser_OUTPUTS} ${FLEX_AsciiLexer_OUTPUTS} + ${BISON_MathParser_OUTPUTS} ${FLEX_MathLexer_OUTPUTS}) + +add_library(tinyxml2 STATIC) +target_include_directories(parsers PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_sources(tinyxml2 PRIVATE LatAnalyze/Io/Xml/tinyxml2.hpp + LatAnalyze/Io/Xml/tinyxml2.cpp) + # library target add_library(LatAnalyze SHARED) file(GLOB_RECURSE EIGEN_HEADERS LatAnalyze/Eigen/*) @@ -40,9 +52,7 @@ target_include_directories(LatAnalyze PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) include(source-list.cmake) target_sources( LatAnalyze - PRIVATE ${BISON_AsciiParser_OUTPUTS} ${FLEX_AsciiLexer_OUTPUTS} - ${BISON_MathParser_OUTPUTS} ${FLEX_MathLexer_OUTPUTS} - ${CMAKE_CURRENT_BINARY_DIR}/config.h ${LATAN_SOURCES} + PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/config.h ${LATAN_SOURCES} PUBLIC FILE_SET public_headers TYPE @@ -50,6 +60,7 @@ target_sources( FILES ${EIGEN_HEADERS} ${LATAN_HEADERS}) +target_link_libraries(LatAnalyze PRIVATE compiler_flags parsers tinyxml2) target_link_libraries(LatAnalyze PUBLIC GSL::gsl hdf5::hdf5 hdf5::hdf5_cpp) if(Minuit2_FOUND) target_link_libraries(LatAnalyze PUBLIC Minuit2::Minuit2) diff --git a/lib/source-list.cmake b/lib/source-list.cmake index e6078d3..2c64aa9 100644 --- a/lib/source-list.cmake +++ b/lib/source-list.cmake @@ -76,7 +76,6 @@ set(LATAN_SOURCES LatAnalyze/Io/File.cpp LatAnalyze/Io/Hdf5File.cpp LatAnalyze/Io/Io.cpp - LatAnalyze/Io/Xml/tinyxml2.cpp LatAnalyze/Io/XmlReader.cpp LatAnalyze/Numerical/DWT.cpp LatAnalyze/Numerical/DWTFilters.cpp diff --git a/physics/2pt-fit.cpp b/physics/2pt-fit.cpp index 0a79d06..769c407 100644 --- a/physics/2pt-fit.cpp +++ b/physics/2pt-fit.cpp @@ -376,10 +376,10 @@ int main(int argc, char *argv[]) unsigned int k = 0; while (k < 10) { - auto &f = it->second; + auto &itFit = it->second; - cout << "#" << k + 1 << " -- [" << f.tMin << ", " << f.tMax << "] -- "; - f.result.print(); + cout << "#" << k + 1 << " -- [" << itFit.tMin << ", " << itFit.tMax << "] -- "; + itFit.result.print(); cout << endl; k++; it++; diff --git a/physics/CMakeLists.txt b/physics/CMakeLists.txt index c64dee4..29b6b8b 100644 --- a/physics/CMakeLists.txt +++ b/physics/CMakeLists.txt @@ -2,6 +2,6 @@ set(PHYSICS_STEM 2pt-fit) foreach(_stem ${PHYSICS_STEM}) add_executable(latan-${_stem} ${_stem}.cpp) - target_link_libraries(latan-${_stem} LatAnalyze) + target_link_libraries(latan-${_stem} LatAnalyze compiler_flags) install(TARGETS latan-${_stem} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endforeach() diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index dc32172..2785ead 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -13,6 +13,6 @@ set(UTILS_STEM foreach(_stem ${UTILS_STEM}) add_executable(latan-${_stem} ${_stem}.cpp) - target_link_libraries(latan-${_stem} LatAnalyze) + target_link_libraries(latan-${_stem} LatAnalyze compiler_flags) install(TARGETS latan-${_stem} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endforeach()