[Cmake-commits] CMake branch, next, updated. v3.6.0-834-gea24f62

Brad King brad.king at kitware.com
Wed Jul 13 11:56:45 EDT 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  ea24f62591b976b3f5301867c2d5d854033a5678 (commit)
       via  73e9f36ea6a64fa1a5f2f8ab39c5981b2a64aa5e (commit)
       via  8f1103c0fd5e51cbbfc6f66ada72fbead53297d6 (commit)
       via  ec963f04cb713701dda9f12a433930845e5c2609 (commit)
      from  d74b00328fb8c51ca3e1f06114fbd3aa72472901 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ea24f62591b976b3f5301867c2d5d854033a5678
commit ea24f62591b976b3f5301867c2d5d854033a5678
Merge: d74b003 73e9f36
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Jul 13 11:56:44 2016 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Jul 13 11:56:44 2016 -0400

    Merge topic 'FindOpenMP-updates' into next
    
    73e9f36e FindOpenMP: Detect version (specification date) from compiler
    8f1103c0 FindOpenMP: Cleanup all variables unconditionally
    ec963f04 FindOpenMP: Improve documentation formatting


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=73e9f36ea6a64fa1a5f2f8ab39c5981b2a64aa5e
commit 73e9f36ea6a64fa1a5f2f8ab39c5981b2a64aa5e
Author:     Sujin Philip <sujin.philip at kitware.com>
AuthorDate: Wed Jul 13 11:12:38 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Jul 13 11:49:01 2016 -0400

    FindOpenMP: Detect version (specification date) from compiler
    
    Port changes from VTK commit fda6a31cb9 (Added Improved FindOpenMP
    module, 2015-04-23).  Improve use of try_compile to avoid needing
    to pass OpenMP flags as libraries.

diff --git a/Help/release/dev/FindOpenMP-updates.rst b/Help/release/dev/FindOpenMP-updates.rst
new file mode 100644
index 0000000..cb29a71
--- /dev/null
+++ b/Help/release/dev/FindOpenMP-updates.rst
@@ -0,0 +1,5 @@
+FindOpenMP-updates
+------------------
+
+* The :module:`FindOpenMP` module learned to detect the OpenMP
+  version (specification date) from the compiler.
diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake
index 768db12..a788832 100644
--- a/Modules/FindOpenMP.cmake
+++ b/Modules/FindOpenMP.cmake
@@ -20,6 +20,19 @@
 #   Flags to add to the Fortran compiler for OpenMP support.
 # ``OPENMP_FOUND``
 #   True if openmp is detected.
+#
+# The following internal variables are set, if detected:
+#
+# ``OpenMP_C_SPEC_DATE``
+#   Specification date of OpenMP version of C compiler.
+# ``OpenMP_CXX_SPEC_DATE``
+#   Specification date of OpenMP version of CXX compiler.
+# ``OpenMP_Fortran_SPEC_DATE``
+#   Specification date of OpenMP version of Fortran compiler.
+#
+# The specification dates are formatted as integers of the form
+# ``CCYYMM`` where these represent the decimal digits of the century,
+# year, and month.
 
 #=============================================================================
 # Copyright 2009 Kitware, Inc.
@@ -119,6 +132,75 @@ set(OpenMP_Fortran_TEST_SOURCE
   "
   )
 
