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.k...@kitware.com> AuthorDate: Fri Dec 15 15:42:44 2017 +0000 Commit: Kitware Robot <kwro...@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 <kwro...@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.k...@kitware.com> AuthorDate: Fri Dec 15 15:42:16 2017 +0000 Commit: Kitware Robot <kwro...@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 <kwro...@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.k...@kitware.com> AuthorDate: Fri Dec 15 15:42:01 2017 +0000 Commit: Kitware Robot <kwro...@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 <kwro...@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.k...@kitware.com> AuthorDate: Fri Dec 15 15:35:13 2017 +0000 Commit: Kitware Robot <kwro...@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 <kwro...@kitware.com> Merge-request: !1593 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f1299f5d82479b9acd103697fe08ab12edfd6a5d commit f1299f5d82479b9acd103697fe08ab12edfd6a5d Author: Stefano Sinigardi <stesiniga...@hotmail.com> AuthorDate: Thu Dec 14 13:40:58 2017 +0100 Commit: Brad King <brad.k...@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 <stesiniga...@hotmail.com> AuthorDate: Thu Dec 14 13:39:58 2017 +0100 Commit: Brad King <brad.k...@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 <stesiniga...@hotmail.com> AuthorDate: Thu Dec 14 13:38:05 2017 +0100 Commit: Brad King <brad.k...@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 <vvs31...@gitlab.org> AuthorDate: Wed Dec 13 19:16:54 2017 -0500 Commit: Brad King <brad.k...@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 <yur...@met.no> AuthorDate: Tue Dec 5 13:41:59 2017 +0100 Commit: Brad King <brad.k...@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 <yur...@met.no> AuthorDate: Fri Nov 24 13:01:18 2017 +0100 Commit: Brad King <brad.k...@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.mayn...@kitware.com> AuthorDate: Wed Dec 13 17:34:48 2017 -0500 Commit: Robert Maynard <robert.mayn...@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 _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org https://cmake.org/mailman/listinfo/cmake-commits