From 67d02a8dca3149ebb4017219a09311c6c2b5ab4b Mon Sep 17 00:00:00 2001
From: matta adrien <matta@lpccaen.in2p3.fr>
Date: Tue, 11 Oct 2016 10:37:46 +0200
Subject: [PATCH] * Introducing NPTool_CMake_Preamble.cmake to mutualize the
 compiler * setting

---
 NPLib/CMakeLists.txt                          | 18 +----
 NPLib/ressources/CMake/NPAnalysis.cmake       | 76 ++-----------------
 NPLib/ressources/CMake/NPLibConfig.cmake.in   |  2 +
 .../CMake/NPTool_CMake_Preamble.cmake         | 65 ++++++++++++++++
 NPSimulation/CMakeLists.txt                   | 55 ++------------
 5 files changed, 80 insertions(+), 136 deletions(-)
 create mode 100644 NPLib/ressources/CMake/NPTool_CMake_Preamble.cmake

diff --git a/NPLib/CMakeLists.txt b/NPLib/CMakeLists.txt
index c29ebdfe3..ac865ec9b 100644
--- a/NPLib/CMakeLists.txt
+++ b/NPLib/CMakeLists.txt
@@ -20,21 +20,8 @@ if(rdet)
     message("Building the following detectors ${DETLIST}") 
 endif()
 
-# Setting the policy to match Cmake version
-cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
-
-# This suppress the Up-to-Date message of file installed for cmake 3.1 and above
-set(CMAKE_INSTALL_MESSAGE LAZY) 
-
-# look for Root
-include("ressources/CMake/Root.cmake")
-
-# Check for user disabling of c++11 support
-string(COMPARE EQUAL "${CPP11}" "no" nocpp11)
-if(nocpp11)
- message(" -> C++11 support disable")
-endif()
-
+# include the nptool standard CMake preamble 
+include("ressources/CMake/NPTool_CMake_Preamble.cmake")
 
 # If the compiler is Clang, silence the unrecognised flags
 if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*Clang.*")
@@ -49,6 +36,7 @@ endif()
 
 # If compiler is GCC active the color diagnostic
 if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*GNU.*")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
 execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
                 OUTPUT_VARIABLE GCC_VERSION)
   if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
diff --git a/NPLib/ressources/CMake/NPAnalysis.cmake b/NPLib/ressources/CMake/NPAnalysis.cmake
index 5baa9cba5..6436d9bd5 100644
--- a/NPLib/ressources/CMake/NPAnalysis.cmake
+++ b/NPLib/ressources/CMake/NPAnalysis.cmake
@@ -1,79 +1,13 @@
 cmake_minimum_required (VERSION 2.8) 
-#Finding NPTool
-set(NPTOOL "$ENV{NPTOOL}")
-set(NPLIB "${NPTOOL}/NPLib")
-set(NPTOOL_INCLUDE_DIR "${NPLIB}/include")
-set(NPTOOL_LIB_DIR "${NPLIB}/lib")
-  
-include("${NPLIB}/ressources/CMake/Root.cmake")  
-
-include(CheckCXXCompilerFlag)
 project (NPAnalysis)
 set(CMAKE_BUILD_TYPE Release)  
 
