diff --git a/CMakeLists.txt b/CMakeLists.txt index 3488680d698de0f9713e1bbbdb1a244ebd748c5d..ad983d0599758187c7b207bf6bee094acc0f26fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -244,6 +244,14 @@ else() endif() mark_as_advanced ( WALBERLA_CXX_COMPILER_IS_PGI ) +# Check for Fujitsu compiler +if( CMAKE_CXX_COMPILER_ID MATCHES FujitsuClang ) + option ( WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG "Use FujitsuClang compiler" ON ) +else() + option ( WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG "Use FujitsuClang compiler" OFF ) +endif() +mark_as_advanced ( WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG ) + # Check for MPI wrapper get_filename_component( CXX_COMPILER_WITHOUT_PATH ${CMAKE_CXX_COMPILER} NAME ) if( CXX_COMPILER_WITHOUT_PATH MATCHES "mpi" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "mpi" ) @@ -417,10 +425,11 @@ if( NOT WARNING_DEPRECATED) endif() -if ( WALBERLA_CXX_COMPILER_IS_CLANG ) +if ( WALBERLA_CXX_COMPILER_IS_CLANG OR WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG ) add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments" ) endif ( ) + if( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_INTEL OR WALBERLA_CXX_COMPILER_IS_CLANG ) if ( WALBERLA_STL_BOUNDS_CHECKS ) add_definitions ( "-D_GLIBCXX_DEBUG" ) @@ -944,7 +953,11 @@ if ( WALBERLA_CXX_COMPILER_IS_MSVC ) string(REPLACE "/Od" "/O2" CMAKE_CXX_FLAGS_DEBUGOPTIMIZED ${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED}) string(REPLACE "/Ob0" "/Ob2" CMAKE_CXX_FLAGS_DEBUGOPTIMIZED ${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED}) string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUGOPTIMIZED ${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED}) -elseif( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_INTEL OR WALBERLA_CXX_COMPILER_IS_CLANG OR WALBERLA_CXX_COMPILER_IS_INTELLLVM ) +elseif( WALBERLA_CXX_COMPILER_IS_GNU + OR WALBERLA_CXX_COMPILER_IS_INTEL + OR WALBERLA_CXX_COMPILER_IS_CLANG + OR WALBERLA_CXX_COMPILER_IS_INTELLLVM + OR WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG ) set( CMAKE_C_FLAGS_DEBUGOPTIMIZED "${CMAKE_C_FLAGS_DEBUGOPTIMIZED} -O3" ) set( CMAKE_CXX_FLAGS_DEBUGOPTIMIZED "${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED} -O3" ) endif() @@ -1165,11 +1178,20 @@ if ( WALBERLA_BUILD_WITH_LIKWID_MARKERS ) find_library( LIKWID_LIB likwid HINTS $ENV{LIKWID_LIBDIR} $ENV{LIKWID_ROOT}/lib ) find_path( LIKWID_INCLUDE_DIR likwid.h HINTS $ENV{LIKWID_INCDIR} $ENV{LIKWID_ROOT}/include ) + # For some reason, these turned out to be necessary when building with likwid on Fugaku + if ( WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG ) + find_library( LIKWIDLUA_LIB NAMES likwid-lua HINTS $ENV{LIKWID_LIBDIR} $ENV{LIKWID_ROOT}/lib ) + find_library( LIKWIDHWLOC_LIB NAMES likwid-hwloc HINTS $ENV{LIKWID_LIBDIR} $ENV{LIKWID_ROOT}/lib ) + endif() + if ( LIKWID_LIB AND LIKWID_INCLUDE_DIR) set( LIKWID_FOUND 1) include_directories( ${LIKWID_INCLUDE_DIR}) add_definitions ( "-DLIKWID_PERFMON" ) list ( APPEND SERVICE_LIBS ${LIKWID_LIB} ) + if( WALBERLA_CXX_COMPILER_IS_FUJITSUCLANG ) + list ( APPEND SERVICE_LIBS ${LIKWIDLUA_LIB} ${LIKWIDHWLOC_LIB} ) + endif() else() message(WARNING "likwid marker library not found. Set environment variable LIKWID_ROOT") set ( WALBERLA_BUILD_WITH_LIKWID_MARKERS OFF CACHE BOOL "Compile in markers for likwid-perfctr" FORCE )