+set(OpenMP_C_CXX_CHECK_VERSION_SOURCE
+"
+#include <stdio.h>
+#include <omp.h>
+const char ompver_str[] = { 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M',
+                            'P', '-', 'd', 'a', 't', 'e', '[',
+                            ('0' + ((_OPENMP/100000)%10)),
+                            ('0' + ((_OPENMP/10000)%10)),
+                            ('0' + ((_OPENMP/1000)%10)),
+                            ('0' + ((_OPENMP/100)%10)),
+                            ('0' + ((_OPENMP/10)%10)),
+                            ('0' + ((_OPENMP/1)%10)),
+                            ']', '\\0' };
+int main(int argc, char *argv[])
+{
+  printf(\"%s\\n\", ompver_str);
+  return 0;
+}
+")
+
+set(OpenMP_Fortran_CHECK_VERSION_SOURCE
+"
+      program omp_ver
+      use omp_lib
+      integer, parameter :: zero = ichar('0')
+      integer, parameter :: ompv = openmp_version
+      character, dimension(24), parameter :: ompver_str =&
+      (/ 'I', 'N', 'F', 'O', ':', 'O', 'p', 'e', 'n', 'M', 'P', '-',&
+         'd', 'a', 't', 'e', '[',&
+         char(zero + mod(ompv/100000, 10)),&
+         char(zero + mod(ompv/10000, 10)),&
+         char(zero + mod(ompv/1000, 10)),&
+         char(zero + mod(ompv/100, 10)),&
+         char(zero + mod(ompv/10, 10)),&
+         char(zero + mod(ompv/1, 10)), ']' /)
+      print *, ompver_str
+      end program omp_ver
+")
+
+function(_OPENMP_GET_SPEC_DATE LANG SPEC_DATE)
+  set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP)
+  if("${LANG}" STREQUAL "C")
+    set(SRC_FILE ${WORK_DIR}/ompver.c)
+    file(WRITE ${SRC_FILE} "${OpenMP_C_CXX_CHECK_VERSION_SOURCE}")
+  elseif("${LANG}" STREQUAL "CXX")
+    set(SRC_FILE ${WORK_DIR}/ompver.cpp)
+    file(WRITE ${SRC_FILE} "${OpenMP_C_CXX_CHECK_VERSION_SOURCE}")
+  else() # ("${LANG}" STREQUAL "Fortran")
+    set(SRC_FILE ${WORK_DIR}/ompver.f90)
+    file(WRITE ${SRC_FILE} "${OpenMP_Fortran_CHECK_VERSION_SOURCE}")
+  endif()
+
+  set(BIN_FILE ${WORK_DIR}/ompver_${LANG}.bin)
+  try_compile(OpenMP_TRY_COMPILE_RESULT ${CMAKE_BINARY_DIR} ${SRC_FILE}
+              CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenMP_${LANG}_FLAGS}"
+              COPY_FILE ${BIN_FILE})
+
+  if(${OpenMP_TRY_COMPILE_RESULT})
+    file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenMP-date")
+    set(regex_spec_date ".*INFO:OpenMP-date\\[0*([^]]*)\\].*")
+    if("${specstr}" MATCHES "${regex_spec_date}")
+      set(${SPEC_DATE} "${CMAKE_MATCH_1}" PARENT_SCOPE)
+    endif()
+  endif()
+
+  unset(OpenMP_TRY_COMPILE_RESULT CACHE)
+endfunction()
+
+
 # check c compiler
 if(CMAKE_C_COMPILER_LOADED)
   # if these are set then do not try to find them again,
@@ -150,6 +232,12 @@ if(CMAKE_C_COMPILER_LOADED)
 
   list(APPEND _OPENMP_REQUIRED_VARS OpenMP_C_FLAGS)
   unset(OpenMP_C_FLAG_CANDIDATES)
+
+  if (NOT OpenMP_C_SPEC_DATE)
+    _OPENMP_GET_SPEC_DATE("C" OpenMP_C_SPEC_DATE_INTERNAL)
+    set(OpenMP_C_SPEC_DATE "${OpenMP_C_SPEC_DATE_INTERNAL}" CACHE
+      INTERNAL "C compiler's OpenMP specification date")
+  endif()
 endif()
 
 # check cxx compiler
@@ -186,6 +274,12 @@ if(CMAKE_CXX_COMPILER_LOADED)
 
   list(APPEND _OPENMP_REQUIRED_VARS OpenMP_CXX_FLAGS)
   unset(OpenMP_CXX_FLAG_CANDIDATES)
+
+  if (NOT OpenMP_CXX_SPEC_DATE)
+    _OPENMP_GET_SPEC_DATE("CXX" OpenMP_CXX_SPEC_DATE_INTERNAL)
+    set(OpenMP_CXX_SPEC_DATE "${OpenMP_CXX_SPEC_DATE_INTERNAL}" CACHE
+      INTERNAL "C++ compiler's OpenMP specification date")
+  endif()
 endif()
 
 # check Fortran compiler
@@ -219,6 +313,12 @@ if(CMAKE_Fortran_COMPILER_LOADED)
 
   list(APPEND _OPENMP_REQUIRED_VARS OpenMP_Fortran_FLAGS)
   unset(OpenMP_Fortran_FLAG_CANDIDATES)
+
+  if (NOT OpenMP_Fortran_SPEC_DATE)
+    _OPENMP_GET_SPEC_DATE("Fortran" OpenMP_Fortran_SPEC_DATE_INTERNAL)
+    set(OpenMP_Fortran_SPEC_DATE "${OpenMP_Fortran_SPEC_DATE_INTERNAL}" CACHE
+      INTERNAL "Fortran compiler's OpenMP specification date")
+  endif()
 endif()
 
 set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
@@ -239,3 +339,5 @@ endif()
 unset(OpenMP_C_TEST_SOURCE)
 unset(OpenMP_CXX_TEST_SOURCE)
 unset(OpenMP_Fortran_TEST_SOURCE)
+unset(OpenMP_C_CXX_CHECK_VERSION_SOURCE)
+unset(OpenMP_Fortran_CHECK_VERSION_SOURCE)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8f1103c0fd5e51cbbfc6f66ada72fbead53297d6
commit 8f1103c0fd5e51cbbfc6f66ada72fbead53297d6
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Jul 13 11:01:01 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Jul 13 11:02:01 2016 -0400

    FindOpenMP: Cleanup all variables unconditionally

diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake
index c8f716e..768db12 100644
--- a/Modules/FindOpenMP.cmake
+++ b/Modules/FindOpenMP.cmake
@@ -186,7 +186,6 @@ if(CMAKE_CXX_COMPILER_LOADED)
 
   list(APPEND _OPENMP_REQUIRED_VARS OpenMP_CXX_FLAGS)
   unset(OpenMP_CXX_FLAG_CANDIDATES)
-  unset(OpenMP_CXX_TEST_SOURCE)
 endif()
 
 # check Fortran compiler
@@ -220,7 +219,6 @@ if(CMAKE_Fortran_COMPILER_LOADED)
 
   list(APPEND _OPENMP_REQUIRED_VARS OpenMP_Fortran_FLAGS)
   unset(OpenMP_Fortran_FLAG_CANDIDATES)
-  unset(OpenMP_Fortran_TEST_SOURCE)
 endif()
 
 set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})
@@ -237,3 +235,7 @@ if(_OPENMP_REQUIRED_VARS)
 else()
   message(SEND_ERROR "FindOpenMP requires C or CXX language to be enabled")
 endif()
+
+unset(OpenMP_C_TEST_SOURCE)
+unset(OpenMP_CXX_TEST_SOURCE)
+unset(OpenMP_Fortran_TEST_SOURCE)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ec963f04cb713701dda9f12a433930845e5c2609
commit ec963f04cb713701dda9f12a433930845e5c2609
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Jul 13 10:53:37 2016 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Jul 13 10:56:46 2016 -0400

    FindOpenMP: Improve documentation formatting
    
    Also drop link to OpenMP compilers because our supported list may
    not include all compilers.

diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake
index ee4bdd6..c8f716e 100644
--- a/Modules/FindOpenMP.cmake
+++ b/Modules/FindOpenMP.cmake
@@ -12,17 +12,14 @@
 #
 # The following variables are set:
 #
-# ::
-#
-#    OpenMP_C_FLAGS - flags to add to the C compiler for OpenMP support
-#    OpenMP_CXX_FLAGS - flags to add to the CXX compiler for OpenMP support
-#    OpenMP_Fortran_FLAGS - flags to add to the Fortran compiler for OpenMP support
-#    OPENMP_FOUND - true if openmp is detected
-#
-#
-#
-# Supported compilers can be found at
-# http://openmp.org/wp/openmp-compilers/
+# ``OpenMP_C_FLAGS``
+#   Flags to add to the C compiler for OpenMP support.
+# ``OpenMP_CXX_FLAGS``
+#   Flags to add to the CXX compiler for OpenMP support.
+# ``OpenMP_Fortran_FLAGS``
+#   Flags to add to the Fortran compiler for OpenMP support.
+# ``OPENMP_FOUND``
+#   True if openmp is detected.
 
 #=============================================================================
 # Copyright 2009 Kitware, Inc.

-----------------------------------------------------------------------

Summary of changes:
 Help/release/dev/FindOpenMP-updates.rst |    5 ++
 Modules/FindOpenMP.cmake                |  121 ++++++++++++++++++++++++++++---
 2 files changed, 116 insertions(+), 10 deletions(-)
 create mode 100644 Help/release/dev/FindOpenMP-updates.rst


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list