-# Setting the policy to match Cmake version
-cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
-
-# This suppress the Up-to-Date message of file installed for cmake 3.1 and above
-set(CMAKE_INSTALL_MESSAGE LAZY) 
-
-
-
-# Add root to the link and include directories
-include_directories( ${ROOT_INCLUDE_DIR})
-link_directories( ${ROOT_LIBRARY_DIR})
-include_directories( ${NPTOOL_INCLUDE_DIR})
-link_directories( ${NPTOOL_LIB_DIR})
-
-# Check for user disabling of c++11 support
-string(COMPARE EQUAL "${CPP11}" "no" nocpp11)
-if(nocpp11)
- message(" -> C++11 support disable")
-endif()
-
-
-# If the compiler is Clang, silence the unrecognised flags
-if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*Clang.*")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics -undefined dynamic_lookup")
-  if( UNIX AND NOT APPLE )
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
-  endif()
-  if( APPLE AND CLANG_VERSION_MAJOR VERSION_LESS 5 AND NOT nocpp11)
-     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
-  endif()
-endif()
-
-# If compiler is GCC active the color diagnostic  
-if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*GNU.*")  
-execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion 
-                OUTPUT_VARIABLE GCC_VERSION)
-  if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9) 
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")   
-  endif() 
-endif()   
-
-
-# Adjust the compiler language flag
-set(NOCPPFLAGS true)
-if(${CMAKE_CXX_FLAGS} MATCHES ".*std=.*11")
-  set(NOCPPFLAGS false)
-elseif(${CMAKE_CXX_FLAGS} MATCHES ".*std=.*0x")
-  set(NOCPPFLAGS false) 
-endif()
-
-if(NOCPPFLAGS)
-  CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
-  if(COMPILER_SUPPORTS_CXX11 AND NOT nocpp11)
-	    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-  else()
-    CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-  endif()
-
-  if(COMPILER_SUPPORTS_CXX0X AND NOT nocpp11)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-  endif()
-endif()
+#Finding NPTool
+find_package(NPLib)
+include(${NPLib_USE_FILE})
 
+#include the nptool standard CMake preamble 
+include("${NPLIB}/ressources/CMake/NPTool_CMake_Preamble.cmake")
 
 add_library(NPAnalysis SHARED Analysis.cxx)
 target_link_libraries(NPAnalysis ${ROOT_LIBRARIES} -L${NPLIB}/lib -lNPCore -lNPPhysics -lNPInteractionCoordinates -lNPInitialConditions)
diff --git a/NPLib/ressources/CMake/NPLibConfig.cmake.in b/NPLib/ressources/CMake/NPLibConfig.cmake.in
index 0c6614a4f..a89d3b8c5 100644
--- a/NPLib/ressources/CMake/NPLibConfig.cmake.in
+++ b/NPLib/ressources/CMake/NPLibConfig.cmake.in
@@ -9,6 +9,8 @@ get_filename_component(NPLib_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
 set(NPLib_USE_FILE "@CMAKE_BINARY_DIR@/NPLibConfig.cmake")
 set(NPLib_INCLUDE_DIRS "@CMAKE_INCLUDE_OUTPUT_DIRECTORY@")
 set(NPLib_DETECTOR_LIST "@DETLIST@")
+set(NPTOOL "$ENV{NPTOOL}")
+set(NPLIB "${NPTOOL}/NPLib")
 include_directories("${NPLib_INCLUDE_DIRS}")
 
 set(NPLib_LIBRARIES "-L@CMAKE_BINARY_DIR@/lib -lNPCore -lNPPhysics")
diff --git a/NPLib/ressources/CMake/NPTool_CMake_Preamble.cmake b/NPLib/ressources/CMake/NPTool_CMake_Preamble.cmake
new file mode 100644
index 000000000..fc88e16f7
--- /dev/null
+++ b/NPLib/ressources/CMake/NPTool_CMake_Preamble.cmake
@@ -0,0 +1,65 @@
+# Set usefull variable
+set(NPTOOL "$ENV{NPTOOL}")
+set(NPLIB "${NPTOOL}/NPLib")
+set(NPTOOL_INCLUDE_DIR "${NPLIB}/include")
+set(NPTOOL_LIB_DIR "${NPLIB}/lib")
+
+# Look for Root   
+include("${NPLIB}/ressources/CMake/Root.cmake")  
+
+# Setting the policy to match Cmake version
+cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+
+# This suppress the Up-to-Date message of file installed for cmake 3.1 and above
+set(CMAKE_INSTALL_MESSAGE LAZY) 
+
+# Check for user disabling of c++11 support
+string(COMPARE EQUAL "${CPP11}" "no" nocpp11)
+if(nocpp11)
+ message(" -> C++11 support disable")
+endif()
+
+
+# If the compiler is Clang, silence the unrecognised flags
+if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*Clang.*")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics")
+  if( UNIX AND NOT APPLE )
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
+  endif()
+  if( APPLE AND CLANG_VERSION_MAJOR VERSION_LESS 5 AND NOT nocpp11)
+     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+  endif()
+endif()
+
+# If compiler is GCC active the color diagnostic
+if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*GNU.*")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
+execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
+                OUTPUT_VARIABLE GCC_VERSION)
+  if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
+  endif()
+endif()
+
+# Adjust the compiler language flag
+set(NOCPPFLAGS true)
+if(${CMAKE_CXX_FLAGS} MATCHES ".*std=.*11")
+  set(NOCPPFLAGS false)
+elseif(${CMAKE_CXX_FLAGS} MATCHES ".*std=.*0x")
+  set(NOCPPFLAGS false) 
+endif()
+
+if(NOCPPFLAGS)
+  CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
+  if(COMPILER_SUPPORTS_CXX11 AND NOT nocpp11)
+	    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+  else()
+    CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
+  endif()
+
+  if(COMPILER_SUPPORTS_CXX0X AND NOT nocpp11)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+  endif()
+endif()
+
+
diff --git a/NPSimulation/CMakeLists.txt b/NPSimulation/CMakeLists.txt
index beefa3512..e56244e53 100644
--- a/NPSimulation/CMakeLists.txt
+++ b/NPSimulation/CMakeLists.txt
@@ -8,11 +8,12 @@ set (NPSIM_VERSION_DETS 18)
 
 set(CMAKE_BUILD_TYPE Release)
 
