Unverified Commit b0b34005 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1684 from akohlmey/cxx-11-test

Implement test for C++11 and document it
parents ed6dd1a6 5dba4b66
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -56,6 +56,13 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
endif()

option(DISABLE_CXX11_REQUIREMENT "Disable check that requires C++11 for compiling LAMMPS" OFF)
if(DISABLE_CXX11_REQUIREMENT)
  add_definitions(-DLAMMPS_CXX98)
else()
  set(CMAKE_CXX_STANDARD 11)
endif()

# GNU compiler features
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
  option(ENABLE_COVERAGE "Enable code coverage" OFF)
+23 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ Optional build settings :h3
LAMMPS can be built with several optional settings.  Each sub-section
explain how to do this for building both with CMake and make.

"C++11 standard compliance test"_#cxx11 when building all of LAMMPS
"FFT library"_#fft for use with the "kspace_style pppm"_kspace_style.html command
"Size of LAMMPS data types"_#size
"Read or write compressed files"_#gzip
@@ -23,6 +24,28 @@ explain how to do this for building both with CMake and make.

:line

C++11 standard compliance test :h4,link(cxx11)

The LAMMPS developers plan to transition to make the C++11 standard the
minimum requirement for compiling LAMMPS.  Currently this only applies to
some packages like KOKKOS while the rest aims to be compatible with the C++98
standard.  Most currently used compilers are compatible with C++11; some need
to set extra flags to switch.  To determine the impact of requiring C++11,
we have added a simple compliance test to the source code, that will cause
the compilation to abort, if C++11 compliance is not available or enabled.
To bypass this check, you need to change a setting in the makefile or
when calling CMake.

[CMake variable]:

-D DISABLE_CXX11_REQUIREMENT=yes

[Makefile.machine setting]:

LMP_INC = -DLAMMPS_CXX98

:line

FFT library :h4,link(fft)

When the KSPACE package is included in a LAMMPS build, the
+3 −3
Original line number Diff line number Diff line
@@ -26,12 +26,12 @@ SHLIBFLAGS = -shared
# if you change any -D setting, do full re-compile after "make clean"

# LAMMPS ifdef settings
# see possible settings in Section 2.2 (step 4) of manual
# see possible settings in Section 3.5 of the manual

LMP_INC =	-DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64
LMP_INC =	-DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64  # -DLAMMPS_CXX98

# MPI library
# see discussion in Section 2.2 (step 5) of manual
# see discussion in Section 3.4 of the manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
+3 −3
Original line number Diff line number Diff line
@@ -26,12 +26,12 @@ SHLIBFLAGS = -shared
# if you change any -D setting, do full re-compile after "make clean"

# LAMMPS ifdef settings
# see possible settings in Section 2.2 (step 4) of manual
# see possible settings in Section 3.5 of the manual

LMP_INC =	-DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64
LMP_INC =	-DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64  # -DLAMMPS_CXX98

# MPI library
# see discussion in Section 2.2 (step 5) of manual
# see discussion in Section 3.4 of the manual
# MPI wrapper compiler/linker can provide this info
# can point to dummy MPI library in src/STUBS as in Makefile.serial
# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
+13 −0
Original line number Diff line number Diff line
@@ -444,6 +444,19 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) :
    if ((universe->me == 0) && !helpflag) {
      if (screen) fprintf(screen,"LAMMPS (%s)\n",universe->version);
      if (logfile) fprintf(logfile,"LAMMPS (%s)\n",universe->version);
#if defined(LAMMPS_CXX98)
      const char warning[] = "\nWARNING-WARNING-WARNING-WARNING-WARNING\n"
        "This LAMMPS executable was compiled using C++98 compatibility.\n"
        "Please report the compiler info below at https://github.com/lammps/lammps/issues/1659\n";
      const char *infobuf = Info::get_compiler_info();
      if (screen)
         fprintf(screen,"%s%s\nWARNING-WARNING-WARNING-WARNING-WARNING\n\n",
                 warning,infobuf);
      if (logfile)
         fprintf(logfile,"%s%s\nWARNING-WARNING-WARNING-WARNING-WARNING\n\n",
                 warning,infobuf);
      delete[] infobuf;
#endif
    }

  // universe is one or more worlds, as setup by partition switch
Loading