Commit 7e78abc8 authored by Michael Kuron's avatar Michael Kuron
Browse files

Require C++14 and CMake 3.1

parent d0efd825
......@@ -125,67 +125,6 @@ stages:
intel_15_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
only:
- triggers
tags:
- docker
- intel
intel_15_mpionly:
<<: *build_mpionly_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
only:
- triggers
tags:
- docker
- intel
intel_15_hybrid:
<<: *build_hybrid_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
only:
- triggers
tags:
- docker
- intel
intel_15_serial_dbg:
<<: *build_serial_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
only:
- triggers
tags:
- docker
- intel
intel_15_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
only:
- triggers
tags:
- docker
- intel
intel_15_hybrid_dbg:
<<: *build_hybrid_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
tags:
- docker
- intel
intel_15_hybrid_dbg_sp:
<<: *build_hybrid_dbg_sp_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:15
only:
- triggers
tags:
- docker
- intel
intel_16_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:16
......@@ -239,8 +178,6 @@ intel_16_mpionly_dbg:
intel_16_hybrid_dbg:
<<: *build_hybrid_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/intel:16
only:
- triggers
tags:
- cuda
- docker
......@@ -309,172 +246,6 @@ intel_17_hybrid_dbg_sp:
- docker
- intel
gcc_4.7_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
only:
- triggers
tags:
- docker
gcc_4.7_mpionly:
<<: *build_mpionly_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
only:
- triggers
tags:
- docker
gcc_4.7_hybrid:
<<: *build_hybrid_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
only:
- triggers
tags:
- docker
gcc_4.7_serial_dbg:
<<: *build_serial_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
only:
- triggers
tags:
- docker
gcc_4.7_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
only:
- triggers
tags:
- docker
gcc_4.7_hybrid_dbg:
<<: *build_hybrid_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
tags:
- docker
gcc_4.7_hybrid_dbg_sp:
<<: *build_hybrid_dbg_sp_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.7
only:
- triggers
tags:
- docker
gcc_4.8_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.8_mpionly:
<<: *build_mpionly_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.8_hybrid:
<<: *build_hybrid_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.8_serial_dbg:
<<: *build_serial_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.8_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.8_hybrid_dbg:
<<: *build_hybrid_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.8_hybrid_dbg_sp:
<<: *build_hybrid_dbg_sp_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.8
only:
- triggers
tags:
- docker
gcc_4.9_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_4.9_mpionly:
<<: *build_mpionly_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_4.9_hybrid:
<<: *build_hybrid_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_4.9_serial_dbg:
<<: *build_serial_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_4.9_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_4.9_hybrid_dbg:
<<: *build_hybrid_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_4.9_hybrid_dbg_sp:
<<: *build_hybrid_dbg_sp_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:4.9
only:
- triggers
tags:
- docker
gcc_5_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:5
......@@ -519,8 +290,6 @@ gcc_5_mpionly_dbg:
gcc_5_hybrid_dbg:
<<: *build_hybrid_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/gcc:5
only:
- triggers
tags:
- cuda
- docker
......@@ -636,72 +405,6 @@ gcc_7_hybrid_dbg_sp:
tags:
- docker
clang_3.4_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
only:
- triggers
tags:
- docker
clang_3.4_mpionly:
<<: *build_mpionly_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
only:
- triggers
tags:
- docker
clang_3.4_serial_dbg:
<<: *build_serial_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
only:
- triggers
tags:
- docker
clang_3.4_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.4
tags:
- docker
clang_3.5_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
only:
- triggers
tags:
- cuda
- docker
clang_3.5_mpionly:
<<: *build_mpionly_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
only:
- triggers
tags:
- cuda
- docker
clang_3.5_serial_dbg:
<<: *build_serial_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
only:
- triggers
tags:
- cuda
- docker
clang_3.5_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.5
only:
- triggers
tags:
- cuda
- docker
clang_3.6_serial:
<<: *build_serial_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.6
......@@ -732,8 +435,6 @@ clang_3.6_serial_dbg:
clang_3.6_mpionly_dbg:
<<: *build_mpionly_dbg_definition
image: i10git.cs.fau.de:5005/walberla/buildenvs/clang:3.6
only:
- triggers
tags:
- cuda
- docker
......@@ -1097,88 +798,6 @@ coverage:
- ctest -LE $CTEST_EXCLUDE_LABELS -C $BUILD_CONFIGURATION --output-on-failure -j 4
msvc-12_Hybrid_Dbg:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "DebugOptimized"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "ON"
WALBERLA_BUILD_WITH_OPENMP: "ON"
WALBERLA_DOUBLE_ACCURACY: "ON"
msvc-12_Hybrid_SP_Dbg:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "DebugOptimized"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "ON"
WALBERLA_BUILD_WITH_OPENMP: "ON"
WALBERLA_DOUBLE_ACCURACY: "OFF"
only:
- triggers
msvc-12_Hybrid:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "Release"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "ON"
WALBERLA_BUILD_WITH_OPENMP: "ON"
WALBERLA_DOUBLE_ACCURACY: "ON"
only:
- triggers
msvc-12_Serial_Dbg:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "DebugOptimized"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "OFF"
WALBERLA_BUILD_WITH_OPENMP: "OFF"
WALBERLA_DOUBLE_ACCURACY: "ON"
only:
- triggers
msvc-12_Serial:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "Release"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "OFF"
WALBERLA_BUILD_WITH_OPENMP: "OFF"
WALBERLA_DOUBLE_ACCURACY: "ON"
only:
- triggers
msvc-12_MpiOnly_Dbg:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "DebugOptimized"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "ON"
WALBERLA_BUILD_WITH_OPENMP: "OFF"
WALBERLA_DOUBLE_ACCURACY: "ON"
only:
- triggers
msvc-12_MpiOnly:
<<: *win_build_definition
variables:
CMAKE_GENERATOR: "Visual Studio 12 2013 Win64"
BUILD_CONFIGURATION: "Release"
CTEST_EXCLUDE_LABELS: "longrun"
WALBERLA_BUILD_WITH_MPI: "ON"
WALBERLA_BUILD_WITH_OPENMP: "OFF"
WALBERLA_DOUBLE_ACCURACY: "ON"
only:
- triggers
msvc-14_Hybrid_Dbg:
<<: *win_build_definition
variables:
......@@ -1188,8 +807,6 @@ msvc-14_Hybrid_Dbg:
WALBERLA_BUILD_WITH_MPI: "ON"
WALBERLA_BUILD_WITH_OPENMP: "ON"
WALBERLA_DOUBLE_ACCURACY: "ON"
only:
- triggers
msvc-14_Hybrid_SP_Dbg:
<<: *win_build_definition
......@@ -1348,14 +965,10 @@ msvc-14.1_MpiOnly:
.conda-deploy: &conda_deploy_definition
stage: deploy
before_script:
- conda update -y conda
- conda update -y python
- conda install -y conda-build anaconda-client
- anaconda login --username $CONDA_DEPLOY_USER --password $CONDA_DEPLOY_PASSWORD --hostname $CI_JOB_ID
- conda config --set anaconda_upload yes
- conda config --add channels lssfau
- conda -V
- conda build -V
after_script:
- anaconda logout
dependencies: []
......@@ -1364,41 +977,21 @@ msvc-14.1_MpiOnly:
- master@walberla/walberla
- tags@walberla/walberla
conda-py36-win-withoutLbm:
conda-py36-win:
<<: *conda_deploy_definition
tags:
- win
script:
- conda build --python=3.6 --user=lssfau utilities\\conda\\withoutLbm
- conda build --python=3.6 --user=lssfau utilities\\conda\\walberla
conda-py35-win-withoutLbm:
conda-py35-win:
<<: *conda_deploy_definition
tags:
- win
script:
- conda build --python=3.5 --user=lssfau utilities\\conda\\withoutLbm
- conda build --python=3.5 --user=lssfau utilities\\conda\\walberla
conda-py36-linux-withoutLbm:
<<: *conda_deploy_definition
tags:
- docker
image: continuumio/miniconda3
script:
- apt-get update
- apt-get install -y build-essential
- conda build --python=3.6 --user=lssfau utilities/conda/withoutLbm
conda-py35-linux-withoutLbm:
<<: *conda_deploy_definition
tags:
- docker
image: continuumio/miniconda3
script:
- apt-get update
- apt-get install -y build-essential
- conda build --python=3.5 --user=lssfau utilities/conda/withoutLbm
conda-py36-linux-withLbm:
conda-py36-linux:
<<: *conda_deploy_definition
tags:
- docker
......@@ -1406,9 +999,9 @@ conda-py36-linux-withLbm:
script:
- apt-get update
- apt-get install -y build-essential
- conda build --python=3.6 --user=lssfau utilities/conda/withLbm
- conda build --python=3.6 --user=lssfau utilities/conda/walberla
conda-py35-linux-withLbm:
conda-py35-linux:
<<: *conda_deploy_definition
tags:
- docker
......@@ -1416,4 +1009,4 @@ conda-py35-linux-withLbm:
script:
- apt-get update
- apt-get install -y build-essential
- conda build --python=3.5 --user=lssfau utilities/conda/withLbm
- conda build --python=3.5 --user=lssfau utilities/conda/walberla
......@@ -25,7 +25,7 @@
##
############################################################################################################################
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
CMAKE_MINIMUM_REQUIRED (VERSION 3.1)
PROJECT ( walberla )
......@@ -36,11 +36,7 @@ include ( waLBerlaFunctions )
set_version( 4 0 )
if( CMAKE_VERSION VERSION_LESS 2.8.3 )
include( CMakeParseArgumentsCompat )
else()
include( CMakeParseArguments )
endif()
include( CMakeParseArguments )
# Enable CTest
enable_testing()
......@@ -166,6 +162,9 @@ if( CMAKE_CXX_COMPILER MATCHES "icpc" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "icpc"
SET(CMAKE_LINKER "${XILD}")
ENDIF(XILD)
MARK_AS_ADVANCED(XILD)
if( CMAKE_VERSION VERSION_LESS 3.6.0 )
add_flag ( CMAKE_CXX_FLAGS "-std=c++14" )
endif()
else()
option ( WALBERLA_CXX_COMPILER_IS_INTEL "Use Intel compiler" OFF )
endif()
......@@ -204,7 +203,7 @@ endif()
mark_as_advanced ( WALBERLA_CXX_COMPILER_IS_NEC )
# Check for Clang compiler
if( CMAKE_CXX_COMPILER MATCHES "clang" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
if( CMAKE_CXX_COMPILER MATCHES "clang" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" )
option ( WALBERLA_CXX_COMPILER_IS_CLANG "Use clang compiler" ON )
else()
option ( WALBERLA_CXX_COMPILER_IS_CLANG "Use clang compiler" OFF )
......@@ -270,30 +269,18 @@ if ( WALBERLA_PROFILE_USE )
endif()
endif()
set( CMAKE_CXX_STANDARD 14 )
set( CMAKE_CXX_STANDARD_REQUIRED ON )
set( CMAKE_CXX_EXTENSIONS OFF )
# common flags for intel and g++
if( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_INTEL )
if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7 )
add_flag ( CMAKE_CXX_FLAGS "-std=c++0x" )
else()
add_flag ( CMAKE_CXX_FLAGS "-std=c++11" )
endif()
#add_flag ( CMAKE_C_FLAGS "-std=c99" )
add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow" )
endif()
# C++11 language features for IBM compiler
if( WALBERLA_CXX_COMPILER_IS_IBM )
add_flag ( CMAKE_CXX_FLAGS "-qlanglvl=autotypededuction -qlanglvl=decltype -qlanglvl=static_assert -qlanglvl=rightanglebracket -qlanglvl=c99longlong" )
endif()
# C++11 language features for Cray compiler
if( WALBERLA_CXX_COMPILER_IS_CRAY )
add_flag ( CMAKE_CXX_FLAGS "-hstd=c++11" )
endif()
# C++11 language features for NEC compiler
if( WALBERLA_CXX_COMPILER_IS_NEC )
add_flag ( CMAKE_CXX_FLAGS "-Kcpp11 -Krtti -Kexceptions -size_t64 -Kgcc" )
add_flag ( CMAKE_CXX_FLAGS "-Kcpp14 -Krtti -Kexceptions -size_t64 -Kgcc" )
add_flag ( CMAKE_CXX_FLAGS "-D__BIG_ENDIAN -D__BYTE_ORDER=__BIG_ENDIAN" )
add_flag ( CMAKE_CXX_FLAGS "-Tnoauto,used" )
add_flag ( CMAKE_EXE_LINKER_FLAGS "-Wl,-h,muldefs" )
......@@ -384,7 +371,7 @@ endif ( )
if ( WALBERLA_CXX_COMPILER_IS_CLANG )
add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow -Wno-c++11-extensions -std=c++11 -Qunused-arguments" )
add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow -Wno-c++11-extensions -Qunused-arguments" )
add_flag ( CMAKE_CXX_FLAGS "-D'_LIBCPP_EXTERN_TEMPLATE(...)='")
endif ( )
......
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
#
# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions for
# parsing the arguments given to that macro or function.
# It processes the arguments and defines a set of variables which hold the
# values of the respective options.
#
# The <options> argument contains all options for the respective macro,
# i.e. keywords which can be used when calling the macro without any value
# following, like e.g. the OPTIONAL keyword of the install() command.
#
# The <one_value_keywords> argument contains all keywords for this macro
# which are followed by one value, like e.g. DESTINATION keyword of the
# install() command.
#
# The <multi_value_keywords> argument contains all keywords for this macro
# which can be followed by more than one value, like e.g. the TARGETS or
# FILES keywords of the install() command.
#
# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the
# keywords listed in <options>, <one_value_keywords> and
# <multi_value_keywords> a variable composed of the given <prefix>
# followed by "_" and the name of the respective keyword.
# These variables will then hold the respective value from the argument list.
# For the <options> keywords this will be TRUE or FALSE.
#
# All remaining arguments are collected in a variable
# <prefix>_UNPARSED_ARGUMENTS, this can be checked afterwards to see whether
# your macro was called with unrecognized parameters.
#
# As an example here a my_install() macro, which takes similar arguments as the
# real install() command:
#
# function(MY_INSTALL)
# set(options OPTIONAL FAST)
# set(oneValueArgs DESTINATION RENAME)
# set(multiValueArgs TARGETS CONFIGURATIONS)
# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
# ...
#
# Assume my_install() has been called like this:
# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
#
# After the cmake_parse_arguments() call the macro will have set the following
# variables:
# MY_INSTALL_OPTIONAL = TRUE
# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install()
# MY_INSTALL_DESTINATION = "bin"
# MY_INSTALL_RENAME = "" (was not used)
# MY_INSTALL_TARGETS = "foo;bar"</