New upstream version 3.9.3

ci/unstable
Felix Geyer 7 years ago
parent 86a21c1898
commit 62ea671738

@ -14,7 +14,6 @@ if exists("b:did_indent")
endif endif
let b:did_indent = 1 let b:did_indent = 1
setlocal et
setlocal indentexpr=CMakeGetIndent(v:lnum) setlocal indentexpr=CMakeGetIndent(v:lnum)
setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE( setlocal indentkeys+==ENDIF(,ENDFOREACH(,ENDMACRO(,ELSE(,ELSEIF(,ENDWHILE(

@ -68,6 +68,7 @@ The following individuals and institutions are among the Contributors:
* Matthaeus G. Chajdas * Matthaeus G. Chajdas
* Matthias Kretz <kretz@kde.org> * Matthias Kretz <kretz@kde.org>
* Matthias Maennich <matthias@maennich.net> * Matthias Maennich <matthias@maennich.net>
* Michael Stürmer
* Miguel A. Figueroa-Villanueva * Miguel A. Figueroa-Villanueva
* Mike Jackson * Mike Jackson
* Mike McQuaid <mike@mikemcquaid.com> * Mike McQuaid <mike@mikemcquaid.com>

@ -70,8 +70,8 @@ be included by the user in the C++ implementation file with a preprocessor
Included ``moc_*.cpp`` and ``*.moc`` files will be generated in the Included ``moc_*.cpp`` and ``*.moc`` files will be generated in the
``<AUTOGEN_BUILD_DIR>/include`` directory which is ``<AUTOGEN_BUILD_DIR>/include`` directory which is
automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`. automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
(This differs from CMake 3.7 and below; see their documentation for details.)
* This differs from CMake 3.7 and below; see their documentation for details.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
Not included ``moc_<basename>.cpp`` files will be generated in custom Not included ``moc_<basename>.cpp`` files will be generated in custom
@ -107,16 +107,23 @@ inspects the C++ files in the target to determine if they require ``uic`` to
be run, and to create rules to execute ``uic`` at the appropriate time. be run, and to create rules to execute ``uic`` at the appropriate time.
If a preprocessor ``#include`` directive is found which matches If a preprocessor ``#include`` directive is found which matches
``ui_<basename>.h``, and a ``<basename>.ui`` file exists, then ``uic`` will ``<path>ui_<basename>.h``, and a ``<basename>.ui`` file exists,
be executed to generate the appropriate file. The ``<basename>.ui`` file is then ``uic`` will be executed to generate the appropriate file.
searched for first in the vicinity of including file and afterwards in the The ``<basename>.ui`` file is searched for in the following places
optional :prop_tgt:`AUTOUIC_SEARCH_PATHS` of the target.
1. ``<source_dir>/<basename>.ui``
2. ``<source_dir>/<path><basename>.ui``
3. ``<AUTOUIC_SEARCH_PATHS>/<basename>.ui``
4. ``<AUTOUIC_SEARCH_PATHS>/<path><basename>.ui``
where ``<source_dir>`` is the directory of the C++ file and
:prop_tgt:`AUTOUIC_SEARCH_PATHS` is a list of additional search paths.
The generated generated ``ui_*.h`` files are placed in the The generated generated ``ui_*.h`` files are placed in the
``<AUTOGEN_BUILD_DIR>/include`` directory which is ``<AUTOGEN_BUILD_DIR>/include`` directory which is
automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`. automatically added to the target's :prop_tgt:`INCLUDE_DIRECTORIES`.
(This differs from CMake 3.7 and below; see their documentation for details.)
* This differs from CMake 3.7 and below; see their documentation for details.
* See :prop_tgt:`AUTOGEN_BUILD_DIR`. * See :prop_tgt:`AUTOGEN_BUILD_DIR`.
The :prop_tgt:`AUTOUIC` target property may be pre-set for all following The :prop_tgt:`AUTOUIC` target property may be pre-set for all following

@ -34,8 +34,6 @@ Generators
This is an experimental feature and can be activated by setting the This is an experimental feature and can be activated by setting the
:variable:`CMAKE_XCODE_GENERATE_SCHEME` variable to a ``TRUE`` value. :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable to a ``TRUE`` value.
* The :generator:`Xcode` generator now supports Xcode 9.
Commands Commands
-------- --------
@ -310,9 +308,6 @@ Other Changes
in dependent targets may now compile without waiting for their targets' in dependent targets may now compile without waiting for their targets'
dependencies to link. dependencies to link.
* On macOS, the default application bundle ``Info.plist`` file now enables
Hi-DPI support.
* On macOS, ``RPATH`` settings such as :prop_tgt:`BUILD_WITH_INSTALL_RPATH` * On macOS, ``RPATH`` settings such as :prop_tgt:`BUILD_WITH_INSTALL_RPATH`
no longer affect the ``install_name`` field. See policy :policy:`CMP0068`. no longer affect the ``install_name`` field. See policy :policy:`CMP0068`.
@ -333,3 +328,15 @@ Changes made since CMake 3.9.0 include the following.
CMake 3.9.0 has been removed for the 3.9 series due to regressions CMake 3.9.0 has been removed for the 3.9 series due to regressions
caused by new use of ``<PackageName>_ROOT`` variables. The behavior caused by new use of ``<PackageName>_ROOT`` variables. The behavior
may be re-introduced in the future in a more-compatible way. may be re-introduced in the future in a more-compatible way.
3.9.2
-----
* On macOS, the default application bundle ``Info.plist`` file no longer
enables Hi-DPI support as it did in 3.9.0 and 3.9.1. The change had
to be reverted because it broke iOS applications.
* The Xcode generator no longer adds "outputPaths" to custom script
build phases as it did in 3.9.0 and 3.9.1. This was added in an
attempt to support Xcode 9's new build system, but broke incremental
rebuilds for both the old and new Xcode build systems.

@ -43,7 +43,7 @@ endif()
# on the initial values computed in the platform/*.cmake files # on the initial values computed in the platform/*.cmake files
# use _INIT variables so that this only happens the first time # use _INIT variables so that this only happens the first time
# and you can set these flags in the cmake cache # and you can set these flags in the cmake cache
set(CMAKE_CSharp_FLAGS_INIT "$ENV{CSharpFLAGS} ${CMAKE_CSharp_FLAGS_INIT}") set(CMAKE_CSharp_FLAGS_INIT "$ENV{CSFLAGS} ${CMAKE_CSharp_FLAGS_INIT}")
# avoid just having a space as the initial value for the cache # avoid just having a space as the initial value for the cache
if(CMAKE_CSharp_FLAGS_INIT STREQUAL " ") if(CMAKE_CSharp_FLAGS_INIT STREQUAL " ")
set(CMAKE_CSharp_FLAGS_INIT) set(CMAKE_CSharp_FLAGS_INIT)

@ -198,11 +198,11 @@ endif()
#These are used when linking relocatable (dc) cuda code #These are used when linking relocatable (dc) cuda code
if(NOT CMAKE_CUDA_DEVICE_LINK_LIBRARY) if(NOT CMAKE_CUDA_DEVICE_LINK_LIBRARY)
set(CMAKE_CUDA_DEVICE_LINK_LIBRARY set(CMAKE_CUDA_DEVICE_LINK_LIBRARY
"<CMAKE_CUDA_COMPILER> <CMAKE_CUDA_LINK_FLAGS> <LANGUAGE_COMPILE_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") "<CMAKE_CUDA_COMPILER> ${CMAKE_CUDA_HOST_FLAGS} <CMAKE_CUDA_LINK_FLAGS> <LANGUAGE_COMPILE_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
endif() endif()
if(NOT CMAKE_CUDA_DEVICE_LINK_EXECUTABLE) if(NOT CMAKE_CUDA_DEVICE_LINK_EXECUTABLE)
set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE set(CMAKE_CUDA_DEVICE_LINK_EXECUTABLE
"<CMAKE_CUDA_COMPILER> <FLAGS> <CMAKE_CUDA_LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") "<CMAKE_CUDA_COMPILER> ${CMAKE_CUDA_HOST_FLAGS} <FLAGS> <CMAKE_CUDA_LINK_FLAGS> ${CMAKE_CUDA_COMPILE_OPTIONS_PIC} ${_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS} -shared -dlink <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
endif() endif()
unset(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS) unset(_CMAKE_CUDA_EXTRA_DEVICE_LINK_FLAGS)

@ -706,6 +706,7 @@ function(CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX lang userflags)
OUTPUT_VARIABLE out OUTPUT_VARIABLE out
ERROR_VARIABLE err ERROR_VARIABLE err
RESULT_VARIABLE res RESULT_VARIABLE res
ENCODING AUTO # cl prints in current code page
) )
if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n]*:[^:\n]*:[ \t]*)") if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n]*:[^:\n]*:[ \t]*)")
set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_2}" PARENT_SCOPE) set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_2}" PARENT_SCOPE)

@ -2,6 +2,12 @@ if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL
message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set") message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
endif() endif()
# Debian:
# * /usr/bin/llvm-ar-4.0
# * /usr/bin/llvm-ranlib-4.0
string(REGEX MATCH "^([0-9]+\\.[0-9]+)" __version_x_y
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}")
# Try to find tools in the same directory as Clang itself # Try to find tools in the same directory as Clang itself
get_filename_component(__clang_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH) get_filename_component(__clang_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
get_filename_component(__clang_hint_1 "${__clang_hint_1}" DIRECTORY) get_filename_component(__clang_hint_1 "${__clang_hint_1}" DIRECTORY)
@ -12,6 +18,7 @@ set(__clang_hints ${__clang_hint_1} ${__clang_hint_2})
# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ar.1.html # http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ar.1.html
find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
"${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar-${__version_x_y}"
"${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar" "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ar"
HINTS ${__clang_hints} HINTS ${__clang_hints}
DOC "LLVM archiver" DOC "LLVM archiver"
@ -20,6 +27,7 @@ mark_as_advanced(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR)
# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ranlib.1.html # http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ranlib.1.html
find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_RANLIB NAMES
"${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib-${__version_x_y}"
"${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib" "${_CMAKE_TOOLCHAIN_PREFIX}llvm-ranlib"
HINTS ${__clang_hints} HINTS ${__clang_hints}
DOC "Generate index for LLVM archive" DOC "Generate index for LLVM archive"

@ -208,10 +208,6 @@
# #
# Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake. # Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake.
# Save project's policies
cmake_policy(PUSH)
cmake_policy(SET CMP0057 NEW) # if IN_LIST
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Before we go searching, check whether boost-cmake is available, unless the # Before we go searching, check whether boost-cmake is available, unless the
# user specifically asked NOT to search for boost-cmake. # user specifically asked NOT to search for boost-cmake.
@ -554,7 +550,10 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
# The addition of a new release should only require it to be run # The addition of a new release should only require it to be run
# against the new release. # against the new release.
set(_Boost_IMPORTED_TARGETS TRUE) set(_Boost_IMPORTED_TARGETS TRUE)
if(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500) if(Boost_VERSION VERSION_LESS 103300)
message(WARNING "Imported targets and dependency information not available for Boost version ${Boost_VERSION} (all versions older than 1.33)")
set(_Boost_IMPORTED_TARGETS FALSE)
elseif(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500)
set(_Boost_IOSTREAMS_DEPENDENCIES regex thread) set(_Boost_IOSTREAMS_DEPENDENCIES regex thread)
set(_Boost_REGEX_DEPENDENCIES thread) set(_Boost_REGEX_DEPENDENCIES thread)
set(_Boost_WAVE_DEPENDENCIES filesystem thread) set(_Boost_WAVE_DEPENDENCIES filesystem thread)
@ -768,8 +767,27 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
else() else()
message(WARNING "Imported targets not available for Boost version ${Boost_VERSION}") if(NOT Boost_VERSION VERSION_LESS 106500)
set(_Boost_IMPORTED_TARGETS FALSE) set(_Boost_CHRONO_DEPENDENCIES system)
set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
set(_Boost_COROUTINE_DEPENDENCIES context system)
set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
set(_Boost_FILESYSTEM_DEPENDENCIES system)
set(_Boost_IOSTREAMS_DEPENDENCIES regex)
set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
set(_Boost_MPI_DEPENDENCIES serialization)
set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
set(_Boost_NUMPY_DEPENDENCIES python)
set(_Boost_RANDOM_DEPENDENCIES system)
set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
endif()
if(NOT Boost_VERSION VERSION_LESS 106600)
message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
set(_Boost_IMPORTED_TARGETS FALSE)
endif()
endif() endif()
string(TOUPPER ${component} uppercomponent) string(TOUPPER ${component} uppercomponent)
@ -819,6 +837,7 @@ function(_Boost_COMPONENT_HEADERS component _hdrs)
set(_Boost_MATH_TR1L_HEADERS "boost/math/tr1.hpp") set(_Boost_MATH_TR1L_HEADERS "boost/math/tr1.hpp")
set(_Boost_MPI_HEADERS "boost/mpi.hpp") set(_Boost_MPI_HEADERS "boost/mpi.hpp")
set(_Boost_MPI_PYTHON_HEADERS "boost/mpi/python/config.hpp") set(_Boost_MPI_PYTHON_HEADERS "boost/mpi/python/config.hpp")
set(_Boost_NUMPY_HEADERS "boost/python/numpy.hpp")
set(_Boost_PRG_EXEC_MONITOR_HEADERS "boost/test/prg_exec_monitor.hpp") set(_Boost_PRG_EXEC_MONITOR_HEADERS "boost/test/prg_exec_monitor.hpp")
set(_Boost_PROGRAM_OPTIONS_HEADERS "boost/program_options.hpp") set(_Boost_PROGRAM_OPTIONS_HEADERS "boost/program_options.hpp")
set(_Boost_PYTHON_HEADERS "boost/python.hpp") set(_Boost_PYTHON_HEADERS "boost/python.hpp")
@ -876,7 +895,9 @@ function(_Boost_MISSING_DEPENDENCIES componentvar extravar)
set(_Boost_${uppercomponent}_DEPENDENCIES ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE) set(_Boost_${uppercomponent}_DEPENDENCIES ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE) set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES}) foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES})
if (NOT ("${componentdep}" IN_LIST _boost_processed_components OR "${componentdep}" IN_LIST _boost_new_components)) list(FIND _boost_processed_components "${componentdep}" _boost_component_found)
list(FIND _boost_new_components "${componentdep}" _boost_component_new)
if (_boost_component_found EQUAL -1 AND _boost_component_new EQUAL -1)
list(APPEND _boost_new_components ${componentdep}) list(APPEND _boost_new_components ${componentdep})
endif() endif()
endforeach() endforeach()
@ -1000,6 +1021,7 @@ else()
# _Boost_COMPONENT_HEADERS. See the instructions at the top of # _Boost_COMPONENT_HEADERS. See the instructions at the top of
# _Boost_COMPONENT_DEPENDENCIES. # _Boost_COMPONENT_DEPENDENCIES.
set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS} set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
"1.65.1" "1.65.0" "1.65"
"1.64.0" "1.64" "1.63.0" "1.63" "1.62.0" "1.62" "1.61.0" "1.61" "1.60.0" "1.60" "1.64.0" "1.64" "1.63.0" "1.63" "1.62.0" "1.62" "1.61.0" "1.61" "1.60.0" "1.60"
"1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55" "1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55"
"1.54.0" "1.54" "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51" "1.54.0" "1.54" "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51"
@ -1503,7 +1525,8 @@ endif()
_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS) _Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS)
# If thread is required, get the thread libs as a dependency # If thread is required, get the thread libs as a dependency
if("thread" IN_LIST Boost_FIND_COMPONENTS) list(FIND Boost_FIND_COMPONENTS thread _Boost_THREAD_DEPENDENCY_LIBS)
if(NOT _Boost_THREAD_DEPENDENCY_LIBS EQUAL -1)
include(CMakeFindDependencyMacro) include(CMakeFindDependencyMacro)
find_dependency(Threads) find_dependency(Threads)
endif() endif()
@ -1928,6 +1951,3 @@ list(REMOVE_DUPLICATES _Boost_COMPONENTS_SEARCHED)
list(SORT _Boost_COMPONENTS_SEARCHED) list(SORT _Boost_COMPONENTS_SEARCHED)
set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}" set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}"
CACHE INTERNAL "Components requested for this build tree.") CACHE INTERNAL "Components requested for this build tree.")
# Restore project's policies
cmake_policy(POP)