-# Setting the policy to match Cmake version
-cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+# Finding NPLib
+find_package(NPLib)
+include(${NPLib_USE_FILE})
 
-# This suppress the Up-to-Date message of file installed for cmake 3.1 and above
-set(CMAKE_INSTALL_MESSAGE LAZY) 
+#include the nptool standard CMake preamble 
+include("../NPLib/ressources/CMake/NPTool_CMake_Preamble.cmake")
 
 # Finding Geant 4
 find_package(Geant4 REQUIRED ui_all vis_all)
@@ -33,54 +34,8 @@ message ("Geant4 found, Version : ${NPS_GEANT4_VERSION_MAJOR}.${NPS_GEANT4_VERSI
 include(${Geant4_USE_FILE}) 
 add_definitions(${Geant4_DEFINITIONS})    
 
-# Finding NPLib
-find_package(NPLib)
-include(${NPLib_USE_FILE})
-
 configure_file(Core/NPSimulationVersion.hh.in Core/NPSimulationVersion.hh @ONLY) 
 
-# look for Root
-include("../NPLib/ressources/CMake/Root.cmake")
-
-# If the compiler is Clang, silence the unrecognised flags
-if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*Clang.*")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics")
-  if( UNIX AND NOT APPLE )
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")
-  endif()
-endif()
-
-# If compiler is GCC active the color diagnostic
-if(${CMAKE_CXX_COMPILER_ID} MATCHES ".*GNU.*")
-execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
-                OUTPUT_VARIABLE GCC_VERSION) 
-   if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
-     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
-  endif() 
-endif()
-
-# Adjust the compiler language flag
-set(NOCPPFLAGS true)
-if(${CMAKE_CXX_FLAGS} MATCHES ".*std=.*11")
-  set(NOCPPFLAGS false)
-elseif(${CMAKE_CXX_FLAGS} MATCHES ".*std=.*0x")
-  set(NOCPPFLAGS false) 
-endif()
-
-if(NOCPPFLAGS)
-  CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
-  if(COMPILER_SUPPORTS_CXX11)
-	    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-  else()
-    CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-  endif()
-
-  if(COMPILER_SUPPORTS_CXX0X)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-  endif()
-endif()
-
-
  # Detector List
 set(DETLIST ${NPLib_DETECTOR_LIST})
 
-- 
GitLab