Newer
Older

Christian Godenschwager
committed
add_flag ( CMAKE_CXX_FLAGS "-qsmp=omp" )
# There has been an internal compiler error with the IBM compiler, so WALBERLA_THREAD_SAFE_LOGGING is disabled by default for this compiler
set ( WALBERLA_THREAD_SAFE_LOGGING OFF CACHE BOOL "Enables/Disables thread-safe logging" FORCE )
elseif ( WALBERLA_CXX_COMPILER_IS_NEC )
add_flag ( CMAKE_C_FLAGS "-Popenmp" )
add_flag ( CMAKE_CXX_FLAGS "-Popenmp" )
endif()
else()
if ( WALBERLA_CXX_COMPILER_IS_CRAY )
add_flag ( CMAKE_C_FLAGS "-h noomp" )
add_flag ( CMAKE_CXX_FLAGS "-h noomp" )
endif()
endif()
############################################################################################################################
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
############################################################################################################################
##
## CUDA
##
############################################################################################################################
if ( WALBERLA_BUILD_WITH_CUDA )
# set ( BUILD_SHARED_LIBS ON )
set ( CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE ON )
set ( CUDA_PROPAGATE_HOST_FLAGS OFF CACHE BOOL "" )
if ( (NOT DEFINED CUDA_HOST_COMPILER) AND (${CMAKE_C_COMPILER} MATCHES "ccache") )
string ( STRIP "${CMAKE_C_COMPILER_ARG1}" stripped_compiler_string )
find_program ( CUDA_HOST_COMPILER ${stripped_compiler_string} )
endif ()
find_package ( CUDA REQUIRED )
if ( CUDA_FOUND )
include_directories ( ${CUDA_INCLUDE_DIRS} )
list ( APPEND SERVICE_LIBS ${CUDA_LIBRARIES} )
if ( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std=" )
list ( APPEND CUDA_NVCC_FLAGS "-std=c++11" )
endif ()
# Bug with gcc5 and cuda7.5:
#list( APPEND CUDA_NVCC_FLAGS "-D_MWAITXINTRIN_H_INCLUDED -D_FORCE_INLINES -D__STRICT_ANSI__")
# NOTICE: exisiting cuda flags are overwritten
#set ( CUDA_NVCC_FLAGS "--compiler-bindir=/usr/bin/g++-4.3" )
#set ( CUDA_NVCC_FLAGS "-arch sm_20" )
else()
set ( WALBERLA_BUILD_WITH_CUDA FALSE )
endif ( )
endif ( )
############################################################################################################################

Christian Godenschwager
committed
############################################################################################################################
##

Christian Godenschwager
committed
##
############################################################################################################################
if (WALBERLA_BUILD_WITH_GCOV AND CMAKE_COMPILER_IS_GNUCXX )
add_flag ( CMAKE_CXX_FLAGS_DEBUG "-fprofile-arcs -ftest-coverage" )
add_flag ( LD_FLAGS "-fprofile-arcs -ftest-coverage" )
endif()
############################################################################################################################
############################################################################################################################
##
## Profiling with gprof
##
############################################################################################################################
if ( WALBERLA_BUILD_WITH_GPROF )
if ( WALBERLA_CXX_COMPILER_IS_INTEL )

Christian Godenschwager
committed
add_flag ( CMAKE_EXE_LINKER_FLAGS "-pg" )
elseif ( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_CLANG )
add_flag ( CMAKE_CXX_FLAGS "-pg" )
endif()
endif()
############################################################################################################################
############################################################################################################################
##
## Likwid Marker API
##
############################################################################################################################
if ( WALBERLA_BUILD_WITH_LIKWID_MARKERS )
find_library( LIKWID_LIB likwid HINTS $ENV{LIKWID_ROOT} )

Christian Godenschwager
committed
if ( LIKWID_LIB )
set( LIKWID_FOUND 1)
list ( APPEND SERVICE_LIBS ${LIKWID_LIB} )
add_definitions ( "-DLIKWID_PERFMON" )
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()
############################################################################################################################
##
## Link time optimizations
##
############################################################################################################################
if ( WALBERLA_BUILD_WITH_LTO )

Christian Godenschwager
committed
if( WALBERLA_CXX_COMPILER_IS_INTEL )
add_flag( CMAKE_CXX_FLAGS_RELEASE "-ip -ipo3" )
add_flag( CMAKE_C_FLAGS_RELEASE "-ip -ipo3" )
endif()
if ( CMAKE_COMPILER_IS_GNUCXX )
add_flag ( CMAKE_C_FLAGS_RELEASE "-flto=3" )
add_flag ( CMAKE_CXX_FLAGS_RELEASE "-flto=3" )
add_flag ( CMAKE_EXE_LINKER_FLAGS "-fuse-linker-plugin" )
endif ( )

Christian Godenschwager
committed
if( WALBERLA_CXX_COMPILER_IS_MSVC )
add_flag ( CMAKE_CXX_FLAGS_RELEASE "/GL" )
add_flag ( CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG" )
add_flag ( CMAKE_SHARED_LINKER_FLAGS_RELEASE "/LTCG" )
add_flag ( CMAKE_MODULE_LINKER_FLAGS_RELEASE "/LTCG" )
endif ( )

Christian Godenschwager
committed
if( WALBERLA_CXX_COMPILER_IS_IBM )
add_flag ( CMAKE_C_FLAGS_RELEASE "-qipa" )
add_flag ( CMAKE_CXX_FLAGS_RELEASE "-qipa" )
add_flag ( CMAKE_EXE_LINKER_FLAGS "-qipa" )

Christian Godenschwager
committed
endif ( )
############################################################################################################################
############################################################################################################################
##
## Sanitizer
##
############################################################################################################################
if ( WALBERLA_SANITIZE_ADDRESS )
if ( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_CLANG )
add_flag( CMAKE_CXX_FLAGS "-fsanitize=address")
endif()
endif()

Christian Godenschwager
committed
if ( WALBERLA_SANITIZE_UNDEFINED )
if ( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_CLANG )
add_flag( CMAKE_CXX_FLAGS "-fsanitize=undefined")
endif()
endif()

Christian Godenschwager
committed
############################################################################################################################
# Documentation Generation
#
# Build documentation using Doxygen (www.doxygen.org)
############################################################################################################################
find_package ( Doxygen )
find_package ( HTMLHelp )
if ( HTML_HELP_COMPILER EQUAL "" )
set ( HTML_HELP_FOUND "NO" )
else ( )
set ( HTML_HELP_FOUND "YES" )
endif ( )

Christian Godenschwager
committed
if ( DOXYGEN_FOUND )
set ( DOXYGEN_HTML_HEADER ${walberla_SOURCE_DIR}/doc/header.html )
set ( DOXYGEN_HTML_FOOTER ${walberla_SOURCE_DIR}/doc/footer.html )
set ( DOXYGEN_HTML_OUTPUT "html" )

Christian Godenschwager
committed
configure_file ( ${walberla_SOURCE_DIR}/doc/doxygen.in ${walberla_BINARY_DIR}/doc/doxygen.cfg @ONLY )
add_custom_target ( doc ${DOXYGEN_EXECUTABLE} ${walberla_BINARY_DIR}/doc/doxygen.cfg
COMMENT "Generating API documentation with Doxygen" VERBATIM )

Christian Godenschwager
committed
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
endif ( )
############################################################################################################################
############################################################################################################################
#
# Fix compiler bugs
#
############################################################################################################################
# The NEC SX has a few issues in its standard library headers
if( WALBERLA_CXX_COMPILER_IS_NEC )
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/math.h "#include_next <math.h>\n#undef fpclassify\n#undef signbit\n#undef isfinite\n#undef isinf\n#undef isnan\n#undef isnormal\n#undef isgreater\n#undef isgreaterequal\n#undef isless\n#undef islessequal\n#undef islessgreater\n#undef isunordered\n")
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/sys/types.h "#define uint_t SX_UINT_T\n#include \"/SX/usr/include/sys/types.h\" \n#undef uint_t\n")
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/sys/acl.h "#define uint_t SX_UINT_T\n#include \"/SX/usr/include/sys/acl.h\" \n#undef uint_t\n")
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/sys/if_ehcpl.h "#define uint_t SX_UINT_T\n#include \"/SX/usr/include/sys/if_ehcpl.h\"\n#undef uint_t\n")
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/sys/ptms.h "#define uint_t SX_UINT_T\n#include \"/SX/usr/include/sys/ptms.h\" \n#undef uint_t\n")
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/sys/stream.h "#define uint_t SX_UINT_T\n#include \"/SX/usr/include/sys/stream.h\" \n#undef uint_t\n")
file( WRITE ${walberla_BINARY_DIR}/CMakeFiles/src/sys/strsubr.h "#define uint_t SX_UINT_T\n#include \"/SX/usr/include/sys/strsubr.h\" \n#undef uint_t\n")
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/math.h ${walberla_BINARY_DIR}/src/math.h COPYONLY )
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/sys/types.h ${walberla_BINARY_DIR}/src/sys/types.h COPYONLY )
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/sys/acl.h ${walberla_BINARY_DIR}/src/sys/acl.h COPYONLY )
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/sys/if_ehcpl.h ${walberla_BINARY_DIR}/src/sys/if_ehcpl.h COPYONLY )
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/sys/ptms.h ${walberla_BINARY_DIR}/src/sys/ptms.h COPYONLY )
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/sys/stream.h ${walberla_BINARY_DIR}/src/sys/stream.h COPYONLY )
configure_file ( ${walberla_BINARY_DIR}/CMakeFiles/src/sys/strsubr.h ${walberla_BINARY_DIR}/src/sys/strsubr.h COPYONLY )
endif()
############################################################################################################################
#
# Subdirectories
#
############################################################################################################################
# Add binary dir for generated headers
include_directories ( ${CMAKE_CURRENT_BINARY_DIR}/src )
# All include paths are specified relative to src/ directory

Christian Godenschwager
committed
include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/src )
# Generate file with compile options, and add install rule for it
configure_file ( src/waLBerlaDefinitions.in.h

Christian Godenschwager
committed
src/waLBerlaDefinitions.h )

Christian Godenschwager
committed
install( FILES ${walberla_BINARY_DIR}/src/waLBerlaDefinitions.h DESTINATION walberla/ )
# sources
add_subdirectory ( src )
# test
if ( WALBERLA_BUILD_TESTS )
add_subdirectory ( tests )
else()
add_subdirectory( tests EXCLUDE_FROM_ALL )
endif()
add_subdirectory ( apps )
waLBerla_export()
############################################################################################################################