@ -8,14 +8,17 @@
# this module looks for Cygwin # this module looks for Cygwin
if (WIN32) if (WIN32)
find_program(CYGWIN_INSTALL_PATH if(CYGWIN_INSTALL_PATH)
set(CYGWIN_BAT "${CYGWIN_INSTALL_PATH}/cygwin.bat")
endif()
find_program(CYGWIN_BAT
cygwin.bat cygwin.bat
"C:/Cygwin" "C:/Cygwin"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygwin\\setup;rootdir]" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygwin\\setup;rootdir]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/;native]" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/;native]"
) )
get_filename_component(CYGWIN_INSTALL_PATH "${CYGWIN_INSTALL_PATH}" DIRECTORY) get_filename_component(CYGWIN_INSTALL_PATH "${CYGWIN_BAT}" DIRECTORY)
mark_as_advanced( mark_as_advanced(CYGWIN_BAT)
CYGWIN_INSTALL_PATH
)
endif () endif ()

@ -429,6 +429,8 @@ foreach(LANG IN ITEMS C CXX Fortran)
endif() endif()
endforeach() endforeach()
set(OpenMP_FOUND ${OPENMP_FOUND})
if(CMAKE_Fortran_COMPILER_LOADED AND OpenMP_Fortran_FOUND) if(CMAKE_Fortran_COMPILER_LOADED AND OpenMP_Fortran_FOUND)
if(NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_MODULE) if(NOT DEFINED OpenMP_Fortran_HAVE_OMPLIB_MODULE)
set(OpenMP_Fortran_HAVE_OMPLIB_MODULE FALSE CACHE BOOL INTERNAL "") set(OpenMP_Fortran_HAVE_OMPLIB_MODULE FALSE CACHE BOOL INTERNAL "")

