[Cmake-commits] CMake branch, master, updated. v3.10.1-639-gf67f76c

Kitware Robot kwrobot at kitware.com
Fri Dec 15 10:45:07 EST 2017


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, master has been updated
       via  f67f76c2b3a4c50d4116ce806df0c7f861e227dd (commit)
       via  76fa3b383e037f69089f0b193708456d3f47c8ed (commit)
       via  6fb568cef6c8eebe1730c51bee7f4f92ce805c39 (commit)
       via  44111e5cc04ee689627acf5468d08e05c12b33aa (commit)
       via  f1299f5d82479b9acd103697fe08ab12edfd6a5d (commit)
       via  d9154e521a815d9cceabc9a4a04c795628df0fd7 (commit)
       via  ccc9a6c706ad34cdb92457e701b5fcf3d7760af2 (commit)
       via  907bc3543727767b72e3d9085dbb3c02b1a717ae (commit)
       via  7ab9a62572058d6cd8e5bf130d7aa27d5a2e50f2 (commit)
       via  5f2e2c387deb7f798cbc54d0980503e05873eaaa (commit)
       via  8164298935cdd0970a4e86327184866496694b65 (commit)
      from  4549eed94706d20ebbb1e8187f5b028c7bd4aa2e (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=f67f76c2b3a4c50d4116ce806df0c7f861e227dd
commit f67f76c2b3a4c50d4116ce806df0c7f861e227dd
Merge: 76fa3b3 f1299f5
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 15 15:42:44 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 15 10:43:07 2017 -0500

    Merge topic 'FindFLTK-per-config'
    
    f1299f5d FindFLTK: Find debug and release variants separately
    d9154e52 FindFLTK: revise .rst markup
    ccc9a6c7 FindFLTK: fix indentation
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1563


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=76fa3b383e037f69089f0b193708456d3f47c8ed
commit 76fa3b383e037f69089f0b193708456d3f47c8ed
Merge: 6fb568c 907bc35
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 15 15:42:16 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 15 10:42:43 2017 -0500

    Merge topic 'vs-vcxproj-lowercase-utf-8'
    
    907bc354 VS: Emit "utf-8" encoding as lowercase in .vcxproj headers
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1594


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6fb568cef6c8eebe1730c51bee7f4f92ce805c39
commit 6fb568cef6c8eebe1730c51bee7f4f92ce805c39
Merge: 44111e5 7ab9a62
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 15 15:42:01 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 15 10:42:12 2017 -0500

    Merge topic 'makefile-simplify-fortran'
    
    7ab9a625 Makefiles: Drop 'requires' step and its supporting infrastructure
    5f2e2c38 Makefiles: Avoid nested make calls for Fortran module dependencies
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1523


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44111e5cc04ee689627acf5468d08e05c12b33aa
commit 44111e5cc04ee689627acf5468d08e05c12b33aa
Merge: 4549eed 8164298
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 15 15:35:13 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 15 10:35:17 2017 -0500

    Merge topic 'fix_failing_ResolveDeviceSymbols_test'
    
    81642989 Cuda: ResolveDeviceSymbols now properly execute everywhere.
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1593


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f1299f5d82479b9acd103697fe08ab12edfd6a5d
commit f1299f5d82479b9acd103697fe08ab12edfd6a5d
Author:     Stefano Sinigardi <stesinigardi at hotmail.com>
AuthorDate: Thu Dec 14 13:40:58 2017 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 14 08:36:23 2017 -0500

    FindFLTK: Find debug and release variants separately

diff --git a/Modules/FindFLTK.cmake b/Modules/FindFLTK.cmake
index 2a88bbb..82c63ef 100644
--- a/Modules/FindFLTK.cmake
+++ b/Modules/FindFLTK.cmake
@@ -54,17 +54,29 @@
 #
 # The following cache variables are also available to set or use:
 #
-# ``FLTK_BASE_LIBRARY``
-#   Path to the FLTK base library
+# ``FLTK_BASE_LIBRARY_RELEASE``
+#   The FLTK base library (optimized)
 #
-# ``FLTK_GL_LIBRARY``
-#   Path to the FLTK GL library
+# ``FLTK_BASE_LIBRARY_DEBUG``
+#   The FLTK base library (debug)
 #
-# ``FLTK_FORMS_LIBRARY``
-#   Path to the FLTK Forms library
+# ``FLTK_GL_LIBRARY_RELEASE``
+#   The FLTK GL library (optimized)
 #
-# ``FLTK_IMAGES_LIBRARY``
-#   Path to the FLTK Images protobuf library
+# ``FLTK_GL_LIBRARY_DEBUG``
+#   The FLTK GL library (debug)
+#
+# ``FLTK_FORMS_LIBRARY_RELEASE``
+#   The FLTK Forms library (optimized)
+#
+# ``FLTK_FORMS_LIBRARY_DEBUG``
+#   The FLTK Forms library (debug)
+#
+# ``FLTK_IMAGES_LIBRARY_RELEASE``
+#   The FLTK Images protobuf library (optimized)
+#
+# ``FLTK_IMAGES_LIBRARY_DEBUG``
+#   The FLTK Images library (debug)
 
 if(NOT FLTK_SKIP_OPENGL)
   find_package(OpenGL)
@@ -244,14 +256,29 @@ else()
 
   list(APPEND FLTK_LIBRARY_SEARCH_PATH ${FLTK_INCLUDE_DIR}/lib ${_FLTK_POSSIBLE_LIBRARY_DIR})
 
-  find_library(FLTK_BASE_LIBRARY NAMES fltk fltkd
-    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-  find_library(FLTK_GL_LIBRARY NAMES fltkgl fltkgld fltk_gl
-    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-  find_library(FLTK_FORMS_LIBRARY NAMES fltkforms fltkformsd fltk_forms
-    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-  find_library(FLTK_IMAGES_LIBRARY NAMES fltkimages fltkimagesd fltk_images
-    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+  include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+
+  # Allow libraries to be set manually
+  if(NOT FLTK_BASE_LIBRARY)
+      find_library(FLTK_BASE_LIBRARY_RELEASE NAMES fltk PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_BASE_LIBRARY_DEBUG NAMES fltkd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_BASE)
+  endif()
+  if(NOT FLTK_GL_LIBRARY)
+      find_library(FLTK_GL_LIBRARY_RELEASE NAMES fltkgl fltk_gl PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_GL_LIBRARY_DEBUG NAMES fltkgld fltk_gld PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_GL)
+  endif()
+  if(NOT FLTK_FORMS_LIBRARY)
+      find_library(FLTK_FORMS_LIBRARY_RELEASE NAMES fltkforms fltk_forms PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_FORMS_LIBRARY_DEBUG NAMES fltkformsd fltk_formsd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_FORMS)
+  endif()
+  if(NOT FLTK_IMAGES_LIBRARY)
+      find_library(FLTK_IMAGES_LIBRARY_RELEASE NAMES fltkimages fltk_images PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      find_library(FLTK_IMAGES_LIBRARY_DEBUG NAMES fltkimagesd fltk_imagesd PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+      select_library_configurations(FLTK_IMAGES)
+  endif()
 
   # Find the extra libraries needed for the fltk_images library.
   if(UNIX)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d9154e521a815d9cceabc9a4a04c795628df0fd7
commit d9154e521a815d9cceabc9a4a04c795628df0fd7
Author:     Stefano Sinigardi <stesinigardi at hotmail.com>
AuthorDate: Thu Dec 14 13:39:58 2017 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 14 08:36:23 2017 -0500

    FindFLTK: revise .rst markup

diff --git a/Modules/FindFLTK.cmake b/Modules/FindFLTK.cmake
index a316a4f..2a88bbb 100644
--- a/Modules/FindFLTK.cmake
+++ b/Modules/FindFLTK.cmake
@@ -5,57 +5,66 @@
 # FindFLTK
 # --------
 #
-# Find the native FLTK includes and library
+# Find the FLTK library
 #
+# Input Variables
+# ^^^^^^^^^^^^^^^
 #
+# By default this module will search for all of the FLTK components and
+# add them to the FLTK_LIBRARIES variable.  You can limit the components
+# which get placed in FLTK_LIBRARIES by defining one or more of the
+# following three options:
 #
-# By default FindFLTK.cmake will search for all of the FLTK components
-# and add them to the FLTK_LIBRARIES variable.
+# ``FLTK_SKIP_OPENGL``
+#   Set to true to disable searching for the FLTK GL library
 #
-# ::
+# ``FLTK_SKIP_FORMS``
+#   Set to true to disable searching for the FLTK Forms library
 #
-#    You can limit the components which get placed in FLTK_LIBRARIES by
-#    defining one or more of the following three options:
+# ``FLTK_SKIP_IMAGES``
+#   Set to true to disable searching for the FLTK Images library
 #
+# FLTK is composed also by a binary tool. You can set the following option:
 #
+# ``FLTK_SKIP_FLUID``
+#   Set to true to not look for the FLUID binary
 #
-# ::
+# Result Variables
+# ^^^^^^^^^^^^^^^^
 #
-#      FLTK_SKIP_OPENGL, set to true to disable searching for opengl and
-#                        the FLTK GL library
-#      FLTK_SKIP_FORMS, set to true to disable searching for fltk_forms
-#      FLTK_SKIP_IMAGES, set to true to disable searching for fltk_images
-#
-#
-#
-# ::
+# The following variables will be defined:
 #
-#      FLTK_SKIP_FLUID, set to true if the fluid binary need not be present
-#                       at build time
+# ``FLTK_FOUND``
+#   True if all components not skipped were found
 #
+# ``FLTK_INCLUDE_DIR``
+#   Path to the include directory for FLTK header files
 #
+# ``FLTK_LIBRARIES``
+#   List of the FLTK libraries found
 #
-# The following variables will be defined:
+# ``FLTK_FLUID_EXECUTABLE``
+#   Path to the FLUID binary tool
 #
-# ::
+# ``FLTK_WRAP_UI``
+#   True if FLUID is found, used to enable the FLTK_WRAP_UI command
 #
-#      FLTK_FOUND, True if all components not skipped were found
-#      FLTK_INCLUDE_DIR, where to find include files
-#      FLTK_LIBRARIES, list of fltk libraries you should link against
-#      FLTK_FLUID_EXECUTABLE, where to find the Fluid tool
-#      FLTK_WRAP_UI, This enables the FLTK_WRAP_UI command
+# Cache Variables
+# ^^^^^^^^^^^^^^^
 #
+# The following cache variables are also available to set or use:
 #
+# ``FLTK_BASE_LIBRARY``
+#   Path to the FLTK base library
 #
-# The following cache variables are assigned but should not be used.
-# See the FLTK_LIBRARIES variable instead.
+# ``FLTK_GL_LIBRARY``
+#   Path to the FLTK GL library
 #
-# ::
+# ``FLTK_FORMS_LIBRARY``
+#   Path to the FLTK Forms library
 #
-#      FLTK_BASE_LIBRARY   = the full path to fltk.lib
-#      FLTK_GL_LIBRARY     = the full path to fltk_gl.lib
-#      FLTK_FORMS_LIBRARY  = the full path to fltk_forms.lib
-#      FLTK_IMAGES_LIBRARY = the full path to fltk_images.lib
+# ``FLTK_IMAGES_LIBRARY``
+#   Path to the FLTK Images protobuf library
 
 if(NOT FLTK_SKIP_OPENGL)
   find_package(OpenGL)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ccc9a6c706ad34cdb92457e701b5fcf3d7760af2
commit ccc9a6c706ad34cdb92457e701b5fcf3d7760af2
Author:     Stefano Sinigardi <stesinigardi at hotmail.com>
AuthorDate: Thu Dec 14 13:38:05 2017 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 14 08:36:19 2017 -0500

    FindFLTK: fix indentation

diff --git a/Modules/FindFLTK.cmake b/Modules/FindFLTK.cmake
index 1aa52cc..a316a4f 100644
--- a/Modules/FindFLTK.cmake
+++ b/Modules/FindFLTK.cmake
@@ -125,157 +125,157 @@ if(NOT FLTK_DIR)
     )
 endif()
 
-  # Check if FLTK was built using CMake
-  if(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
-    set(FLTK_BUILT_WITH_CMAKE 1)
-  endif()
+# Check if FLTK was built using CMake
+if(EXISTS ${FLTK_DIR}/FLTKConfig.cmake)
+  set(FLTK_BUILT_WITH_CMAKE 1)
+endif()
 
-  if(FLTK_BUILT_WITH_CMAKE)
-    set(FLTK_FOUND 1)
-    include(${FLTK_DIR}/FLTKConfig.cmake)
-
-    # Fluid
-    if(FLUID_COMMAND)
-      set(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
-    else()
-      find_program(FLTK_FLUID_EXECUTABLE fluid PATHS
-        ${FLTK_EXECUTABLE_DIRS}
-        ${FLTK_EXECUTABLE_DIRS}/RelWithDebInfo
-        ${FLTK_EXECUTABLE_DIRS}/Debug
-        ${FLTK_EXECUTABLE_DIRS}/Release
-        NO_SYSTEM_PATH)
-    endif()
-    # mark_as_advanced(FLTK_FLUID_EXECUTABLE)
-
-    set(FLTK_INCLUDE_DIR ${FLTK_DIR})
-    link_directories(${FLTK_LIBRARY_DIRS})
-
-    set(FLTK_BASE_LIBRARY fltk)
-    set(FLTK_GL_LIBRARY fltk_gl)
-    set(FLTK_FORMS_LIBRARY fltk_forms)
-    set(FLTK_IMAGES_LIBRARY fltk_images)
-
-    # Add the extra libraries
-    load_cache(${FLTK_DIR}
-      READ_WITH_PREFIX
-      FL FLTK_USE_SYSTEM_JPEG
-      FL FLTK_USE_SYSTEM_PNG
-      FL FLTK_USE_SYSTEM_ZLIB
-      )
-
-    set(FLTK_IMAGES_LIBS "")
-    if(FLFLTK_USE_SYSTEM_JPEG)
-      set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
-    endif()
-    if(FLFLTK_USE_SYSTEM_PNG)
-      set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
-    endif()
-    if(FLFLTK_USE_SYSTEM_ZLIB)
-      set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
-    endif()
-    set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
-      "Extra libraries for fltk_images library.")
+if(FLTK_BUILT_WITH_CMAKE)
+  set(FLTK_FOUND 1)
+  include(${FLTK_DIR}/FLTKConfig.cmake)
 
+  # Fluid
+  if(FLUID_COMMAND)
+    set(FLTK_FLUID_EXECUTABLE ${FLUID_COMMAND} CACHE FILEPATH "Fluid executable")
   else()
+    find_program(FLTK_FLUID_EXECUTABLE fluid PATHS
+      ${FLTK_EXECUTABLE_DIRS}
+      ${FLTK_EXECUTABLE_DIRS}/RelWithDebInfo
+      ${FLTK_EXECUTABLE_DIRS}/Debug
+      ${FLTK_EXECUTABLE_DIRS}/Release
+      NO_SYSTEM_PATH)
+  endif()
+  # mark_as_advanced(FLTK_FLUID_EXECUTABLE)
+
+  set(FLTK_INCLUDE_DIR ${FLTK_DIR})
+  link_directories(${FLTK_LIBRARY_DIRS})
+
+  set(FLTK_BASE_LIBRARY fltk)
+  set(FLTK_GL_LIBRARY fltk_gl)
+  set(FLTK_FORMS_LIBRARY fltk_forms)
+  set(FLTK_IMAGES_LIBRARY fltk_images)
+
+  # Add the extra libraries
+  load_cache(${FLTK_DIR}
+    READ_WITH_PREFIX
+    FL FLTK_USE_SYSTEM_JPEG
+    FL FLTK_USE_SYSTEM_PNG
+    FL FLTK_USE_SYSTEM_ZLIB
+    )
 
-    # if FLTK was not built using CMake
-    # Find fluid executable.
-    find_program(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
-
-    # Use location of fluid to help find everything else.
-    set(FLTK_INCLUDE_SEARCH_PATH "")
-    set(FLTK_LIBRARY_SEARCH_PATH "")
-    if(FLTK_FLUID_EXECUTABLE)
-      get_filename_component(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
-      set(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
-        ${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
-      set(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
-        ${FLTK_BIN_DIR}/../lib)
-      set(FLTK_WRAP_UI 1)
-    endif()
+  set(FLTK_IMAGES_LIBS "")
+  if(FLFLTK_USE_SYSTEM_JPEG)
+    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_jpeg)
+  endif()
+  if(FLFLTK_USE_SYSTEM_PNG)
+    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_png)
+  endif()
+  if(FLFLTK_USE_SYSTEM_ZLIB)
+    set(FLTK_IMAGES_LIBS ${FLTK_IMAGES_LIBS} fltk_zlib)
+  endif()
+  set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
+    "Extra libraries for fltk_images library.")
+
+else()
+
+  # if FLTK was not built using CMake
+  # Find fluid executable.
+  find_program(FLTK_FLUID_EXECUTABLE fluid ${FLTK_INCLUDE_DIR}/fluid)
+
+  # Use location of fluid to help find everything else.
+  set(FLTK_INCLUDE_SEARCH_PATH "")
+  set(FLTK_LIBRARY_SEARCH_PATH "")
+  if(FLTK_FLUID_EXECUTABLE)
+    get_filename_component(FLTK_BIN_DIR "${FLTK_FLUID_EXECUTABLE}" PATH)
+    set(FLTK_INCLUDE_SEARCH_PATH ${FLTK_INCLUDE_SEARCH_PATH}
+      ${FLTK_BIN_DIR}/../include ${FLTK_BIN_DIR}/..)
+    set(FLTK_LIBRARY_SEARCH_PATH ${FLTK_LIBRARY_SEARCH_PATH}
+      ${FLTK_BIN_DIR}/../lib)
+    set(FLTK_WRAP_UI 1)
+  endif()
 
-    #
-    # Try to find FLTK include dir using fltk-config
-    #
-    if(UNIX)
-      # Use fltk-config to generate a list of possible include directories
-      find_program(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
-      if(FLTK_CONFIG_SCRIPT)
-        if(NOT FLTK_INCLUDE_DIR)
-          exec_program(${FLTK_CONFIG_SCRIPT} ARGS --cxxflags OUTPUT_VARIABLE FLTK_CXXFLAGS)
-          if(FLTK_CXXFLAGS)
-            string(REGEX MATCHALL "-I[^ ]*" _fltk_temp_dirs ${FLTK_CXXFLAGS})
-            string(REPLACE "-I" "" _fltk_temp_dirs "${_fltk_temp_dirs}")
-            foreach(_dir ${_fltk_temp_dirs})
-              string(STRIP ${_dir} _output)
-              list(APPEND _FLTK_POSSIBLE_INCLUDE_DIRS ${_output})
-            endforeach()
-          endif()
+  #
+  # Try to find FLTK include dir using fltk-config
+  #
+  if(UNIX)
+    # Use fltk-config to generate a list of possible include directories
+    find_program(FLTK_CONFIG_SCRIPT fltk-config PATHS ${FLTK_BIN_DIR})
+    if(FLTK_CONFIG_SCRIPT)
+      if(NOT FLTK_INCLUDE_DIR)
+        exec_program(${FLTK_CONFIG_SCRIPT} ARGS --cxxflags OUTPUT_VARIABLE FLTK_CXXFLAGS)
+        if(FLTK_CXXFLAGS)
+          string(REGEX MATCHALL "-I[^ ]*" _fltk_temp_dirs ${FLTK_CXXFLAGS})
+          string(REPLACE "-I" "" _fltk_temp_dirs "${_fltk_temp_dirs}")
+          foreach(_dir ${_fltk_temp_dirs})
+            string(STRIP ${_dir} _output)
+            list(APPEND _FLTK_POSSIBLE_INCLUDE_DIRS ${_output})
+          endforeach()
         endif()
       endif()
     endif()
+  endif()
 
-    list(APPEND FLTK_INCLUDE_SEARCH_PATH ${_FLTK_POSSIBLE_INCLUDE_DIRS})
+  list(APPEND FLTK_INCLUDE_SEARCH_PATH ${_FLTK_POSSIBLE_INCLUDE_DIRS})
 
-    find_path(FLTK_INCLUDE_DIR
-        NAMES FL/Fl.h FL/Fl.H    # fltk 1.1.9 has Fl.H (#8376)
-        PATH_SUFFIXES fltk fltk/include
-        PATHS ${FLTK_INCLUDE_SEARCH_PATH})
+  find_path(FLTK_INCLUDE_DIR
+      NAMES FL/Fl.h FL/Fl.H    # fltk 1.1.9 has Fl.H (#8376)
+      PATH_SUFFIXES fltk fltk/include
+      PATHS ${FLTK_INCLUDE_SEARCH_PATH})
 
-    #
-    # Try to find FLTK library
-    if(UNIX)
-      if(FLTK_CONFIG_SCRIPT)
-        exec_program(${FLTK_CONFIG_SCRIPT} ARGS --libs OUTPUT_VARIABLE _FLTK_POSSIBLE_LIBS)
-        if(_FLTK_POSSIBLE_LIBS)
-          get_filename_component(_FLTK_POSSIBLE_LIBRARY_DIR ${_FLTK_POSSIBLE_LIBS} PATH)
-        endif()
+  #
+  # Try to find FLTK library
+  if(UNIX)
+    if(FLTK_CONFIG_SCRIPT)
+      exec_program(${FLTK_CONFIG_SCRIPT} ARGS --libs OUTPUT_VARIABLE _FLTK_POSSIBLE_LIBS)
+      if(_FLTK_POSSIBLE_LIBS)
+        get_filename_component(_FLTK_POSSIBLE_LIBRARY_DIR ${_FLTK_POSSIBLE_LIBS} PATH)
       endif()
     endif()
+  endif()
 
-    list(APPEND FLTK_LIBRARY_SEARCH_PATH ${FLTK_INCLUDE_DIR}/lib ${_FLTK_POSSIBLE_LIBRARY_DIR})
-
-    find_library(FLTK_BASE_LIBRARY NAMES fltk fltkd
-      PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-    find_library(FLTK_GL_LIBRARY NAMES fltkgl fltkgld fltk_gl
-      PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-    find_library(FLTK_FORMS_LIBRARY NAMES fltkforms fltkformsd fltk_forms
-      PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-    find_library(FLTK_IMAGES_LIBRARY NAMES fltkimages fltkimagesd fltk_images
-      PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
-
-    # Find the extra libraries needed for the fltk_images library.
-    if(UNIX)
-      if(FLTK_CONFIG_SCRIPT)
-        exec_program(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
-          OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
-        set(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
-        if("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
-          string(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${CMAKE_MATCH_1}")
-          # The EXEC_PROGRAM will not be inherited into subdirectories from
-          # the file that originally included this module.  Save the answer.
-          set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
-            "Extra libraries for fltk_images library.")
-        endif()
+  list(APPEND FLTK_LIBRARY_SEARCH_PATH ${FLTK_INCLUDE_DIR}/lib ${_FLTK_POSSIBLE_LIBRARY_DIR})
+
+  find_library(FLTK_BASE_LIBRARY NAMES fltk fltkd
+    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+  find_library(FLTK_GL_LIBRARY NAMES fltkgl fltkgld fltk_gl
+    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+  find_library(FLTK_FORMS_LIBRARY NAMES fltkforms fltkformsd fltk_forms
+    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+  find_library(FLTK_IMAGES_LIBRARY NAMES fltkimages fltkimagesd fltk_images
+    PATHS ${FLTK_LIBRARY_SEARCH_PATH} PATH_SUFFIXES fltk fltk/lib)
+
+  # Find the extra libraries needed for the fltk_images library.
+  if(UNIX)
+    if(FLTK_CONFIG_SCRIPT)
+      exec_program(${FLTK_CONFIG_SCRIPT} ARGS --use-images --ldflags
+        OUTPUT_VARIABLE FLTK_IMAGES_LDFLAGS)
+      set(FLTK_LIBS_EXTRACT_REGEX ".*-lfltk_images (.*) -lfltk.*")
+      if("${FLTK_IMAGES_LDFLAGS}" MATCHES "${FLTK_LIBS_EXTRACT_REGEX}")
+        string(REGEX REPLACE " +" ";" FLTK_IMAGES_LIBS "${CMAKE_MATCH_1}")
+        # The EXEC_PROGRAM will not be inherited into subdirectories from
+        # the file that originally included this module.  Save the answer.
+        set(FLTK_IMAGES_LIBS "${FLTK_IMAGES_LIBS}" CACHE INTERNAL
+          "Extra libraries for fltk_images library.")
       endif()
     endif()
-
   endif()
 
-  # Append all of the required libraries together (by default, everything)
-  set(FLTK_LIBRARIES)
-  if(NOT FLTK_SKIP_IMAGES)
-    list(APPEND FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY})
-  endif()
-  if(NOT FLTK_SKIP_FORMS)
-    list(APPEND FLTK_LIBRARIES ${FLTK_FORMS_LIBRARY})
-  endif()
-  if(NOT FLTK_SKIP_OPENGL)
-    list(APPEND FLTK_LIBRARIES ${FLTK_GL_LIBRARY} ${OPENGL_gl_LIBRARY})
-    list(APPEND FLTK_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
-    list(REMOVE_DUPLICATES FLTK_INCLUDE_DIR)
-  endif()
-  list(APPEND FLTK_LIBRARIES ${FLTK_BASE_LIBRARY})
+endif()
+
+# Append all of the required libraries together (by default, everything)
+set(FLTK_LIBRARIES)
+if(NOT FLTK_SKIP_IMAGES)
+  list(APPEND FLTK_LIBRARIES ${FLTK_IMAGES_LIBRARY})
+endif()
+if(NOT FLTK_SKIP_FORMS)
+  list(APPEND FLTK_LIBRARIES ${FLTK_FORMS_LIBRARY})
+endif()
+if(NOT FLTK_SKIP_OPENGL)
+  list(APPEND FLTK_LIBRARIES ${FLTK_GL_LIBRARY} ${OPENGL_gl_LIBRARY})
+  list(APPEND FLTK_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
+  list(REMOVE_DUPLICATES FLTK_INCLUDE_DIR)
+endif()
+list(APPEND FLTK_LIBRARIES ${FLTK_BASE_LIBRARY})
 
 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
 if(FLTK_SKIP_FLUID)
@@ -297,4 +297,3 @@ if(FLTK_FOUND)
   set (FLTK_FLUID_EXE ${FLTK_FLUID_EXECUTABLE})
   set (FLTK_LIBRARY ${FLTK_LIBRARIES})
 endif()
-

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=907bc3543727767b72e3d9085dbb3c02b1a717ae
commit 907bc3543727767b72e3d9085dbb3c02b1a717ae
Author:     Vitaly Stakhovsky <vvs31415 at gitlab.org>
AuthorDate: Wed Dec 13 19:16:54 2017 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 14 08:27:48 2017 -0500

    VS: Emit "utf-8" encoding as lowercase in .vcxproj headers
    
    Match the XML preamble generated by VS 2010 and later.

diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx
index 8c9e461..4c4c62c 100644
--- a/Source/cmGlobalVisualStudio10Generator.cxx
+++ b/Source/cmGlobalVisualStudio10Generator.cxx
@@ -951,6 +951,11 @@ void cmGlobalVisualStudio10Generator::PathTooLong(cmGeneratorTarget* target,
   }
 }
 
+std::string cmGlobalVisualStudio10Generator::Encoding()
+{
+  return "utf-8";
+}
+
 bool cmGlobalVisualStudio10Generator::IsNsightTegra() const
 {
   return !this->NsightTegraVersion.empty();
diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h
index 5f80c73..fc21193 100644
--- a/Source/cmGlobalVisualStudio10Generator.h
+++ b/Source/cmGlobalVisualStudio10Generator.h
@@ -96,6 +96,7 @@ public:
   void PathTooLong(cmGeneratorTarget* target, cmSourceFile const* sf,
                    std::string const& sfRel);
 
+  std::string Encoding() override;
   virtual const char* GetToolsVersion() { return "4.0"; }
 
   bool FindMakeProgram(cmMakefile* mf) override;

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7ab9a62572058d6cd8e5bf130d7aa27d5a2e50f2
commit 7ab9a62572058d6cd8e5bf130d7aa27d5a2e50f2
Author:     Yurii Batrak <yuriib at met.no>
AuthorDate: Tue Dec 5 13:41:59 2017 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 14 08:22:07 2017 -0500

    Makefiles: Drop 'requires' step and its supporting infrastructure
    
    The 'requires' step was used to provide implicit dependencies between
    the generated Fortran module files and a Fortran target that needs these
    module files to ensure the correct compilation order.  After recent
    refactoring to resolve all dependencies explicitly through `.mod.stamp`
    make targets, the separate 'requires' step is not needed anymore.

diff --git a/Modules/CMakeFortranInformation.cmake b/Modules/CMakeFortranInformation.cmake
index b315d33..d422578 100644
--- a/Modules/CMakeFortranInformation.cmake
+++ b/Modules/CMakeFortranInformation.cmake
@@ -67,11 +67,6 @@ if(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran)
   set(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran "${_override}")
 endif()
 
-
-# Fortran needs cmake to do a requires step during its build process to
-# catch any modules
-set(CMAKE_NEEDS_REQUIRES_STEP_Fortran_FLAG 1)
-
 if(NOT CMAKE_Fortran_COMPILE_OPTIONS_PIC)
   set(CMAKE_Fortran_COMPILE_OPTIONS_PIC ${CMAKE_C_COMPILE_OPTIONS_PIC})
 endif()
diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx
index 8b4fafd..23f622b 100644
--- a/Source/cmDependsFortran.cxx
+++ b/Source/cmDependsFortran.cxx
@@ -331,24 +331,6 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
       continue;
     }
 
-    // If the module is provided in this target special handling is
-    // needed.
-    if (this->Internal->TargetProvides.find(i) !=
-        this->Internal->TargetProvides.end()) {
-      // The module is provided by a different source in the same
-      // target.  Add the proxy dependency to make sure the other
-      // source builds first.
-      std::string proxy = stamp_dir;
-      proxy += "/";
-      proxy += i;
-      proxy += ".mod.proxy";
-      proxy = cmSystemTools::ConvertToOutputPath(
-        this->MaybeConvertToRelativePath(binDir, proxy).c_str());
-
-      // since we require some things add them to our list of requirements
-      makeDepends << obj_m << ".requires: " << proxy << std::endl;
-    }
-
     // The object file should depend on timestamped files for the
     // modules it uses.
     TargetRequiresMap::const_iterator required =
@@ -373,17 +355,6 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
     }
   }
 
-  // Write provided modules to the output stream.
-  for (std::string const& i : info.Provides) {
-    std::string proxy = stamp_dir;
-    proxy += "/";
-    proxy += i;
-    proxy += ".mod.proxy";
-    proxy = cmSystemTools::ConvertToOutputPath(
-      this->MaybeConvertToRelativePath(binDir, proxy).c_str());
-    makeDepends << proxy << ": " << obj_m << ".provides" << std::endl;
-  }
-
   // If any modules are provided then they must be converted to stamp files.
   if (!info.Provides.empty()) {
     // Create a target to copy the module after the object file
@@ -433,8 +404,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
       makeDepends << "\n";
     }
     makeDepends << obj_m << ".provides.build:\n";
-    // After copying the modules update the timestamp file so that
-    // copying will not be done again until the source rebuilds.
+    // After copying the modules update the timestamp file.
     makeDepends << "\t$(CMAKE_COMMAND) -E touch " << obj_m
                 << ".provides.build\n";
 
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx
index be40126..236bb3d 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.cxx
+++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -21,7 +21,6 @@
 #include "cmStateDirectory.h"
 #include "cmStateTypes.h"
 #include "cmSystemTools.h"
-#include "cmTarget.h"
 #include "cmTargetDepend.h"
 #include "cmake.h"
 
@@ -630,8 +629,6 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2(
       makefileName = localName;
       makefileName += "/build.make";
 
-      bool needRequiresStep = this->NeedRequiresStep(gtarget);
-
       lg->WriteDivider(ruleFileStream);
       ruleFileStream << "# Target rules for target " << localName << "\n\n";
 
@@ -641,13 +638,6 @@ void cmGlobalUnixMakefileGenerator3::WriteConvenienceRules2(
       commands.push_back(
         lg->GetRecursiveMakeCall(makefileName.c_str(), makeTargetName));
 
-      // add requires if we need it for this generator
-      if (needRequiresStep) {
-        makeTargetName = localName;
-        makeTargetName += "/requires";
-        commands.push_back(
-          lg->GetRecursiveMakeCall(makefileName.c_str(), makeTargetName));
-      }
       makeTargetName = localName;
       makeTargetName += "/build";
       commands.push_back(
@@ -952,21 +942,3 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule(
                     commands, true);
   ruleFileStream << "\n\n";
 }
-
-bool cmGlobalUnixMakefileGenerator3::NeedRequiresStep(
-  const cmGeneratorTarget* target)
-{
-  std::set<std::string> languages;
-  target->GetLanguages(
-    languages,
-    target->Target->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE"));
-  for (std::string const& l : languages) {
-    std::string var = "CMAKE_NEEDS_REQUIRES_STEP_";
-    var += l;
-    var += "_FLAG";
-    if (target->Target->GetMakefile()->GetDefinition(var)) {
-      return true;
-    }
-  }
-  return false;
-}
diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h
index d601f88..f9ce88c 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.h
+++ b/Source/cmGlobalUnixMakefileGenerator3.h
@@ -174,9 +174,6 @@ protected:
   void AppendGlobalTargetDepends(std::vector<std::string>& depends,
                                  cmGeneratorTarget* target);
 
-  // does this generator need a requires step for any of its targets
-  bool NeedRequiresStep(cmGeneratorTarget const*);
-
   // Target name hooks for superclass.
   const char* GetAllTargetName() const override { return "all"; }
   const char* GetInstallTargetName() const override { return "install"; }
diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx
index 801f72a..90d8c7f 100644
--- a/Source/cmMakefileExecutableTargetGenerator.cxx
+++ b/Source/cmMakefileExecutableTargetGenerator.cxx
@@ -69,9 +69,6 @@ void cmMakefileExecutableTargetGenerator::WriteRuleFiles()
     this->WriteExecutableRule(true);
   }
 
-  // Write the requires target.
-  this->WriteTargetRequiresRules();
-
   // Write clean target
   this->WriteTargetCleanRules();
 
diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx
index 80c62d1..ab15daf 100644
--- a/Source/cmMakefileLibraryTargetGenerator.cxx
+++ b/Source/cmMakefileLibraryTargetGenerator.cxx
@@ -89,9 +89,6 @@ void cmMakefileLibraryTargetGenerator::WriteRuleFiles()
       break;
   }
 
-  // Write the requires target.
-  this->WriteTargetRequiresRules();
-
   // Write clean target
   this->WriteTargetCleanRules();
 
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index ae0b61c..9b5b5ec 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -818,61 +818,6 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
                                           commands, false);
     }
   }
-
-  // If the language needs provides-requires mode, create the
-  // corresponding targets.
-  std::string objectRequires = relativeObj;
-  objectRequires += ".requires";
-  std::vector<std::string> p_depends;
-  // always provide an empty requires target
-  this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr,
-                                      objectRequires, p_depends, no_commands,
-                                      true);
-
-  // write a build rule to recursively build what this obj provides
-  std::string objectProvides = relativeObj;
-  objectProvides += ".provides";
-  std::string temp = relativeObj;
-  temp += ".provides.build";
-  std::vector<std::string> r_commands;
-
-  p_depends.clear();
-  p_depends.push_back(objectRequires);
-  p_depends.push_back(temp);
-  this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr,
-                                      objectProvides, p_depends, r_commands,
-                                      true);
-
-  // write the provides.build rule dependency on the obj file
-  p_depends.clear();
-  p_depends.push_back(relativeObj);
-  this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr, temp,
-                                      p_depends, no_commands, false);
-}
-
-void cmMakefileTargetGenerator::WriteTargetRequiresRules()
-{
-  std::vector<std::string> depends;
-  std::vector<std::string> no_commands;
-
-  // Construct the name of the dependency generation target.
-  std::string depTarget =
-    this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget);
-  depTarget += "/requires";
-
-  // This target drives dependency generation for all object files.
-  std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath();
-  std::string objTarget;
-  for (std::string const& obj : this->Objects) {
-    objTarget = relPath;
-    objTarget += obj;
-    objTarget += ".requires";
-    depends.push_back(objTarget);
-  }
-
-  // Write the rule.
-  this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr,
-                                      depTarget, depends, no_commands, true);
 }
 
 void cmMakefileTargetGenerator::WriteTargetCleanRules()
diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h
index 5ab7e36..7af3cf3 100644
--- a/Source/cmMakefileTargetGenerator.h
+++ b/Source/cmMakefileTargetGenerator.h
@@ -63,9 +63,6 @@ protected:
   void WriteCommonCodeRules();
   void WriteTargetLanguageFlags();
 
-  // write the provide require rules for this target
-  void WriteTargetRequiresRules();
-
   // write the clean rules for this target
   void WriteTargetCleanRules();
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5f2e2c387deb7f798cbc54d0980503e05873eaaa
commit 5f2e2c387deb7f798cbc54d0980503e05873eaaa
Author:     Yurii Batrak <yuriib at met.no>
AuthorDate: Fri Nov 24 13:01:18 2017 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 14 08:13:42 2017 -0500

    Makefiles: Avoid nested make calls for Fortran module dependencies
    
    Makefiles generated by cmake use a series of nested calls to build
    `*.provides.build` targets that are used when the 'requires' step is
    needed.  That leads to significant degradation of the build time for
    incremental builds.  Re-arrange dependencies to eliminate the nested
    calls.
    
    Explicit `.mod.stamp` targets introduced by this commit could lead to
    situation when a stamp file always older than its dependency.  This
    happens during the incremental build when building of an updated Fortran
    source produces a module file that has no differences from the stored
    stamp file.  In such case `cmake_copy_f90_mod` will be triggered on each
    new build to compare a module file with the corresponding stamp file.
    This behavior is expected and can not be changed without nested calls
    that slow down the build.  The copy-if-different check is much cheaper
    than an entire nested make call.

diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx
index fdbc086..8b4fafd 100644
--- a/Source/cmDependsFortran.cxx
+++ b/Source/cmDependsFortran.cxx
@@ -388,7 +388,6 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
   if (!info.Provides.empty()) {
     // Create a target to copy the module after the object file
     // changes.
-    makeDepends << obj_m << ".provides.build:\n";
     for (std::string const& i : info.Provides) {
       // Include this module in the set provided by this target.
       this->Internal->TargetProvides.insert(i);
@@ -407,11 +406,25 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
       stampFile += "/";
       stampFile += m;
       stampFile += ".mod.stamp";
-      stampFile = this->LocalGenerator->ConvertToOutputFormat(
-        this->MaybeConvertToRelativePath(binDir, stampFile),
-        cmOutputConverter::SHELL);
+      stampFile = this->MaybeConvertToRelativePath(binDir, stampFile);
+      std::string const stampFileForShell =
+        this->LocalGenerator->ConvertToOutputFormat(stampFile,
+                                                    cmOutputConverter::SHELL);
+      std::string const stampFileForMake =
+        cmSystemTools::ConvertToOutputPath(stampFile.c_str());
+
+      makeDepends << obj_m << ".provides.build"
+                  << ": " << stampFileForMake << "\n";
+      // Note that when cmake_copy_f90_mod finds that a module file
+      // and the corresponding stamp file have no differences, the stamp
+      // file is not updated. In such case the stamp file will be always
+      // older than its prerequisite and trigger cmake_copy_f90_mod
+      // on each new build. This is expected behavior for incremental
+      // builds and can not be changed without preforming recursive make
+      // calls that would considerably slow down the building process.
+      makeDepends << stampFileForMake << ": " << obj_m << "\n";
       makeDepends << "\t$(CMAKE_COMMAND) -E cmake_copy_f90_mod " << modFile
-                  << " " << stampFile;
+                  << " " << stampFileForShell;
       cmMakefile* mf = this->LocalGenerator->GetMakefile();
       const char* cid = mf->GetDefinition("CMAKE_Fortran_COMPILER_ID");
       if (cid && *cid) {
@@ -419,6 +432,7 @@ bool cmDependsFortran::WriteDependenciesReal(const char* obj,
       }
       makeDepends << "\n";
     }
+    makeDepends << obj_m << ".provides.build:\n";
     // After copying the modules update the timestamp file so that
     // copying will not be done again until the source rebuilds.
     makeDepends << "\t$(CMAKE_COMMAND) -E touch " << obj_m
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index e26182a..a389ad0 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -1444,6 +1444,8 @@ bool cmLocalUnixMakefileGenerator3::ScanDependencies(
     }
 #ifdef CMAKE_BUILD_WITH_CMAKE
     else if (lang == "Fortran") {
+      ruleFileStream << "# Note that incremental build could trigger "
+                     << "a call to cmake_copy_f90_mod on each re-build\n";
       scanner = new cmDependsFortran(this);
     } else if (lang == "Java") {
       scanner = new cmDependsJava();
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index 7db010c..ae0b61c 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -835,14 +835,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
   std::string temp = relativeObj;
   temp += ".provides.build";
   std::vector<std::string> r_commands;
-  std::string tgtMakefileName =
-    this->LocalGenerator->GetRelativeTargetDirectory(this->GeneratorTarget);
-  tgtMakefileName += "/build.make";
-  r_commands.push_back(
-    this->LocalGenerator->GetRecursiveMakeCall(tgtMakefileName.c_str(), temp));
 
   p_depends.clear();
   p_depends.push_back(objectRequires);
+  p_depends.push_back(temp);
   this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, nullptr,
                                       objectProvides, p_depends, r_commands,
                                       true);

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8164298935cdd0970a4e86327184866496694b65
commit 8164298935cdd0970a4e86327184866496694b65
Author:     Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Wed Dec 13 17:34:48 2017 -0500
Commit:     Robert Maynard <robert.maynard at kitware.com>
CommitDate: Wed Dec 13 17:34:48 2017 -0500

    Cuda: ResolveDeviceSymbols now properly execute everywhere.
    
    The previous version had two bugs that caused the JIT runtime errors.
    
    1. It was building the executable without separable compilation enabled
    
    2. All kernel launches will fail if any kernel is missing a symbol, that
       is why the call to file2_launch_kernel had to be removed

diff --git a/Tests/CudaOnly/ResolveDeviceSymbols/CMakeLists.txt b/Tests/CudaOnly/ResolveDeviceSymbols/CMakeLists.txt
index 8d6551b..83473ae 100644
--- a/Tests/CudaOnly/ResolveDeviceSymbols/CMakeLists.txt
+++ b/Tests/CudaOnly/ResolveDeviceSymbols/CMakeLists.txt
@@ -16,11 +16,11 @@ else()
 endif()
 
 #Goal for this example:
-#Build a static library that defines multiple methods and kernels that
-#use each other.
-#Use a custom command to build an executable that uses this static library
-#We do these together to verify that we can get a static library to do
-#device symbol linking, and not have it done when the executable is made
+# Build a static library that defines multiple methods and kernels that
+# use each other.
+# Resolve the device symbols into that static library
+# Verify that we can't use those device symbols from anything that links
+# to the static library
 string(APPEND CMAKE_CUDA_FLAGS " -gencode arch=compute_30,code=compute_30")
 set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_CUDA_STANDARD 11)
@@ -43,6 +43,10 @@ add_custom_command(TARGET CUDAResolveDeviceLib POST_BUILD
 endif()
 
 add_executable(CudaOnlyResolveDeviceSymbols main.cu)
+set_target_properties(CudaOnlyResolveDeviceSymbols
+                      PROPERTIES
+                      CUDA_SEPARABLE_COMPILATION ON)
+
 target_link_libraries(CudaOnlyResolveDeviceSymbols PRIVATE CUDAResolveDeviceLib)
 
 if(APPLE)
diff --git a/Tests/CudaOnly/ResolveDeviceSymbols/main.cu b/Tests/CudaOnly/ResolveDeviceSymbols/main.cu
index b4b5b9e..d464f96 100644
--- a/Tests/CudaOnly/ResolveDeviceSymbols/main.cu
+++ b/Tests/CudaOnly/ResolveDeviceSymbols/main.cu
@@ -62,17 +62,8 @@ int main(int argc, char** argv)
     return 0;
   }
 
-  cudaError_t err;
-  file2_launch_kernel(42);
-  err = cudaGetLastError();
-  if (err != cudaSuccess) {
-    std::cerr << "file2_launch_kernel: kernel launch failed: "
-              << cudaGetErrorString(err) << std::endl;
-    return 1;
-  }
-
   main_launch_kernel(1);
-  err = cudaGetLastError();
+  cudaError_t err = cudaGetLastError();
   if (err == cudaSuccess) {
     // This kernel launch should fail as the file2_func was device linked
     // into the static library and is not usable by the executable

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

Summary of changes:
 Modules/CMakeFortranInformation.cmake              |    5 -
 Modules/FindFLTK.cmake                             |  357 +++++++++++---------
 Source/cmDependsFortran.cxx                        |   56 ++-
 Source/cmGlobalUnixMakefileGenerator3.cxx          |   28 --
 Source/cmGlobalUnixMakefileGenerator3.h            |    3 -
 Source/cmGlobalVisualStudio10Generator.cxx         |    5 +
 Source/cmGlobalVisualStudio10Generator.h           |    1 +
 Source/cmLocalUnixMakefileGenerator3.cxx           |    2 +
 Source/cmMakefileExecutableTargetGenerator.cxx     |    3 -
 Source/cmMakefileLibraryTargetGenerator.cxx        |    3 -
 Source/cmMakefileTargetGenerator.cxx               |   59 ----
 Source/cmMakefileTargetGenerator.h                 |    3 -
 Tests/CudaOnly/ResolveDeviceSymbols/CMakeLists.txt |   14 +-
 Tests/CudaOnly/ResolveDeviceSymbols/main.cu        |   11 +-
 14 files changed, 234 insertions(+), 316 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list