From 8952b1107ce064ec62b19197522ed0608efb69dd Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@lanl.gov>
Date: Fri, 11 May 2018 15:33:18 -0600
Subject: [PATCH] cmake: add user overwrite for USER-INTEL

---
 cmake/CMakeLists.txt | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index e4a8231684..0f91452123 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -56,6 +56,8 @@ option(BUILD_SHARED_LIBS "Build shared libs" OFF)
 if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg
   set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 endif()
+option(DEVELOPER_MODE "Enable developer mode" OFF)
+mark_as_advanced(DEVELOPER_MODE)
 include(GNUInstallDirs)
 
 set(LAMMPS_LINK_LIBS)
@@ -603,24 +605,29 @@ if(PKG_OPT)
 endif()
 
 if(PKG_USER-INTEL)
-    if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-      message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler")
-    endif()
-    if(CMAKE_CXX_COMPILER_VERSIONĂ‚ VERSION_LESS "2016")
-      message(FATAL_ERROR "USER-INTEL is needed at least 2016 intel compiler")
-    endif()
-    if(CMAKE_CXX_COMPILER_VERSIONĂ‚ MATCHES "^2017\.[34].*")
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
-    else()
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
+    if(NOT DEVELOPER_MODE)
+      if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+        message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler")
+      endif()
+      if(CMAKE_CXX_COMPILER_VERSIONĂ‚ VERSION_LESS "2016")
+        message(FATAL_ERROR "USER-INTEL is needed at least 2016 intel compiler")
+      endif()
     endif()
-    include(CheckCXXCompilerFlag)
-    foreach(_FLAG -qopenmp -qno-offload -fno-alias -ansi-alias -restrict -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -O2 "-fp-model fast=2" -no-prec-div -qoverride-limits -qopt-zmm-usage=high)
-      check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG})
-      if(COMPILER_SUPPORTS${_FLAG})
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAG}")
+    option(INJECT_INTEL_FLAG "Inject OMG fast flags for USER-INTEL" ON)
+    if(INJECT_INTEL_FLAG AND CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+      if(CMAKE_CXX_COMPILER_VERSIONĂ‚ MATCHES "^2017\.[34].*")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
+      else()
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
       endif()
-    endforeach()
+      include(CheckCXXCompilerFlag)
+      foreach(_FLAG -qopenmp -qno-offload -fno-alias -ansi-alias -restrict -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -O2 "-fp-model fast=2" -no-prec-div -qoverride-limits -qopt-zmm-usage=high)
+        check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG})
+        if(COMPILER_SUPPORTS${_FLAG})
+          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAG}")
+        endif()
+      endforeach()
+    endif()
     set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
     set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/intel_preprocess.h
                            ${USER-INTEL_SOURCES_DIR}/intel_buffers.h
-- 
GitLab