@ -89,6 +89,8 @@ if(MSVC)
endif() endif()
if(MSVC_VERSION EQUAL 1400) if(MSVC_VERSION EQUAL 1400)
set(MSVC_REDIST_NAME VC80)
# Find the runtime library redistribution directory. # Find the runtime library redistribution directory.
get_filename_component(msvc_install_dir get_filename_component(msvc_install_dir
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]" ABSOLUTE) "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]" ABSOLUTE)
@ -129,6 +131,8 @@ if(MSVC)
endif() endif()
if(MSVC_VERSION EQUAL 1500) if(MSVC_VERSION EQUAL 1500)
set(MSVC_REDIST_NAME VC90)
# Find the runtime library redistribution directory. # Find the runtime library redistribution directory.
get_filename_component(msvc_install_dir get_filename_component(msvc_install_dir
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]" ABSOLUTE) "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]" ABSOLUTE)
@ -171,24 +175,35 @@ if(MSVC)
endif() endif()
endif() endif()
if(MSVC_VERSION EQUAL 1910) set(MSVC_REDIST_NAME "")
set(_MSVCRT_DLL_VERSION "")
set(_MSVCRT_IDE_VERSION "")
if(MSVC_VERSION GREATER_EQUAL 2000)
message(WARNING "MSVC ${MSVC_VERSION} not yet supported.")
elseif(MSVC_VERSION GREATER_EQUAL 1911)
set(MSVC_REDIST_NAME VC141)
set(_MSVCRT_DLL_VERSION 140)
set(_MSVCRT_IDE_VERSION 15)
elseif(MSVC_VERSION EQUAL 1910)
set(MSVC_REDIST_NAME VC150)
set(_MSVCRT_DLL_VERSION 140) set(_MSVCRT_DLL_VERSION 140)
set(_MSVCRT_IDE_VERSION 15) set(_MSVCRT_IDE_VERSION 15)
elseif(MSVC_VERSION EQUAL 1900) elseif(MSVC_VERSION EQUAL 1900)
set(MSVC_REDIST_NAME VC140)
set(_MSVCRT_DLL_VERSION 140) set(_MSVCRT_DLL_VERSION 140)
set(_MSVCRT_IDE_VERSION 14) set(_MSVCRT_IDE_VERSION 14)
elseif(MSVC_VERSION EQUAL 1800) elseif(MSVC_VERSION EQUAL 1800)
set(MSVC_REDIST_NAME VC120)
set(_MSVCRT_DLL_VERSION 120) set(_MSVCRT_DLL_VERSION 120)
set(_MSVCRT_IDE_VERSION 12) set(_MSVCRT_IDE_VERSION 12)
elseif(MSVC_VERSION EQUAL 1700) elseif(MSVC_VERSION EQUAL 1700)
set(MSVC_REDIST_NAME VC110)
set(_MSVCRT_DLL_VERSION 110) set(_MSVCRT_DLL_VERSION 110)
set(_MSVCRT_IDE_VERSION 11) set(_MSVCRT_IDE_VERSION 11)
elseif(MSVC_VERSION EQUAL 1600) elseif(MSVC_VERSION EQUAL 1600)
set(MSVC_REDIST_NAME VC100)
set(_MSVCRT_DLL_VERSION 100) set(_MSVCRT_DLL_VERSION 100)
set(_MSVCRT_IDE_VERSION 10) set(_MSVCRT_IDE_VERSION 10)
else()
set(_MSVCRT_DLL_VERSION "")
set(_MSVCRT_IDE_VERSION "")
endif() endif()
if(_MSVCRT_DLL_VERSION) if(_MSVCRT_DLL_VERSION)
@ -219,10 +234,10 @@ if(MSVC)
unset(_vs_dir) unset(_vs_dir)
unset(programfilesx86) unset(programfilesx86)
endif() endif()
find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.CRT PATHS ${_vs_redist_paths}) find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT PATHS ${_vs_redist_paths})
unset(_vs_redist_paths) unset(_vs_redist_paths)
mark_as_advanced(MSVC_REDIST_DIR) mark_as_advanced(MSVC_REDIST_DIR)
set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.CRT") set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT")
if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY) if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
set(__install__libs set(__install__libs
@ -242,7 +257,7 @@ if(MSVC)
if(CMAKE_INSTALL_DEBUG_LIBRARIES) if(CMAKE_INSTALL_DEBUG_LIBRARIES)
set(MSVC_CRT_DIR set(MSVC_CRT_DIR
"${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.DebugCRT") "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugCRT")
set(__install__libs ${__install__libs} set(__install__libs ${__install__libs}
"${MSVC_CRT_DIR}/msvcp${v}d.dll" "${MSVC_CRT_DIR}/msvcp${v}d.dll"
) )
@ -383,7 +398,11 @@ if(MSVC)
) )
endif() endif()
if(MSVC_VERSION EQUAL 1910) set(_MFC_DLL_VERSION "")
set(_MFC_IDE_VERSION "")
if(MSVC_VERSION GREATER_EQUAL 2000)
# Version not yet supported.
elseif(MSVC_VERSION GREATER_EQUAL 1910)
set(_MFC_DLL_VERSION 140) set(_MFC_DLL_VERSION 140)
set(_MFC_IDE_VERSION 15) set(_MFC_IDE_VERSION 15)
elseif(MSVC_VERSION EQUAL 1900) elseif(MSVC_VERSION EQUAL 1900)
@ -398,9 +417,6 @@ if(MSVC)
elseif(MSVC_VERSION EQUAL 1600) elseif(MSVC_VERSION EQUAL 1600)
set(_MFC_DLL_VERSION 100) set(_MFC_DLL_VERSION 100)
set(_MFC_IDE_VERSION 10) set(_MFC_IDE_VERSION 10)
else()
set(_MFC_DLL_VERSION "")
set(_MFC_IDE_VERSION "")
endif() endif()
if(_MFC_DLL_VERSION) if(_MFC_DLL_VERSION)
@ -410,7 +426,7 @@ if(MSVC)
# Starting with VS 15 the MFC DLLs may be in a different directory. # Starting with VS 15 the MFC DLLs may be in a different directory.
if (NOT vs VERSION_LESS 15) if (NOT vs VERSION_LESS 15)
file(GLOB _MSVC_REDIST_DIRS "${MSVC_REDIST_DIR}/../*") file(GLOB _MSVC_REDIST_DIRS "${MSVC_REDIST_DIR}/../*")
find_path(MSVC_REDIST_MFC_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.MFC find_path(MSVC_REDIST_MFC_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC
PATHS ${_MSVC_REDIST_DIRS} NO_DEFAULT_PATH) PATHS ${_MSVC_REDIST_DIRS} NO_DEFAULT_PATH)
mark_as_advanced(MSVC_REDIST_MFC_DIR) mark_as_advanced(MSVC_REDIST_MFC_DIR)
unset(_MSVC_REDIST_DIRS) unset(_MSVC_REDIST_DIRS)
@ -424,7 +440,7 @@ if(MSVC)
if(CMAKE_INSTALL_DEBUG_LIBRARIES) if(CMAKE_INSTALL_DEBUG_LIBRARIES)
set(MSVC_MFC_DIR set(MSVC_MFC_DIR
"${MSVC_REDIST_MFC_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.DebugMFC") "${MSVC_REDIST_MFC_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugMFC")
set(__install__libs ${__install__libs} set(__install__libs ${__install__libs}
"${MSVC_MFC_DIR}/mfc${v}ud.dll" "${MSVC_MFC_DIR}/mfc${v}ud.dll"
"${MSVC_MFC_DIR}/mfcm${v}ud.dll" "${MSVC_MFC_DIR}/mfcm${v}ud.dll"
@ -437,7 +453,7 @@ if(MSVC)
endif() endif()
endif() endif()
set(MSVC_MFC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.MFC") set(MSVC_MFC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC")
if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY) if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
set(__install__libs ${__install__libs} set(__install__libs ${__install__libs}
"${MSVC_MFC_DIR}/mfc${v}u.dll" "${MSVC_MFC_DIR}/mfc${v}u.dll"
@ -452,7 +468,7 @@ if(MSVC)
endif() endif()
# include the language dll's as well as the actuall dll's # include the language dll's as well as the actuall dll's
set(MSVC_MFCLOC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.MFCLOC") set(MSVC_MFCLOC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFCLOC")
set(__install__libs ${__install__libs} set(__install__libs ${__install__libs}
"${MSVC_MFCLOC_DIR}/mfc${v}chs.dll" "${MSVC_MFCLOC_DIR}/mfc${v}chs.dll"
"${MSVC_MFCLOC_DIR}/mfc${v}cht.dll" "${MSVC_MFCLOC_DIR}/mfc${v}cht.dll"
@ -471,7 +487,11 @@ if(MSVC)
# MSVC 8 was the first version with OpenMP # MSVC 8 was the first version with OpenMP
# Furthermore, there is no debug version of this # Furthermore, there is no debug version of this
if(CMAKE_INSTALL_OPENMP_LIBRARIES) if(CMAKE_INSTALL_OPENMP_LIBRARIES)
if(MSVC_VERSION EQUAL 1910) set(_MSOMP_DLL_VERSION "")
set(_MSOMP_IDE_VERSION "")
if(MSVC_VERSION GREATER_EQUAL 2000)
# Version not yet supported.
elseif(MSVC_VERSION GREATER_EQUAL 1910)
set(_MSOMP_DLL_VERSION 140) set(_MSOMP_DLL_VERSION 140)
set(_MSOMP_IDE_VERSION 15) set(_MSOMP_IDE_VERSION 15)
elseif(MSVC_VERSION EQUAL 1900) elseif(MSVC_VERSION EQUAL 1900)
@ -492,15 +512,12 @@ if(MSVC)
elseif(MSVC_VERSION EQUAL 1400) elseif(MSVC_VERSION EQUAL 1400)
set(_MSOMP_DLL_VERSION 80) set(_MSOMP_DLL_VERSION 80)
set(_MSOMP_IDE_VERSION 8) set(_MSOMP_IDE_VERSION 8)
else()
set(_MSOMP_DLL_VERSION "")
set(_MSOMP_IDE_VERSION "")
endif() endif()
if(_MSOMP_DLL_VERSION) if(_MSOMP_DLL_VERSION)
set(v "${_MSOMP_DLL_VERSION}") set(v "${_MSOMP_DLL_VERSION}")
set(vs "${_MSOMP_IDE_VERSION}") set(vs "${_MSOMP_IDE_VERSION}")
set(MSVC_OPENMP_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.OPENMP") set(MSVC_OPENMP_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.OPENMP")
if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY) if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY)
set(__install__libs ${__install__libs} set(__install__libs ${__install__libs}

@ -30,9 +30,5 @@
<true/> <true/>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string> <string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
</dict> </dict>
</plist> </plist>

@ -124,7 +124,7 @@ file(STRINGS "${_ANDROID_TOOL_SETUP_MK}" _ANDROID_TOOL_SETUP REGEX "^(LLVM|TOOLC
unset(_ANDROID_TOOL_SETUP_MK) unset(_ANDROID_TOOL_SETUP_MK)
set(_ANDROID_TOOL_PREFIX "") set(_ANDROID_TOOL_PREFIX "")
set(_ANDROID_TOOL_NAME_ONLY "") set(_ANDROID_TOOL_NAME_ONLY "")
set(_ANDROID_TOOL_LLVM_NAME "") set(_ANDROID_TOOL_LLVM_NAME "llvm")
set(_ANDROID_TOOL_LLVM_VERS "") set(_ANDROID_TOOL_LLVM_VERS "")
foreach(line IN LISTS _ANDROID_TOOL_SETUP) foreach(line IN LISTS _ANDROID_TOOL_SETUP)
if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG) if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)

@ -1,5 +1,5 @@
# CMake version number components. # CMake version number components.
set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 9) set(CMake_VERSION_MINOR 9)
set(CMake_VERSION_PATCH 1) set(CMake_VERSION_PATCH 3)
#set(CMake_VERSION_RC 0) #set(CMake_VERSION_RC 0)

@ -9,6 +9,7 @@
#include "cmsys/FStream.hxx" #include "cmsys/FStream.hxx"
#include "cmsys/RegularExpression.hxx" #include "cmsys/RegularExpression.hxx"
#include <algorithm>
#include <iomanip> #include <iomanip>
#include <map> #include <map>
#include <stdlib.h> #include <stdlib.h>

@ -570,6 +570,8 @@ int cmCTestCoverageHandler::ProcessHandler()
ostr << "Cannot open source file: " << fullPath; ostr << "Cannot open source file: " << fullPath;
errorsWhileAccumulating.push_back(ostr.str()); errorsWhileAccumulating.push_back(ostr.str());
error++; error++;
covLogXML.EndElement(); // Report
covLogXML.EndElement(); // File
continue; continue;
} }
int untested = 0; int untested = 0;

@ -158,7 +158,7 @@ const char* cmGeneratorTarget::GetSourcesProperty() const
} }
static std::string value; static std::string value;
value.clear(); value.clear();
value = cmJoin(values, ""); value = cmJoin(values, ";");
return value.c_str(); return value.c_str();
} }

