Skip to content
Snippets Groups Projects
Commit b2a3b880 authored by Dominik Thoennes's avatar Dominik Thoennes
Browse files

Merge branch 'cmake_refactor' into 'master'

CMake refactoring

See merge request walberla/walberla!718
parents 65fcc780 60d07471
No related merge requests found
This diff is collapsed.
#include <iostream>
#if defined(WALBERLA_USE_STD_FILESYSTEM)
#include <filesystem>
#elif defined(WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM)
#include <experimental/filesystem>
#endif
int main() {
#if defined(WALBERLA_USE_STD_FILESYSTEM)
std::filesystem::path p("/tmp/test.txt");
#elif defined(WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM)
std::experimental::filesystem::path p("/tmp/test.txt");
#endif
std::cout << p.extension().string() << std::endl;
return 0;
}
message(STATUS "Setting Clang specific compiler options")
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(_apple_clang_minimal_version 11.0.0)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_apple_clang_minimal_version})
message(FATAL_ERROR "Clang version must be at least ${_apple_clang_minimal_version}!")
endif()
else()
set(_clang_minimal_version 7)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_clang_minimal_version})
message(FATAL_ERROR "Clang version must be at least ${_clang_minimal_version}!")
endif()
endif()
if(WALBERLA_OPTIMIZE_FOR_LOCALHOST)
if((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID
STREQUAL "Clang")
AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64")
# no -march=native available on this compiler, but there is currently only
# one such processor
else()
add_flag(CMAKE_CXX_FLAGS "-march=native")
add_flag(CMAKE_C_FLAGS "-march=native")
endif()
if(EXISTS "/proc/sys/abi/sve_default_vector_length")
file(READ "/proc/sys/abi/sve_default_vector_length" SVE_LENGTH_BYTES)
string(STRIP "${SVE_LENGTH_BYTES}" SVE_LENGTH_BYTES)
math(EXPR SVE_LENGTH "${SVE_LENGTH_BYTES} * 8")
add_flag(CMAKE_CXX_FLAGS "-msve-vector-bits=${SVE_LENGTH}")
add_flag(CMAKE_C_FLAGS "-msve-vector-bits=${SVE_LENGTH}")
endif()
endif()
if(NOT WARNING_DEPRECATED)
add_flag(CMAKE_CXX_FLAGS "-Wno-deprecated-declarations")
endif()
add_flag(CMAKE_CXX_FLAGS
"-Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments")
if(WALBERLA_STL_BOUNDS_CHECKS)
add_definitions("-D_GLIBCXX_DEBUG")
add_definitions("-D_LIBCPP_DEBUG=1")
endif()
if(WALBERLA_BUILD_WITH_FASTMATH)
add_flag(CMAKE_CXX_FLAGS "-ffast-math")
endif()
if(NOT WIN32)
find_package(Backtrace QUIET)
if(Backtrace_FOUND)
list(APPEND SERVICE_LIBS ${Backtrace_LIBRARIES})
set(WALBERLA_BUILD_WITH_BACKTRACE ON)
set(WALBERLA_BACKTRACE_HEADER ${Backtrace_HEADER})
endif(Backtrace_FOUND)
endif()
set(CMAKE_C_FLAGS_DEBUGOPTIMIZED "${CMAKE_C_FLAGS_DEBUGOPTIMIZED} -O3")
set(CMAKE_CXX_FLAGS_DEBUGOPTIMIZED "${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED} -O3")
if(WALBERLA_BUILD_WITH_GPROF)
add_flag(CMAKE_CXX_FLAGS "-pg")
endif()
if(WALBERLA_SANITIZE_ADDRESS)
add_flag(CMAKE_CXX_FLAGS "-fsanitize=address")
endif()
if(WALBERLA_SANITIZE_UNDEFINED)
add_flag(CMAKE_CXX_FLAGS "-fsanitize=undefined")
endif()
if(WALBERLA_BUILD_WITH_OPENMP)
if(APPLE
AND EXISTS /opt/local/lib/libomp
AND EXISTS /opt/local/include/libomp) # find libomp from MacPorts
set(CMAKE_FRAMEWORK_PATH /opt/local/lib/libomp)
set(CMAKE_INCLUDE_PATH /opt/local/include/libomp)
endif()
find_package(OpenMP)
if(OpenMP_FOUND)
add_flag(CMAKE_C_FLAGS "${OpenMP_C_FLAGS}")
add_flag(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS}")
list(APPEND SERVICE_LIBS ${OpenMP_CXX_LIBRARIES})
if(OpenMP_CXX_INCLUDE_DIRS)
include_directories(${OpenMP_CXX_INCLUDE_DIRS})
endif()
else()
message(FATAL_ERROR "Could NOT enable OpenMP")
endif()
# check for bug in combination with OpenMP and sign conversion
# https://bugs.llvm.org/show_bug.cgi?id=48387
try_compile(
WALBERLA_CLANG_OPENMP_BUG "${CMAKE_CURRENT_BINARY_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestClangOpenMPBug.cpp"
COMPILE_DEFINITIONS -Werror)
if(NOT ${WALBERLA_CLANG_OPENMP_BUG})
message(
WARNING
"Setting -Wno-sign-conversion due to a compiler bug in LLVM (https://bugs.llvm.org/show_bug.cgi?id=48387)"
)
add_flag(CMAKE_CXX_FLAGS "-Wno-sign-conversion")
endif()
endif()
\ No newline at end of file
message(STATUS "Setting Cray specific compiler options")
set(_cray_minimal_version 9)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_cray_minimal_version})
message(FATAL_ERROR "Cray version must be at least ${_cray_minimal_version}!")
endif()
# Fixes linker errors with Cray compiler
add_flag(CMAKE_EXE_LINKER_FLAGS "-dynamic -L/opt/gcc/4.9.3/snos/lib64")
# Silences compiler and linker warnings and information with the Cray compiler
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
add_flag(CMAKE_CXX_FLAGS "-h nomessage=1") # CC-1 The source file does not
# end with a new-line character.
add_flag(CMAKE_C_FLAGS "-DSQLITE_HAVE_ISNAN") # SQLite will not work correctly
# with the -ffast-math option of
# GCC.
add_flag(CMAKE_CXX_FLAGS "-DSQLITE_HAVE_ISNAN") # SQLite will not work correctly
# with the -ffast-math option of
# GCC.
if(NOT WALBERLA_BUILD_WITH_OPENMP)
add_flag(CMAKE_C_FLAGS "-h noomp")
add_flag(CMAKE_CXX_FLAGS "-h noomp")
endif()
# Treat warnings as errors leaving it since it is not supported by
# COMPILE_WARNING_AS_ERROR (cmake 3.24)
if(WARNING_ERROR)
add_flag(CMAKE_CXX_FLAGS "-h error_on_warning")
endif()
message(STATUS "Setting FujitsuClang specific compiler options")
set(_clang_minimal_version 7)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_clang_minimal_version})
message(FATAL_ERROR "Clang version must be at least ${_clang_minimal_version}!")
endif()
add_flag(CMAKE_CXX_FLAGS
"-Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments")
set(CMAKE_C_FLAGS_DEBUGOPTIMIZED "${CMAKE_C_FLAGS_DEBUGOPTIMIZED} -O3")
set(CMAKE_CXX_FLAGS_DEBUGOPTIMIZED "${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED} -O3")
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
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)
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})
list(APPEND SERVICE_LIBS ${LIKWIDLUA_LIB} ${LIKWIDHWLOC_LIB})
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)
endif()
endif()
\ No newline at end of file
message(STATUS "Setting GNU specific compiler options")
set(_gcc_minimal_version 8)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_gcc_minimal_version})
message(FATAL_ERROR "GCC version must be at least ${_gcc_minimal_version}!")
endif()
# Profile guided optimization
if(WALBERLA_PROFILE_GENERATE)
add_flag(CMAKE_CXX_FLAGS "-fprofile-generate")
endif()
if(WALBERLA_PROFILE_USE)
add_flag(CMAKE_CXX_FLAGS "-fprofile-use")
endif()
# common flags for g++
if(NOT WARNING_DISABLE)
add_flag(CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow")
endif()
# architecture optimization
if(WALBERLA_OPTIMIZE_FOR_LOCALHOST)
add_flag(CMAKE_CXX_FLAGS "-march=native")
endif()
if(EXISTS "/proc/sys/abi/sve_default_vector_length")
file(READ "/proc/sys/abi/sve_default_vector_length" SVE_LENGTH_BYTES)
string(STRIP "${SVE_LENGTH_BYTES}" SVE_LENGTH_BYTES)
math(EXPR SVE_LENGTH "${SVE_LENGTH_BYTES} * 8")
add_flag(CMAKE_CXX_FLAGS "-msve-vector-bits=${SVE_LENGTH}")
add_flag(CMAKE_C_FLAGS "-msve-vector-bits=${SVE_LENGTH}")
endif()
# Warning flags
add_flag(CMAKE_CXX_FLAGS "-Wfloat-equal -Wextra")
if(WARNING_PEDANTIC)
add_flag(CMAKE_CXX_FLAGS "-pedantic")
endif()
# omit deprecated warnings
if(NOT WARNING_DEPRECATED)
add_flag(CMAKE_CXX_FLAGS "-Wno-deprecated-declarations")
endif()
if(WALBERLA_STL_BOUNDS_CHECKS)
add_definitions("-D_GLIBCXX_DEBUG")
add_definitions("-D_LIBCPP_DEBUG=1")
endif()
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.0")
# Omit maybe-uninitialized for gcc 12 for now. Check if it is a bug or a real
# problem:
add_flag(CMAKE_CXX_FLAGS "-Wno-maybe-uninitialized")
# GCC 12 reports a "array bounds" warning at UniformBufferedScheme.h:297
# (error: array subscript 26 is above array bounds of) when e.g. compiling the
# GhostLayerCommTest. Since this is most probably a bug in GCC disable the
# warning for now
add_flag(CMAKE_CXX_FLAGS "-Wno-array-bounds")
endif()
if(WALBERLA_BUILD_WITH_FASTMATH)
add_flag(CMAKE_CXX_FLAGS "-ffast-math")
endif()
if(NOT WIN32)
find_package(Backtrace QUIET)
if(Backtrace_FOUND)
list(APPEND SERVICE_LIBS ${Backtrace_LIBRARIES})
set(WALBERLA_BUILD_WITH_BACKTRACE ON)
set(WALBERLA_BACKTRACE_HEADER ${Backtrace_HEADER})
endif(Backtrace_FOUND)
endif()
set(CMAKE_C_FLAGS_DEBUGOPTIMIZED "${CMAKE_C_FLAGS_DEBUGOPTIMIZED} -O3")
set(CMAKE_CXX_FLAGS_DEBUGOPTIMIZED "${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED} -O3")
# old nvcc compilers and newer stdlibc++ are incompatible. This needs to be
# checked!
if(WALBERLA_STL_BOUNDS_CHECKS
AND WALBERLA_BUILD_WITH_CODEGEN
AND WALBERLA_BUILD_WITH_CUDA
AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS "11.0"
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")
message(
FATAL_ERROR
"WALBERLA_STL_BOUNDS_CHECKS is not compatible with your CUDA compiler")
endif()
if(WALBERLA_BUILD_WITH_GPROF)
add_flag(CMAKE_CXX_FLAGS "-pg")
endif()
if(WALBERLA_SANITIZE_ADDRESS)
add_flag(CMAKE_CXX_FLAGS "-fsanitize=address")
endif()
if(WALBERLA_SANITIZE_UNDEFINED)
add_flag(CMAKE_CXX_FLAGS "-fsanitize=undefined")
endif()
# ##############################################################################
#
# Testing Coverage
#
# ##############################################################################
if(WALBERLA_BUILD_WITH_GCOV AND CMAKE_COMPILER_IS_GNUCXX)
add_flag(CMAKE_CXX_FLAGS "--coverage")
endif()
# ##############################################################################
\ No newline at end of file
message(STATUS "Setting IBM specific compiler options")
set(_ibm_minimal_version 17.1.1)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_ibm_minimal_version})
message(FATAL_ERROR "IBM compiler version must be at least ${_ibm_minimal_version}!")
endif()
# Fixes linker errors with IBM compiler
add_flag(CMAKE_CXX_FLAGS "-qpic=large")
# Silences compiler and linker warnings and information with the IBM compiler
add_flag(CMAKE_CXX_FLAGS "-qsuppress=1586-267") # 1586-267 (I) Inlining of
# specified subprogram failed
# due to the presence of a C++
# exception handler
add_flag(CMAKE_CXX_FLAGS "-qsuppress=1586-266") # 1586-266 (I) Inlining of
# specified subprogram failed
# due to the presence of a
# global label
add_flag(CMAKE_CXX_FLAGS "-qsuppress=1500-030") # 1500-030: (I) INFORMATION:
# [...] Additional optimization
# may be attained by recompiling
# and specifying MAXMEM option
# with a value greater than
# 8192.
add_flag(CMAKE_C_FLAGS "-qsuppress=1500-030") # 1500-030: (I) INFORMATION: [...]
# Additional optimization may be
# attained by recompiling and
# specifying MAXMEM option with a
# value greater than 8192.
\ No newline at end of file
message(STATUS "Setting Intel specific compiler options")
set(_intel_minimal_version 19.0.0)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_intel_minimal_version})
message(FATAL_ERROR "IBM compiler version must be at least ${_intel_minimal_version}!")
endif()
if(WALBERLA_PROFILE_GENERATE)
add_flag(CMAKE_CXX_FLAGS "-prof-gen")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/profile")
add_flag(CMAKE_CXX_FLAGS "-prof-dir${CMAKE_BINARY_DIR}/profile")
endif()
if(WALBERLA_PROFILE_USE)
add_flag(CMAKE_CXX_FLAGS "-prof-use")
add_flag(CMAKE_CXX_FLAGS "-prof-dir${CMAKE_BINARY_DIR}/profile")
endif()
# common flags for intel and g++
if(NOT WARNING_DISABLE)
add_flag(CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow")
endif()
# architecture optimization
if(WALBERLA_OPTIMIZE_FOR_LOCALHOST)
add_flag(CMAKE_CXX_FLAGS "-march=native")
add_flag(CMAKE_C_FLAGS "-march=native")
add_flag(CMAKE_CXX_FLAGS "-xhost")
add_flag(CMAKE_C_FLAGS "-xhost")
if(EXISTS "/proc/sys/abi/sve_default_vector_length")
file(READ "/proc/sys/abi/sve_default_vector_length" SVE_LENGTH_BYTES)
string(STRIP "${SVE_LENGTH_BYTES}" SVE_LENGTH_BYTES)
math(EXPR SVE_LENGTH "${SVE_LENGTH_BYTES} * 8")
add_flag(CMAKE_CXX_FLAGS "-msve-vector-bits=${SVE_LENGTH}")
add_flag(CMAKE_C_FLAGS "-msve-vector-bits=${SVE_LENGTH}")
endif()
endif()
# system headers are also supported by intel, but cmake does not recognize that
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
add_flag(CMAKE_CXX_FLAGS "-wd2928,2504,2259,1682,597")
# disable icc/icpc deprecation warning
add_flag(CMAKE_CXX_FLAGS "-diag-disable=10441")
# omit deprecated warnings
if(NOT WARNING_DEPRECATED)
add_flag(CMAKE_CXX_FLAGS "-wd1478") # Disable compiler warning # 1478:
# "declared as deprecated"
endif()
if(WALBERLA_STL_BOUNDS_CHECKS)
add_definitions("-D_GLIBCXX_DEBUG")
add_definitions("-D_LIBCPP_DEBUG=1")
endif()
if(WALBERLA_BUILD_WITH_FASTMATH)
add_flag(CMAKE_CXX_FLAGS "-fp-model fast=2 -no-prec-sqrt -no-prec-div")
endif()
if(NOT WIN32)
find_package(Backtrace QUIET)
if(Backtrace_FOUND)
list(APPEND SERVICE_LIBS ${Backtrace_LIBRARIES})
set(WALBERLA_BUILD_WITH_BACKTRACE ON)
set(WALBERLA_BACKTRACE_HEADER ${Backtrace_HEADER})
endif(Backtrace_FOUND)
endif()
set(CMAKE_C_FLAGS_DEBUGOPTIMIZED "${CMAKE_C_FLAGS_DEBUGOPTIMIZED} -O3")
set(CMAKE_CXX_FLAGS_DEBUGOPTIMIZED "${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED} -O3")
if(WALBERLA_BUILD_WITH_GPROF)
add_flag(CMAKE_CXX_FLAGS "-pg")
add_flag(CMAKE_EXE_LINKER_FLAGS "-pg")
endif()
# Intel C++17 support introduced in 2.6.2 (https://github.com/pybind/pybind11/pull/2729)
set(PYBIND11_MINIMUM_VERSION "2.6.2")
\ No newline at end of file
message(STATUS "Setting IntelLLVM specific compiler options")
set(_intel_llvm_minimal_version 2021.0)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_intel_llvm_minimal_version})
message(FATAL_ERROR "IBM compiler version must be at least ${_intel_llvm_minimal_version}!")
endif()
# fastmath
if(NOT WALBERLA_BUILD_WITH_FASTMATH)
add_flag(CMAKE_CXX_FLAGS "-fp-model=precise")
endif()
set(CMAKE_C_FLAGS_DEBUGOPTIMIZED "${CMAKE_C_FLAGS_DEBUGOPTIMIZED} -O3")
set(CMAKE_CXX_FLAGS_DEBUGOPTIMIZED "${CMAKE_CXX_FLAGS_DEBUGOPTIMIZED} -O3")
if(WALBERLA_BUILD_WITH_OPENMP)
if(APPLE
AND EXISTS /opt/local/lib/libomp
AND EXISTS /opt/local/include/libomp) # find libomp from MacPorts
set(CMAKE_FRAMEWORK_PATH /opt/local/lib/libomp)
set(CMAKE_INCLUDE_PATH /opt/local/include/libomp)
endif()
find_package(OpenMP)
if(OpenMP_FOUND)
add_flag(CMAKE_C_FLAGS "${OpenMP_C_FLAGS}")
add_flag(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS}")
list(APPEND SERVICE_LIBS ${OpenMP_CXX_LIBRARIES})
if(OpenMP_CXX_INCLUDE_DIRS)
include_directories(${OpenMP_CXX_INCLUDE_DIRS})
endif()
else()
message(FATAL_ERROR "Could NOT enable OpenMP")
endif()
# check for bug in combination with OpenMP and sign conversion
# https://bugs.llvm.org/show_bug.cgi?id=48387
try_compile(
WALBERLA_CLANG_OPENMP_BUG "${CMAKE_CURRENT_BINARY_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestClangOpenMPBug.cpp"
COMPILE_DEFINITIONS -Werror)
if(NOT ${WALBERLA_CLANG_OPENMP_BUG})
message(
WARNING
"Setting -Wno-sign-conversion due to a compiler bug in LLVM (https://bugs.llvm.org/show_bug.cgi?id=48387)"
)
add_flag(CMAKE_CXX_FLAGS "-Wno-sign-conversion")
endif()
endif()
\ No newline at end of file
message(STATUS "Setting MSVC specific compiler options")
set(_msvc_minimal_version 19.11)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_msvc_minimal_version})
message(FATAL_ERROR "MSVC version must be at least ${_msvc_minimal_version}!")
endif()
if(WALBERLA_PROFILE_GENERATE)
add_flag(CMAKE_CXX_FLAGS "/GL")
add_flag(CMAKE_MODULE_LINKER_FLAGS "/LTCG:PGINSTRUMENT")
add_flag(CMAKE_SHARED_LINKER_FLAGS "/LTCG:PGINSTRUMENT")
add_flag(CMAKE_EXE_LINKER_FLAGS "/LTCG:PGINSTRUMENT")
endif()
if(WALBERLA_PROFILE_USE)
add_flag(CMAKE_CXX_FLAGS "/GL")
add_flag(CMAKE_MODULE_LINKER_FLAGS "/LTCG:PGOPTIMIZE")
add_flag(CMAKE_SHARED_LINKER_FLAGS "/LTCG:PGOPTIMIZE")
add_flag(CMAKE_EXE_LINKER_FLAGS "/LTCG:PGOPTIMIZE")
endif()
if(WALBERLA_BUILD_WITH_FASTMATH)
add_flag(CMAKE_CXX_FLAGS "/fp:fast")
endif()
string(REGEX REPLACE "[/-]W[0-4]" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}
)# remove default warning flags
option(WALBERLA_GROUP_PROJECTS
"Flag if the projects are grouped or in a flat hierarchy" ON)
option(WALBERLA_GROUP_FILES
"Flag if the files are grouped or in a flat hierarchy" ON)
set_property(GLOBAL PROPERTY USE_FOLDERS ${WALBERLA_GROUP_PROJECTS})
option(WALBERLA_VS_MULTI_PROCESS_BUILD "Use the /mp option for VS builds" ON)
if(WALBERLA_VS_MULTI_PROCESS_BUILD)
add_flag(CMAKE_CXX_FLAGS "-MP") # enable multi-threaded compiling
endif()
add_definitions("-DNOMINMAX") # Disable Min/Max-Macros
add_definitions("-D_WIN32_WINNT=0x501") # Minimum Windows versions is Windows XP
add_definitions("-DWINVER=0x501") # Minimum Windows versions is Windows XP
add_definitions("-D_CRT_SECURE_NO_WARNINGS") # disable warnings promoting
# Microsoft's security enhanced CRT
add_definitions("-D_SCL_SECURE_NO_WARNINGS") # disable warnings triggered by
# Microsoft's checked iterators
add_flag(CMAKE_CXX_FLAGS "-W4") # set warning level to maximum
add_flag(CMAKE_CXX_FLAGS "-bigobj") # enable big object files
add_flag(CMAKE_CXX_FLAGS "-wd4127") # disable compiler warning C4127:
# "conditional expression is constant"
add_flag(CMAKE_CXX_FLAGS "-wd4512") # disable compiler warning C4512:
# "assignment operator could not be
# generated"
add_flag(CMAKE_CXX_FLAGS "-wd4913") # disable compiler warning C4512: "user
# defined binary operator ',' exists but
# no overload could convert all operands, default built-in binary operator ','
# used"
add_flag(CMAKE_CXX_FLAGS "-wd4702") # disable compiler warning C4702:
# "unreachable code"
add_flag(CMAKE_CXX_FLAGS "-wd4505") # disable compiler warning C4505:
# "unreferenced local function has been
# removed"
add_flag(CMAKE_CXX_FLAGS "-wd4503") # disable compiler warning C4503:
# "'identifier' : decorated name length
# exceeded, name was truncated"
if(NOT WARNING_DEPRECATED)
add_definitions("-D_CRT_SECURE_NO_DEPRECATE")
add_definitions("-D_SCL_SECURE_NO_DEPRECATE")
add_flag(CMAKE_CXX_FLAGS "-wd4996") # Disable compiler warning C4996:
# "declared as deprecated"
endif()
string(REPLACE "/Od" "/O2" CMAKE_C_FLAGS_DEBUGOPTIMIZED
${CMAKE_C_FLAGS_DEBUGOPTIMIZED})
string(REPLACE "/Ob0" "/Ob2" CMAKE_C_FLAGS_DEBUGOPTIMIZED
${CMAKE_C_FLAGS_DEBUGOPTIMIZED})
string(REPLACE "/RTC1" "" CMAKE_C_FLAGS_DEBUGOPTIMIZED
${CMAKE_C_FLAGS_DEBUGOPTIMIZED})
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})
\ No newline at end of file
......@@ -23,23 +23,13 @@
#include "waLBerlaDefinitions.h"
#ifndef WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM
#include <filesystem>
#else
#define _LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM
#include <experimental/filesystem>
#endif
namespace walberla {
namespace filesystem {
#ifndef WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM
using namespace std::filesystem;
#else
using namespace std::experimental::filesystem;
#endif
}
}
}
\ No newline at end of file
......@@ -47,13 +47,14 @@ __global__ void SetParticleVelocities(walberla::gpu::FieldAccessor< uint_t > nOv
particleVelocitiesField.set(blockIdx_uint3, threadIdx_uint3);
// Cell center is needed in order to compute the particle velocity at this WF point
const real_t cellCenter[] = { (blockStart.x + (threadIdx.x + 0.5) * dx), (blockStart.y + (blockIdx.x + 0.5) * dx),
(blockStart.z + (blockIdx.y + 0.5) * dx) };
const real_t cellCenter[] = { real_t(blockStart.x + (threadIdx.x + real_t(0.5)) * dx),
real_t(blockStart.y + (blockIdx.x + real_t(0.5)) * dx),
real_t(blockStart.z + (blockIdx.y + real_t(0.5)) * dx) };
// Compute the particle velocity at the cell center for all overlapping particles
for (uint_t p = 0; p < nOverlappingParticlesField.get(); p++)
{
real_t particleVelocityAtWFPoint[] = { 0.0, 0.0, 0.0 };
real_t particleVelocityAtWFPoint[] = { real_t(0.0), real_t(0.0), real_t(0.0) };
getVelocityAtWFPoint(particleVelocityAtWFPoint, &linearVelocities[idxField.get(p) * 3],
&angularVelocities[idxField.get(p) * 3], &positions[idxField.get(p) * 3], cellCenter);
particleVelocitiesField.get(p * 3 + 0) = particleVelocityAtWFPoint[0];
......@@ -78,8 +79,9 @@ __global__ void ReduceParticleForces(walberla::gpu::FieldAccessor< uint_t > nOve
particleForcesField.set(blockIdx_uint3, threadIdx_uint3);
// Cell center is needed in order to compute the particle velocity at this WF point
const real_t cellCenter[] = { (blockStart.x + (threadIdx.x + 0.5) * dx), (blockStart.y + (blockIdx.x + 0.5) * dx),
(blockStart.z + (blockIdx.y + 0.5) * dx) };
const real_t cellCenter[] = { real_t(blockStart.x + (threadIdx.x + real_t(0.5)) * dx),
real_t(blockStart.y + (blockIdx.x + real_t(0.5)) * dx),
real_t(blockStart.z + (blockIdx.y + real_t(0.5)) * dx) };
// Reduce the forces for all overlapping particles
for (uint_t p = 0; p < nOverlappingParticlesField.get(); p++)
......@@ -98,4 +100,4 @@ __global__ void ReduceParticleForces(walberla::gpu::FieldAccessor< uint_t > nOve
} // namespace gpu
} // namespace psm
} // namespace lbm_mesapd_coupling
} // namespace walberla
} // namespace walberla
\ No newline at end of file
......@@ -53,7 +53,6 @@
#cmakedefine WALBERLA_CXX_COMPILER_IS_MSVC
#cmakedefine WALBERLA_CXX_COMPILER_IS_CLANG
#cmakedefine WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM
#cmakedefine WALBERLA_USE_STD_EXPERIMENTAL_ANY
#cmakedefine WALBERLA_BUILD_WITH_BACKTRACE
#ifdef WALBERLA_BUILD_WITH_BACKTRACE
......@@ -112,4 +111,4 @@
#define WALBERLA_PUBLIC
#define WALBERLA_PRIVATE
#endif
#define WALBERLA_PROTECTED WALBERLA_PUBLIC
#define WALBERLA_PROTECTED WALBERLA_PUBLIC
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment