diff options
-rw-r--r-- | Modules/FindMPI.cmake | 2 | ||||
-rw-r--r-- | Modules/FindMatlab.cmake | 2 | ||||
-rw-r--r-- | Modules/FindOpenGL.cmake | 70 | ||||
-rw-r--r-- | Modules/FindOpenMP.cmake | 4 | ||||
-rw-r--r-- | Modules/FindRuby.cmake | 24 | ||||
-rw-r--r-- | Modules/Platform/Windows-MSVC.cmake | 6 | ||||
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Tests/FindPatch/Test/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/foreach/BadRangeInFunction-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/foreach/BadRangeInFunction-stderr.txt | 5 | ||||
-rw-r--r-- | Tests/RunCMake/foreach/BadRangeInFunction.cmake | 5 | ||||
-rw-r--r-- | Tests/RunCMake/foreach/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/RunCMake/foreach/RunCMakeTest.cmake | 3 |
14 files changed, 110 insertions, 22 deletions
diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 7f4c44c..3320a07 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -346,7 +346,7 @@ function (_MPI_check_compiler LANG QUERY_FLAG OUTPUT_VARIABLE RESULT_VARIABLE) # library that has invalid or missing version information there would be warning # messages emitted by ld.so in the compiler output. In either case, we'll treat # the output as invalid. - if("${WRAPPER_OUTPUT}" MATCHES "undefined reference|unrecognized|need to set|no version information available") + if("${WRAPPER_OUTPUT}" MATCHES "undefined reference|unrecognized|need to set|no version information available|command not found") set(WRAPPER_RETURN 255) endif() # Ensure that no error output might be passed upwards. diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index c79642d..06f7d96 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -356,7 +356,7 @@ function(matlab_extract_all_installed_versions_from_registry win64 matlab_versio endif() - if(${win64} AND ${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "64") + if(${win64} AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "64") set(APPEND_REG "/reg:64") else() set(APPEND_REG "/reg:32") diff --git a/Modules/FindOpenGL.cmake b/Modules/FindOpenGL.cmake index 11843ef..9063492 100644 --- a/Modules/FindOpenGL.cmake +++ b/Modules/FindOpenGL.cmake @@ -84,12 +84,26 @@ # ``OpenGL::GLX`` or ``OpenGL::EGL``. # # Projects may use the ``OpenGL::GL`` target (or ``OPENGL_LIBRARIES`` variable) -# to use legacy GL. By default, these will use the legacy libGL library file. -# If ``OPENGL_gl_LIBRARY`` is empty or not found and GLVND is available, the -# ``OpenGL::GL`` target will use GLVND ``OpenGL::OpenGL`` and ``OpenGL::GLX`` -# (and the ``OPENGL_LIBRARIES`` variable will use the corresponding libraries). -# Thus, for non-EGL-based Linux targets, the ``OpenGL::GL`` target is most -# portable. +# to use legacy GL interfaces. These will use the legacy GL library located +# by ``OPENGL_gl_LIBRARY``, if available. If ``OPENGL_gl_LIBRARY`` is empty or +# not found and GLVND is available, the ``OpenGL::GL`` target will use GLVND +# ``OpenGL::OpenGL`` and ``OpenGL::GLX`` (and the ``OPENGL_LIBRARIES`` +# variable will use the corresponding libraries). Thus, for non-EGL-based +# Linux targets, the ``OpenGL::GL`` target is most portable. +# +# A ``OpenGL_GL_PREFERENCE`` variable may be set to specify the preferred way +# to provide legacy GL interfaces in case multiple choices are available. +# The value may be one of: +# +# ``GLVND`` +# If the GLVND OpenGL and GLX libraries are available, prefer them. +# This forces ``OPENGL_gl_LIBRARY`` to be empty. +# This is the default if components were requested (since components +# correspond to GLVND libraries). +# +# ``LEGACY`` +# Prefer to use the legacy libGL library, if available. +# This is the default if no components were requested. # # For EGL targets the client must rely on GLVND support on the user's system. # Linking should use the ``OpenGL::OpenGL OpenGL::EGL`` targets. Using GLES* @@ -179,13 +193,6 @@ else() /opt/graphics/OpenGL/include /usr/X11R6/include ) - find_library(OPENGL_gl_LIBRARY - NAMES GL MesaGL - PATHS /opt/graphics/OpenGL/lib - /usr/openwin/lib - /usr/shlib /usr/X11R6/lib - ${_OPENGL_LIB_PATH} - ) # Search for the GLVND libraries. We do this regardless of COMPONENTS; we'll # take into account the COMPONENTS logic later. find_library(OPENGL_opengl_LIBRARY @@ -213,6 +220,43 @@ else() /usr/shlib /usr/X11R6/lib ) + if(NOT DEFINED OpenGL_GL_PREFERENCE) + set(OpenGL_GL_PREFERENCE "") + endif() + if(NOT OpenGL_GL_PREFERENCE STREQUAL "") + # A preference has been explicitly specified. + if(NOT OpenGL_GL_PREFERENCE MATCHES "^(GLVND|LEGACY)$") + message(FATAL_ERROR + "OpenGL_GL_PREFERENCE value '${OpenGL_GL_PREFERENCE}' not recognized. " + "Allowed values are 'GLVND' and 'LEGACY'." + ) + endif() + elseif(OpenGL_FIND_COMPONENTS) + # No preference was explicitly specified, but the caller did request + # at least one GLVND component. Prefer GLVND for legacy GL. + set(OpenGL_GL_PREFERENCE "GLVND") + else() + # No preference was explicitly specified and no GLVND components were + # requested. Prefer libGL for legacy GL. + set(OpenGL_GL_PREFERENCE "LEGACY") + endif() + + if("x${OpenGL_GL_PREFERENCE}x" STREQUAL "xGLVNDx" AND OPENGL_opengl_LIBRARY AND OPENGL_glx_LIBRARY) + # We can provide legacy GL using GLVND libraries. + # Do not use any legacy GL library. + set(OPENGL_gl_LIBRARY "") + else() + # We cannot provide legacy GL using GLVND libraries. + # Search for the legacy GL library. + find_library(OPENGL_gl_LIBRARY + NAMES GL MesaGL + PATHS /opt/graphics/OpenGL/lib + /usr/openwin/lib + /usr/shlib /usr/X11R6/lib + ${_OPENGL_LIB_PATH} + ) + endif() + # FPHSA cannot handle "this OR that is required", so we conditionally set what # it must look for. First clear any previous config we might have done: set(_OpenGL_REQUIRED_VARS) diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake index 489476b..893ddc6 100644 --- a/Modules/FindOpenMP.cmake +++ b/Modules/FindOpenMP.cmake @@ -75,6 +75,7 @@ # the OpenMP specification implemented by the ``<lang>`` compiler. cmake_policy(PUSH) +cmake_policy(SET CMP0012 NEW) # if() recognizes numbers and booleans cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced cmake_policy(SET CMP0057 NEW) # if IN_LIST @@ -230,6 +231,7 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR) DOC "Path to the ${_OPENMP_IMPLICIT_LIB_PLAIN} library for OpenMP" HINTS ${OpenMP_${LANG}_IMPLICIT_LINK_DIRS} CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH ) endif() mark_as_advanced(OpenMP_${_OPENMP_IMPLICIT_LIB_PLAIN}_LIBRARY) @@ -244,6 +246,8 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR) find_library(OpenMP_libiomp5md_LIBRARY NAMES "libiomp5md" HINTS ${CMAKE_${LANG}_IMPLICIT_LINK_DIRECTORIES} + CMAKE_FIND_ROOT_PATH_BOTH + NO_DEFAULT_PATH ) mark_as_advanced(OpenMP_libiomp5md_LIBRARY) else() diff --git a/Modules/FindRuby.cmake b/Modules/FindRuby.cmake index a9f8d35..bd9f835 100644 --- a/Modules/FindRuby.cmake +++ b/Modules/FindRuby.cmake @@ -59,6 +59,9 @@ else() endif() if(NOT Ruby_FIND_VERSION_EXACT) + list(APPEND _RUBY_POSSIBLE_EXECUTABLE_NAMES ruby2.4 ruby24) + list(APPEND _RUBY_POSSIBLE_EXECUTABLE_NAMES ruby2.3 ruby23) + list(APPEND _RUBY_POSSIBLE_EXECUTABLE_NAMES ruby2.2 ruby22) list(APPEND _RUBY_POSSIBLE_EXECUTABLE_NAMES ruby2.1 ruby21) list(APPEND _RUBY_POSSIBLE_EXECUTABLE_NAMES ruby2.0 ruby20) list(APPEND _RUBY_POSSIBLE_EXECUTABLE_NAMES ruby1.9 ruby19) @@ -156,20 +159,35 @@ if(RUBY_EXECUTABLE AND NOT RUBY_VERSION_MAJOR) set(RUBY_VERSION_MINOR 8) set(RUBY_VERSION_PATCH 0) # check whether we found 1.9.x - if(${RUBY_EXECUTABLE} MATCHES "ruby1.?9") + if(${RUBY_EXECUTABLE} MATCHES "ruby1\\.?9") set(RUBY_VERSION_MAJOR 1) set(RUBY_VERSION_MINOR 9) endif() # check whether we found 2.0.x - if(${RUBY_EXECUTABLE} MATCHES "ruby2.?0") + if(${RUBY_EXECUTABLE} MATCHES "ruby2\\.?0") set(RUBY_VERSION_MAJOR 2) set(RUBY_VERSION_MINOR 0) endif() # check whether we found 2.1.x - if(${RUBY_EXECUTABLE} MATCHES "ruby2.?1") + if(${RUBY_EXECUTABLE} MATCHES "ruby2\\.?1") set(RUBY_VERSION_MAJOR 2) set(RUBY_VERSION_MINOR 1) endif() + # check whether we found 2.2.x + if(${RUBY_EXECUTABLE} MATCHES "ruby2\\.?2") + set(RUBY_VERSION_MAJOR 2) + set(RUBY_VERSION_MINOR 2) + endif() + # check whether we found 2.3.x + if(${RUBY_EXECUTABLE} MATCHES "ruby2\\.?3") + set(RUBY_VERSION_MAJOR 2) + set(RUBY_VERSION_MINOR 3) + endif() + # check whether we found 2.4.x + if(${RUBY_EXECUTABLE} MATCHES "ruby2\\.?4") + set(RUBY_VERSION_MAJOR 2) + set(RUBY_VERSION_MINOR 4) + endif() endif() if(RUBY_VERSION_MAJOR) diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index 4719563..0737c12 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -48,7 +48,11 @@ else() endif() if(NOT MSVC_VERSION) - if(CMAKE_C_SIMULATE_VERSION) + if("x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC") + set(_compiler_version ${CMAKE_C_COMPILER_VERSION}) + elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") + set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION}) + elseif(CMAKE_C_SIMULATE_VERSION) set(_compiler_version ${CMAKE_C_SIMULATE_VERSION}) elseif(CMAKE_CXX_SIMULATE_VERSION) set(_compiler_version ${CMAKE_CXX_SIMULATE_VERSION}) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 8409287..1f9db43 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20171115) +set(CMake_VERSION_PATCH 20171117) #set(CMake_VERSION_RC 1) diff --git a/Tests/FindPatch/Test/CMakeLists.txt b/Tests/FindPatch/Test/CMakeLists.txt index f4cd621..66c672c 100644 --- a/Tests/FindPatch/Test/CMakeLists.txt +++ b/Tests/FindPatch/Test/CMakeLists.txt @@ -70,8 +70,8 @@ index 68059b3..c6f30c2 100644 ) add_custom_target(TestPatch ALL - COMMAND ${Patch_EXECUTABLE} -p1 -i quote-add-author.patch - COMMAND Patch::patch -p1 -i quote-add-date.patch + COMMAND ${Patch_EXECUTABLE} -p1 -i quote-add-author.patch --binary + COMMAND Patch::patch -p1 -i quote-add-date.patch --binary COMMAND ${CMAKE_COMMAND} -E compare_files QUOTE.txt QUOTE.txt.baseline WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 5d584af..6b7b723 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -218,6 +218,7 @@ add_RunCMake_test(find_library) add_RunCMake_test(find_package) add_RunCMake_test(find_path) add_RunCMake_test(find_program -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) +add_RunCMake_test(foreach) add_RunCMake_test(get_filename_component) add_RunCMake_test(get_property) add_RunCMake_test(if) diff --git a/Tests/RunCMake/foreach/BadRangeInFunction-result.txt b/Tests/RunCMake/foreach/BadRangeInFunction-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/foreach/BadRangeInFunction-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/foreach/BadRangeInFunction-stderr.txt b/Tests/RunCMake/foreach/BadRangeInFunction-stderr.txt new file mode 100644 index 0000000..e16a0f1 --- /dev/null +++ b/Tests/RunCMake/foreach/BadRangeInFunction-stderr.txt @@ -0,0 +1,5 @@ +^CMake Error at BadRangeInFunction.cmake:2 \(foreach\): + foreach called with incorrect range specification: start 2, stop 1, step 1 +Call Stack \(most recent call first\): + BadRangeInFunction.cmake:5 \(func\) + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/foreach/BadRangeInFunction.cmake b/Tests/RunCMake/foreach/BadRangeInFunction.cmake new file mode 100644 index 0000000..f51cbbf --- /dev/null +++ b/Tests/RunCMake/foreach/BadRangeInFunction.cmake @@ -0,0 +1,5 @@ +function(func) + foreach(bad_range RANGE 2 1 1) + endforeach() +endfunction() +func() diff --git a/Tests/RunCMake/foreach/CMakeLists.txt b/Tests/RunCMake/foreach/CMakeLists.txt new file mode 100644 index 0000000..bf2ef15 --- /dev/null +++ b/Tests/RunCMake/foreach/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.10) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/foreach/RunCMakeTest.cmake b/Tests/RunCMake/foreach/RunCMakeTest.cmake new file mode 100644 index 0000000..4b74cfe --- /dev/null +++ b/Tests/RunCMake/foreach/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(BadRangeInFunction) |