@ -200,10 +200,16 @@ void cmGlobalVisualStudio71Generator::WriteProjectConfigurations(
std::string guid = this->GetGUID(name); std::string guid = this->GetGUID(name);
for (std::vector<std::string>::const_iterator i = configs.begin(); for (std::vector<std::string>::const_iterator i = configs.begin();
i != configs.end(); ++i) { i != configs.end(); ++i) {
const char* dstConfig = target.GetProperty("MAP_IMPORTED_CONFIG_" + std::vector<std::string> mapConfig;
cmSystemTools::UpperCase(*i)); const char* dstConfig = i->c_str();
if (dstConfig == CM_NULLPTR) { if (target.GetProperty("EXTERNAL_MSPROJECT")) {
dstConfig = i->c_str(); if (const char* m = target.GetProperty("MAP_IMPORTED_CONFIG_" +
cmSystemTools::UpperCase(*i))) {
cmSystemTools::ExpandListArgument(m, mapConfig);
if (!mapConfig.empty()) {
dstConfig = mapConfig[0].c_str();
}
}
} }
fout << "\t\t{" << guid << "}." << *i << ".ActiveCfg = " << dstConfig fout << "\t\t{" << guid << "}." << *i << ".ActiveCfg = " << dstConfig
<< "|" << platformName << std::endl; << "|" << platformName << std::endl;

@ -354,10 +354,16 @@ void cmGlobalVisualStudio8Generator::WriteProjectConfigurations(
std::string guid = this->GetGUID(name); std::string guid = this->GetGUID(name);
for (std::vector<std::string>::const_iterator i = configs.begin(); for (std::vector<std::string>::const_iterator i = configs.begin();
i != configs.end(); ++i) { i != configs.end(); ++i) {
const char* dstConfig = target.GetProperty("MAP_IMPORTED_CONFIG_" + std::vector<std::string> mapConfig;
cmSystemTools::UpperCase(*i)); const char* dstConfig = i->c_str();
if (dstConfig == CM_NULLPTR) { if (target.GetProperty("EXTERNAL_MSPROJECT")) {
dstConfig = i->c_str(); if (const char* m = target.GetProperty("MAP_IMPORTED_CONFIG_" +
cmSystemTools::UpperCase(*i))) {
cmSystemTools::ExpandListArgument(m, mapConfig);
if (!mapConfig.empty()) {
dstConfig = mapConfig[0].c_str();
}
}
} }
fout << "\t\t{" << guid << "}." << *i << "|" << this->GetPlatformName() fout << "\t\t{" << guid << "}." << *i << "|" << this->GetPlatformName()
<< ".ActiveCfg = " << dstConfig << "|" << ".ActiveCfg = " << dstConfig << "|"

@ -778,6 +778,19 @@ bool cmGlobalVisualStudioGenerator::TargetIsCSharpOnly(
return false; return false;
} }
bool cmGlobalVisualStudioGenerator::TargetCanBeReferenced(
cmGeneratorTarget const* gt)
{
if (this->TargetIsCSharpOnly(gt)) {
return true;
}
if (gt->GetType() != cmStateEnums::SHARED_LIBRARY &&
gt->GetType() != cmStateEnums::EXECUTABLE) {
return false;
}
return true;
}
bool cmGlobalVisualStudioGenerator::TargetCompare::operator()( bool cmGlobalVisualStudioGenerator::TargetCompare::operator()(
cmGeneratorTarget const* l, cmGeneratorTarget const* r) const cmGeneratorTarget const* l, cmGeneratorTarget const* r) const
{ {

@ -85,6 +85,9 @@ public:
// return true if target is C# only // return true if target is C# only
static bool TargetIsCSharpOnly(cmGeneratorTarget const* gt); static bool TargetIsCSharpOnly(cmGeneratorTarget const* gt);
// return true if target can be referenced by C# targets
bool TargetCanBeReferenced(cmGeneratorTarget const* gt);
/** Get the top-level registry key for this VS version. */ /** Get the top-level registry key for this VS version. */
std::string GetRegistryBase(); std::string GetRegistryBase();

@ -1517,17 +1517,6 @@ void cmGlobalXCodeGenerator::AddCommandsToBuildPhase(
makecmd += " all"; makecmd += " all";
buildphase->AddAttribute("shellScript", this->CreateString(makecmd)); buildphase->AddAttribute("shellScript", this->CreateString(makecmd));
buildphase->AddAttribute("showEnvVarsInLog", this->CreateString("0")); buildphase->AddAttribute("showEnvVarsInLog", this->CreateString("0"));
cmXCodeObject* outputFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
for (std::vector<cmCustomCommand>::const_iterator i = commands.begin();
i != commands.end(); ++i) {
std::vector<std::string> const& outputs = i->GetOutputs();
for (std::vector<std::string>::const_iterator j = outputs.begin();
j != outputs.end(); ++j) {
outputFiles->AddObject(this->CreateString(*j));
}
}
buildphase->AddAttribute("outputPaths", outputFiles);
} }
void cmGlobalXCodeGenerator::CreateCustomRulesMakefile( void cmGlobalXCodeGenerator::CreateCustomRulesMakefile(

@ -719,7 +719,8 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
const std::string qtMajorVersion = GetQtMajorVersion(target); const std::string qtMajorVersion = GetQtMajorVersion(target);
const std::string rccCommand = RccGetExecutable(target, qtMajorVersion); const std::string rccCommand = RccGetExecutable(target, qtMajorVersion);
const std::vector<std::string> suffixes = GetConfigurationSuffixes(makefile); const std::vector<std::string> suffixes = GetConfigurationSuffixes(makefile);
std::vector<std::string> autogenDepends; std::vector<std::string> autogenDependFiles;
std::vector<std::string> autogenDependTargets;
std::vector<std::string> autogenProvides; std::vector<std::string> autogenProvides;
// Remove build directories on cleanup // Remove build directories on cleanup
@ -810,18 +811,16 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
#endif #endif
// Initialize autogen target dependencies // Initialize autogen target dependencies
if (const char* deps = target->GetProperty("AUTOGEN_TARGET_DEPENDS")) { if (const char* extraDeps = target->GetProperty("AUTOGEN_TARGET_DEPENDS")) {
cmSystemTools::ExpandListArgument(deps, autogenDepends); std::vector<std::string> deps;
} cmSystemTools::ExpandListArgument(extraDeps, deps);
// Add link library targets to the autogen dependencies for (std::vector<std::string>::const_iterator itC = deps.begin(),
{ itE = deps.end();
const cmTarget::LinkLibraryVectorType& libVec = itC != itE; ++itC) {
target->Target->GetOriginalLinkLibraries(); if (makefile->FindTargetToUse(*itC) != CM_NULLPTR) {
for (cmTarget::LinkLibraryVectorType::const_iterator it = libVec.begin(); autogenDependTargets.push_back(*itC);
it != libVec.end(); ++it) { } else {
const std::string& libName = it->first; autogenDependFiles.push_back(*itC);
if (makefile->FindTargetToUse(libName) != CM_NULLPTR) {
autogenDepends.push_back(libName);
} }
} }
} }
@ -845,7 +844,7 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
if (PropertyEnabled(sf, "GENERATED")) { if (PropertyEnabled(sf, "GENERATED")) {
if ((mocEnabled && !PropertyEnabled(sf, "SKIP_AUTOMOC")) || if ((mocEnabled && !PropertyEnabled(sf, "SKIP_AUTOMOC")) ||
(uicEnabled && !PropertyEnabled(sf, "SKIP_AUTOUIC"))) { (uicEnabled && !PropertyEnabled(sf, "SKIP_AUTOUIC"))) {
autogenDepends.push_back( autogenDependFiles.push_back(
cmsys::SystemTools::GetRealPath(sf->GetFullPath())); cmsys::SystemTools::GetRealPath(sf->GetFullPath()));
#if defined(_WIN32) && !defined(__CYGWIN__) #if defined(_WIN32) && !defined(__CYGWIN__)
// Cannot use PRE_BUILD with generated files // Cannot use PRE_BUILD with generated files
@ -890,7 +889,7 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
if (PropertyEnabled(sf, "GENERATED")) { if (PropertyEnabled(sf, "GENERATED")) {
// Add generated qrc file to the dependencies // Add generated qrc file to the dependencies
autogenDepends.push_back(absFile); autogenDependFiles.push_back(absFile);
} else { } else {
// Run cmake again when .qrc file changes // Run cmake again when .qrc file changes
makefile->AddCMakeDependFile(absFile); makefile->AddCMakeDependFile(absFile);
@ -898,7 +897,7 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
// Add the qrc input files to the dependencies // Add the qrc input files to the dependencies
std::string error; std::string error;
if (!cmQtAutoGeneratorCommon::RccListInputs( if (!cmQtAutoGeneratorCommon::RccListInputs(
qtMajorVersion, rccCommand, absFile, autogenDepends, qtMajorVersion, rccCommand, absFile, autogenDependFiles,
&error)) { &error)) {
cmSystemTools::Error(error.c_str()); cmSystemTools::Error(error.c_str());
} }
@ -916,13 +915,9 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
#if defined(_WIN32) && !defined(__CYGWIN__) #if defined(_WIN32) && !defined(__CYGWIN__)
if (usePRE_BUILD) { if (usePRE_BUILD) {
// If the autogen target depends on an other target don't use PRE_BUILD // We can't use pre-build if we depend on additional files
for (std::vector<std::string>::iterator it = autogenDepends.begin(); if (!autogenDependFiles.empty()) {
it != autogenDepends.end(); ++it) { usePRE_BUILD = false;
if (makefile->FindTargetToUse(*it) != CM_NULLPTR) {
usePRE_BUILD = false;
break;
}
} }
} }
if (usePRE_BUILD) { if (usePRE_BUILD) {
@ -930,23 +925,63 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget(
// rejection in cmMakefile::AddCustomCommandToTarget because we know // rejection in cmMakefile::AddCustomCommandToTarget because we know
// PRE_BUILD will work for an OBJECT_LIBRARY in this specific case. // PRE_BUILD will work for an OBJECT_LIBRARY in this specific case.
std::vector<std::string> no_output; std::vector<std::string> no_output;
cmCustomCommand cc(makefile, no_output, autogenProvides, autogenDepends, std::vector<std::string> no_depends;
cmCustomCommand cc(makefile, no_output, autogenProvides, no_depends,
commandLines, autogenComment.c_str(), commandLines, autogenComment.c_str(),
workingDirectory.c_str()); workingDirectory.c_str());
cc.SetEscapeOldStyle(false); cc.SetEscapeOldStyle(false);
cc.SetEscapeAllowMakeVars(true); cc.SetEscapeAllowMakeVars(true);
target->Target->AddPreBuildCommand(cc); target->Target->AddPreBuildCommand(cc);
// Add additional target dependencies to the origin target
for (std::vector<std::string>::const_iterator
itC = autogenDependTargets.begin(),
itE = autogenDependTargets.end();
itC != itE; ++itC) {
target->Target->AddUtility(*itC);
}
} else } else
#endif #endif
{ {
cmTarget* autogenTarget = makefile->AddUtilityCommand( cmTarget* autogenTarget = makefile->AddUtilityCommand(
autogenTargetName, true, workingDirectory.c_str(), autogenTargetName, true, workingDirectory.c_str(),
/*byproducts=*/autogenProvides, autogenDepends, commandLines, false, /*byproducts=*/autogenProvides, autogenDependFiles, commandLines, false,
autogenComment.c_str()); autogenComment.c_str());
cmGeneratorTarget* gt = new cmGeneratorTarget(autogenTarget, lg); cmGeneratorTarget* gt = new cmGeneratorTarget(autogenTarget, lg);
lg->AddGeneratorTarget(gt); lg->AddGeneratorTarget(gt);
// Add origin link library targets to the autogen target dependencies
{
const cmTarget::LinkLibraryVectorType& libVec =
target->Target->GetOriginalLinkLibraries();
for (cmTarget::LinkLibraryVectorType::const_iterator
itC = libVec.begin(),
itE = libVec.end();
itC != itE; ++itC) {
const std::string& libName = itC->first;
if (makefile->FindTargetToUse(libName) != CM_NULLPTR) {
autogenDependTargets.push_back(libName);
}
}
}
// Add origin utility targets to the autogen target dependencies
{
const std::set<std::string>& utils = target->Target->GetUtilities();
for (std::set<std::string>::const_iterator itC = utils.begin(),
itE = utils.end();
itC != itE; ++itC) {
autogenDependTargets.push_back(*itC);
}
}
// Add additional target dependencies to the autogen target
for (std::vector<std::string>::const_iterator
itC = autogenDependTargets.begin(),
itE = autogenDependTargets.end();
itC != itE; ++itC) {
autogenTarget->AddUtility(*itC);
}
// Set target folder // Set target folder
const char* autogenFolder = const char* autogenFolder =
makefile->GetState()->GetGlobalProperty("AUTOMOC_TARGETS_FOLDER"); makefile->GetState()->GetGlobalProperty("AUTOMOC_TARGETS_FOLDER");

@ -1446,31 +1446,62 @@ bool cmQtAutoGenerators::MocGenerateFile(
bool cmQtAutoGenerators::UicFindIncludedFile(std::string& absFile, bool cmQtAutoGenerators::UicFindIncludedFile(std::string& absFile,
const std::string& sourceFile, const std::string& sourceFile,
const std::string& includeString) const std::string& searchPath,
const std::string& searchFile)
{ {
bool success = false; bool success = false;
// Search in vicinity of the source std::vector<std::string> testFiles;
// Collect search paths list
{ {
std::string testPath = SubDirPrefix(sourceFile); const std::string searchFileFull = searchPath + searchFile;
testPath += includeString; // Vicinity of the source
if (cmsys::SystemTools::FileExists(testPath.c_str())) { {
absFile = cmsys::SystemTools::GetRealPath(testPath); const std::string sourcePath = SubDirPrefix(sourceFile);
testFiles.push_back(sourcePath + searchFile);
if (!searchPath.empty()) {
testFiles.push_back(sourcePath + searchFileFull);
}
}
// AUTOUIC search paths
if (!this->UicSearchPaths.empty()) {
for (std::vector<std::string>::const_iterator iit =
this->UicSearchPaths.begin();
iit != this->UicSearchPaths.end(); ++iit) {
testFiles.push_back(*iit + "/" + searchFile);
}
if (!searchPath.empty()) {
for (std::vector<std::string>::const_iterator iit =
this->UicSearchPaths.begin();
iit != this->UicSearchPaths.end(); ++iit) {
testFiles.push_back(*iit + "/" + searchFileFull);
}
}
}
}
// Search for the .ui file!
for (std::vector<std::string>::const_iterator iit = testFiles.begin();
iit != testFiles.end(); ++iit) {
const std::string& testFile = *iit;
if (cmsys::SystemTools::FileExists(testFile.c_str())) {
absFile = cmsys::SystemTools::GetRealPath(testFile);
success = true; success = true;
break;
} }
} }
// Search in include directories
// Log error
if (!success) { if (!success) {
for (std::vector<std::string>::const_iterator iit = std::ostringstream ost;
this->UicSearchPaths.begin(); ost << "AutoUic: Error: " << Quoted(sourceFile) << "\n";
iit != this->UicSearchPaths.end(); ++iit) { ost << "Could not find " << Quoted(searchFile) << " in\n";
const std::string fullPath = ((*iit) + '/' + includeString); for (std::vector<std::string>::const_iterator iit = testFiles.begin();
if (cmsys::SystemTools::FileExists(fullPath.c_str())) { iit != testFiles.end(); ++iit) {
absFile = cmsys::SystemTools::GetRealPath(fullPath); ost << " " << Quoted(*iit) << "\n";
success = true;
break;
}
} }
this->LogError(ost.str());
} }
return success; return success;
} }
@ -1500,16 +1531,14 @@ bool cmQtAutoGenerators::UicGenerateAll(
const std::string uiBasePath = SubDirPrefix(*uit); const std::string uiBasePath = SubDirPrefix(*uit);
const std::string uiBaseName = const std::string uiBaseName =
cmsys::SystemTools::GetFilenameWithoutLastExtension(*uit).substr(3); cmsys::SystemTools::GetFilenameWithoutLastExtension(*uit).substr(3);
const std::string searchFileName = uiBasePath + uiBaseName + ".ui"; const std::string uiFileName = uiBaseName + ".ui";
std::string uiInputFile; std::string uiInputFile;
if (UicFindIncludedFile(uiInputFile, source, searchFileName)) { if (UicFindIncludedFile(uiInputFile, source, uiBasePath, uiFileName)) {
std::string uiOutputFile = uiBasePath + "ui_" + uiBaseName + ".h"; std::string uiOutputFile = uiBasePath + "ui_" + uiBaseName + ".h";
cmSystemTools::ReplaceString(uiOutputFile, "..", "__"); cmSystemTools::ReplaceString(uiOutputFile, "..", "__");
uiGenMap[uiInputFile] = uiOutputFile; uiGenMap[uiInputFile] = uiOutputFile;
testMap[uiInputFile] = uiOutputFile; testMap[uiInputFile] = uiOutputFile;
} else { } else {
this->LogError("AutoUic: Error: " + Quoted(sit->first) +
"\nCould not find " + Quoted(searchFileName));
return false; return false;
} }
} }

@ -112,7 +112,8 @@ private:
// -- Uic file generation // -- Uic file generation
bool UicFindIncludedFile(std::string& absFile, const std::string& sourceFile, bool UicFindIncludedFile(std::string& absFile, const std::string& sourceFile,
const std::string& includeString); const std::string& searchPath,
const std::string& searchFile);
bool UicGenerateAll( bool UicGenerateAll(
const std::map<std::string, std::vector<std::string> >& includedUis); const std::map<std::string, std::vector<std::string> >& includedUis);
bool UicGenerateFile(const std::string& realName, bool UicGenerateFile(const std::string& realName,

@ -3502,6 +3502,13 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
(*this->BuildFileStream) << "</Project>\n"; (*this->BuildFileStream) << "</Project>\n";
this->WriteString("<Name>", 3); this->WriteString("<Name>", 3);
(*this->BuildFileStream) << name << "</Name>\n"; (*this->BuildFileStream) << name << "</Name>\n";
if (csproj == this->ProjectType) {
if (!static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator)
->TargetCanBeReferenced(dt)) {
this->WriteString(
"<ReferenceOutputAssembly>false</ReferenceOutputAssembly>\n", 3);
}
}
this->WriteString("</ProjectReference>\n", 2); this->WriteString("</ProjectReference>\n", 2);
} }
this->WriteString("</ItemGroup>\n", 1); this->WriteString("</ItemGroup>\n", 1);

@ -306,7 +306,7 @@ int do_cmake(int ac, char const* const* av)
return ret; return ret;
} }
cmake::Role const role = cmake::Role const role =
workingMode == cmake::NORMAL_MODE ? cmake::RoleProject : cmake::RoleScript; workingMode == cmake::SCRIPT_MODE ? cmake::RoleScript : cmake::RoleProject;
cmake cm(role); cmake cm(role);
cm.SetHomeDirectory(""); cm.SetHomeDirectory("");
cm.SetHomeOutputDirectory(""); cm.SetHomeOutputDirectory("");

@ -15,3 +15,9 @@ target_compile_options(CLIApp PRIVATE "/clr")
add_executable(CSharpLinkToCxx csharp.cs) add_executable(CSharpLinkToCxx csharp.cs)
target_link_libraries(CSharpLinkToCxx CLIApp) target_link_libraries(CSharpLinkToCxx CLIApp)
# this unmanaged C++ library will be added to the C#/.NET
# references of CSharpLinkToCxx but it will show a warning
# because it is unmanaged
add_library(CppNativeApp SHARED cpp_native.hpp cpp_native.cpp)
target_link_libraries(CSharpLinkToCxx CppNativeApp)

@ -0,0 +1,10 @@
#include "cpp_native.hpp"
#include <iostream>
namespace CppApp {
void MyCpp::testMyCpp()
{
std::cout << "#message from CppApp" << std::endl;
}
}

@ -0,0 +1,9 @@
#pragma once
namespace CppApp {
class MyCpp
{
public:
void testMyCpp();
};
}

@ -5,5 +5,7 @@ find_path(FOO_INCLUDE_DIR NAMES foo.h HINTS "@CMAKE_CURRENT_SOURCE_DIR@" )
set(FOO_LIBRARIES ${FOO_LIBRARY}) set(FOO_LIBRARIES ${FOO_LIBRARY})
set(FOO_INCLUDE_DIRS "${FOO_INCLUDE_DIR}" "/some/path/with a space/include" ) set(FOO_INCLUDE_DIRS "${FOO_INCLUDE_DIR}" "/some/path/with a space/include" )
add_library(Foo::Foo INTERFACE IMPORTED)
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Foo DEFAULT_MSG FOO_LIBRARY FOO_INCLUDE_DIR ) find_package_handle_standard_args(Foo DEFAULT_MSG FOO_LIBRARY FOO_INCLUDE_DIR )

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.7) cmake_minimum_required(VERSION 3.9)
project(mocDepends) project(mocDepends CXX)
if (QT_TEST_VERSION STREQUAL 4) if (QT_TEST_VERSION STREQUAL 4)
find_package(Qt4 REQUIRED) find_package(Qt4 REQUIRED)
@ -14,34 +14,138 @@ else()
endif() endif()
include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CSD ${CMAKE_CURRENT_SOURCE_DIR})
set(CBD ${CMAKE_CURRENT_BINARY_DIR})
# -- Test 1 using generated header # -- Test dependency on header generated by a custom command
# This tests the dependency of AUTOMOC of mocDepends1 to the generated object.hpp #
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/object.hpp # The ORIGIN_autogen target must depend on the same *GENERATED* source files as
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/invalid.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/object.hpp # the ORIGIN target. This is a requirement to ensure that all files for the
COMMAND ${CMAKE_COMMAND} -E sleep 3 # ORIGIN target are generated before the ORIGIN_autogen target is built.
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/object.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/object.hpp #
) # This tests the dependency of the mocDepGenFile_autogen target of
# mocDepGenFile to the source file GenFile.hpp, which is *GENERATED*
add_executable(mocDepends1 test1.cpp # by a custom command.
${CMAKE_CURRENT_BINARY_DIR}/object.hpp # If mocDepGenFile_autogen gets built *before* or in *parallel* to the
) # custom command, the build will fail. That's because GenFile.hpp,
target_link_libraries(mocDepends1 ${QT_CORE_TARGET}) # which is required by mocDepGenFile_autogen, is only valid after the
set_target_properties(mocDepends1 PROPERTIES AUTOMOC TRUE) # custom command has been completed.
set_property(TARGET mocDepends1 PROPERTY __UNDOCUMENTED_AUTOGEN_GENERATED_FILES 1) #
# The sleep seconds artificially increase the build time of the custom command
# -- Test 2 using generated library # to simulate a slow file generation process that takes longer to run than
# This tests the dependency of AUTOMOC of mocDepends2 to the # the build of the mocDepGenFile_autogen target.
# generated simpleLib.hpp which belongs to a linked library of mocDepends2 add_custom_command(
add_custom_command(OUTPUT simpleLib.hpp simpleLib.cpp OUTPUT ${CBD}/GenFile.hpp
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/invalid.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/simpleLib.hpp COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_invalid.hpp.in ${CBD}/GenFile.hpp
COMMAND ${CMAKE_COMMAND} -E sleep 3 COMMAND ${CMAKE_COMMAND} -E sleep 3
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/simpleLib.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/simpleLib.hpp COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_valid.hpp.in ${CBD}/GenFile.hpp)
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/simpleLib.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/simpleLib.cpp
) add_executable(mocDepGenFile testGenFile.cpp ${CBD}/GenFile.hpp)
add_library(SimpleLib STATIC simpleLib.hpp simpleLib.cpp) target_link_libraries(mocDepGenFile ${QT_CORE_TARGET})
set_target_properties(mocDepGenFile PROPERTIES AUTOMOC TRUE)
add_executable(mocDepends2 test2.cpp ) set_property(TARGET mocDepGenFile PROPERTY __UNDOCUMENTED_AUTOGEN_GENERATED_FILES 1)
target_link_libraries(mocDepends2 SimpleLib ${QT_CORE_TARGET})
set_target_properties(mocDepends2 PROPERTIES AUTOMOC TRUE)
set_property(TARGET mocDepends2 PROPERTY __UNDOCUMENTED_AUTOGEN_GENERATED_FILES 1) # -- Test dependency on header generating custom target
#
# The ORIGIN_autogen target must depend on the same user defined targets
# as the ORIGIN target. This is a requirement to ensure that all files for the
# ORIGIN target are generated before the ORIGIN_autogen target is built.
#
# This tests the dependency of the mocDepTarget_autogen target of
# mocDepTarget to the utility target mocDepTargetUtil.
# If mocDepTarget_autogen gets built *before* or in *parallel* to
# mocDepTargetUtil, the build will fail. That's
# because GenTarget.hpp, which is required by mocDepTarget_autogen,
# is only valid after the mocDepTargetUtil build has been completed.
#
# The sleep seconds artificially increase the build time of mocDepTargetUtil
# to simulate a slow utility target build that takes longer to run than
# the build of the mocDepTarget_autogen target.
add_custom_target(mocDepTargetUtil
BYPRODUCTS ${CBD}/GenTarget.hpp
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_invalid.hpp.in ${CBD}/GenTarget.hpp
COMMAND ${CMAKE_COMMAND} -E sleep 3
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_valid.hpp.in ${CBD}/GenTarget.hpp)
add_executable(mocDepTarget testGenTarget.cpp)
target_link_libraries(mocDepTarget ${QT_CORE_TARGET})
set_target_properties(mocDepTarget PROPERTIES AUTOMOC TRUE)
add_dependencies(mocDepTarget mocDepTargetUtil)
# -- Test 3: Depend on generated linked library
# The ORIGIN_autogen target must depend on the same linked libraries
# as the ORIGIN target. This is a requirement to ensure that all files for the
# ORIGIN target are generated before the ORIGIN_autogen target is built.
#
# This tests the dependency of the mocDepGenLib_autogen target of mocDepGenLib
# to the user generated library SimpleLib, which mocDepGenLib links to.
# If mocDepGenLib_autogen gets built *before* or in *parallel* to SimpleLib,
# the build will fail. That's because simpleLib.hpp, which is required by
# mocDepGenLib_autogen, is only valid after the SimpleLib build has been
# completed.
#
# The sleep seconds artificially increase the build time of SimpleLib
# to simulate a slow utility library build that takes longer to run than
# the build of the mocDepGenLib_autogen target.
add_custom_command(
OUTPUT ${CBD}/simpleLib.hpp ${CBD}/simpleLib.cpp
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_invalid.hpp.in ${CBD}/simpleLib.hpp
COMMAND ${CMAKE_COMMAND} -E sleep 3
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/simpleLib.hpp.in ${CBD}/simpleLib.hpp
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/simpleLib.cpp.in ${CBD}/simpleLib.cpp)
add_library(SimpleLib STATIC ${CBD}/simpleLib.hpp ${CBD}/simpleLib.cpp)
target_link_libraries(SimpleLib ${QT_CORE_TARGET})
add_executable(mocDepGenLib testGenLib.cpp)
target_link_libraries(mocDepGenLib SimpleLib ${QT_CORE_TARGET})
set_target_properties(mocDepGenLib PROPERTIES AUTOMOC TRUE)
# -- Test AUTOGEN_TARGET_DEPENDS with GENERATED file dependency
#
# This tests the dependency of the mocDepATDFile_autogen target of
# mocDepATDTarget to the utility target mocDepATDFileUtil.
# If mocDepATDFile_autogen gets built *before* or in *parallel* to
# mocDepATDFileUtil, the build will fail. That's
# because ATDFile.hpp, which is required by mocDepATDFile_autogen,
# is only valid after the mocDepATDFileUtil build has been completed.
#
# The sleep seconds artificially increase the build time of
# mocDepATDFileUtil to simulate a slow utility target build that takes
# longer to run than the build of the mocDepATDFile_autogen target.
add_custom_command(
OUTPUT ${CBD}/ATDFile.hpp
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_invalid.hpp.in ${CBD}/ATDFile.hpp
COMMAND ${CMAKE_COMMAND} -E sleep 3
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_valid.hpp.in ${CBD}/ATDFile.hpp)
add_executable(mocDepATDFile testATDFile.cpp)
target_link_libraries(mocDepATDFile ${QT_CORE_TARGET})
set_target_properties(mocDepATDFile PROPERTIES AUTOMOC TRUE)
set_target_properties(mocDepATDFile PROPERTIES AUTOGEN_TARGET_DEPENDS ${CBD}/ATDFile.hpp)
# -- Test AUTOGEN_TARGET_DEPENDS with target dependency
#
# This tests the dependency of the mocDepATDTarget_autogen target of
# mocDepATDTarget to the utility target mocDepATDTargetUtil.
# If mocDepATDTarget_autogen gets built *before* or in *parallel* to
# mocDepATDTargetUtil, the build will fail. That's
# because ATDTarget.hpp, which is required by mocDepATDTarget_autogen,
# is only valid after the mocDepATDTargetUtil build has been completed.
#
# The sleep seconds artificially increase the build time of
# mocDepATDTargetUtil to simulate a slow utility target build that takes
# longer to run than the build of the mocDepATDTarget_autogen target.
add_custom_target(mocDepATDTargetUtil
BYPRODUCTS ${CBD}/ATDTarget.hpp
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_invalid.hpp.in ${CBD}/ATDTarget.hpp
COMMAND ${CMAKE_COMMAND} -E sleep 3
COMMAND ${CMAKE_COMMAND} -E copy ${CSD}/object_valid.hpp.in ${CBD}/ATDTarget.hpp)
add_executable(mocDepATDTarget testATDTarget.cpp)
target_link_libraries(mocDepATDTarget ${QT_CORE_TARGET})
set_target_properties(mocDepATDTarget PROPERTIES AUTOMOC TRUE)
set_target_properties(mocDepATDTarget PROPERTIES AUTOGEN_TARGET_DEPENDS mocDepATDTargetUtil)

@ -1,8 +1,11 @@
#ifndef SIMPLE_LIB_H #ifndef SIMPLE_LIB_H
#define SIMPLE_LIB_H #define SIMPLE_LIB_H
class SimpleLib #include <QObject>
class SimpleLib : public QObject
{ {
Q_OBJECT
public: public:
SimpleLib(); SimpleLib();
~SimpleLib(); ~SimpleLib();

@ -1,10 +0,0 @@
#include "test2.hpp"
int main()
{
SimpleLib obj;
LObject lobject;
return 0;
}

@ -0,0 +1,9 @@
#include "ATDFile.hpp"
#include "moc_ATDFile.cpp"
int main()
{
Object obj;
return 0;
}

@ -0,0 +1,9 @@
#include "ATDTarget.hpp"
#include "moc_ATDTarget.cpp"
int main()
{
Object obj;
return 0;
}

@ -1,9 +1,8 @@
#include "object.hpp" #include "GenFile.hpp"
int main() int main()
{ {
Object obj; Object obj;
return 0; return 0;
} }

@ -0,0 +1,12 @@
#include "testGenLib.hpp"
int main()
{
SimpleLib libObject;
LObject lobject;
return 0;
}
// Depend on and AUTOMOC the SimpleLib header simpleLib.hpp
#include "moc_simpleLib.cpp"

@ -1,5 +1,5 @@
#ifndef TEST2_HPP #ifndef TEST3_HPP
#define TEST2_HPP #define TEST3_HPP
#include "simpleLib.hpp" #include "simpleLib.hpp"
#include <QObject> #include <QObject>

@ -0,0 +1,9 @@
#include "GenTarget.hpp"
#include "moc_GenTarget.cpp"
int main()
{
Object obj;
return 0;
}

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PageC2</class>
<widget class="QWidget" name="PageC2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QTreeView" name="treeView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PageB2</class>
<widget class="QWidget" name="PageB2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QTreeView" name="treeView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PageBsub</class>
<widget class="QWidget" name="PageBsub">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QTreeView" name="treeView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -6,5 +6,13 @@ int main(int argv, char** args)
return 0; return 0;
} }
#include "sub/ui_PageB.h" // .ui files in CMAKE_AUTOUIC_SEARCH_PATHS
#include "ui_PageA.h"
// .ui files in AUTOUIC_SEARCH_PATHS
#include "sub/gen/deep/ui_PageB2.h"
#include "subB/ui_PageBsub.h"
#include "ui_PageB.h"
// .ui files in source's vicinity
#include "sub/gen/deep/ui_PageC2.h"
#include "subC/ui_PageCsub.h"
#include "ui_PageC.h" #include "ui_PageC.h"

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PageCsub</class>
<widget class="QWidget" name="PageCsub">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QTreeView" name="treeView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -32,6 +32,7 @@ run_cmake(COMPILE_LANGUAGE-unknown-lang)
run_cmake(TARGET_FILE-recursion) run_cmake(TARGET_FILE-recursion)
run_cmake(OUTPUT_NAME-recursion) run_cmake(OUTPUT_NAME-recursion)
run_cmake(TARGET_PROPERTY-LOCATION) run_cmake(TARGET_PROPERTY-LOCATION)
run_cmake(TARGET_PROPERTY-SOURCES)
run_cmake(LINK_ONLY-not-linking) run_cmake(LINK_ONLY-not-linking)
run_cmake(ImportedTarget-TARGET_BUNDLE_DIR) run_cmake(ImportedTarget-TARGET_BUNDLE_DIR)

@ -0,0 +1,9 @@
file(READ ${RunCMake_TEST_BINARY_DIR}/foo.txt foo_sources)
# VS generators inject CMakeLists.txt as a source. Remove it.
string(REGEX REPLACE ";[^;]*CMakeLists.txt$" "" foo_sources "${foo_sources}")
set(foo_expected "empty.c;empty2.c;empty3.c")
if(NOT foo_sources STREQUAL foo_expected)
set(RunCMake_TEST_FAILED "foo SOURCES was:\n [[${foo_sources}]]\nbut expected:\n [[${foo_expected}]]")
endif()

@ -0,0 +1,5 @@
enable_language(C)
add_library(foo empty.c empty2.c)
target_sources(foo PRIVATE empty3.c)
file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/foo.txt
CONTENT "$<TARGET_PROPERTY:foo,SOURCES>")

@ -830,6 +830,12 @@ rm -f "${cmake_bootstrap_dir}/cmake_bootstrap.log"
rm -f "${cmake_bootstrap_dir}/cmConfigure.h${_tmp}" rm -f "${cmake_bootstrap_dir}/cmConfigure.h${_tmp}"
rm -f "${cmake_bootstrap_dir}/cmVersionConfig.h${_tmp}" rm -f "${cmake_bootstrap_dir}/cmVersionConfig.h${_tmp}"
# If building in-source, remove any cmConfigure.h that may
# have been created by a previous run of the bootstrap cmake.
if [ -n "${cmake_in_source_build}" ]; then
rm -f "${cmake_source_dir}/Source/cmConfigure.h"
fi
# If exist compiler flags, set them # If exist compiler flags, set them
cmake_c_flags=${CFLAGS} cmake_c_flags=${CFLAGS}
cmake_cxx_flags=${CXXFLAGS} cmake_cxx_flags=${CXXFLAGS}

Loading…
Cancel
Save