New upstream version 3.7.0~rc3

ci/unstable
Felix Geyer 8 years ago
parent b8500fbc10
commit 2ddf1d7f9e

@ -29,7 +29,7 @@ Qt 4 and Qt 5 may be used together in the same
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5 COMPONENTS Widgets DBus REQUIRED)
add_executable(publisher publisher.cpp)
target_link_libraries(publisher Qt5::Widgets Qt5::DBus)

@ -57,17 +57,17 @@ or using a named pipe (with the ``--pipe <NAMED_PIPE>`` parameter).
When connecting to the server (via named pipe or by starting it in ``--debug``
mode), the server will reply with a hello message::
[== CMake Server ==[
[== "CMake Server" ==[
{"supportedProtocolVersions":[{"major":1,"minor":0}],"type":"hello"}
]== CMake Server ==]
]== "CMake Server" ==]
Messages sent to and from the process are wrapped in magic strings::
[== CMake Server ==[
[== "CMake Server" ==[
{
... some JSON message ...
}
]== CMake Server ==]
]== "CMake Server" ==]
The server is now ready to accept further requests via the named pipe
or stdin.
@ -87,7 +87,7 @@ the response into the given filename.
This is a response from the cmake server with "showStats" set to true::
[== CMake Server ==[
[== "CMake Server" ==[
{
"cookie":"",
"errorMessage":"Waiting for type \"handshake\".",
@ -100,7 +100,7 @@ This is a response from the cmake server with "showStats" set to true::
"totalTime":0.025995
}
}
]== CMake Server ==]
]== "CMake Server" ==]
The server has made a copy of this response into the file /tmp/error.txt and
took 0.011 seconds to turn the JSON response into a string, and it took 0.025
@ -137,9 +137,9 @@ contain values.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"zimtstern","inReplyTo":"handshake","type":"reply"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "error"
@ -150,9 +150,9 @@ contain an "errorMessage".
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"","errorMessage":"Protocol version not supported.","inReplyTo":"handshake","type":"error"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "progress"
@ -181,9 +181,9 @@ box title.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"","message":"Something happened.","title":"Title Text","inReplyTo":"handshake","type":"message"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "signal"
@ -208,13 +208,13 @@ an influence on the build system is changed.
The "dirty" signal may look like this::
[== CMake Server ==[
[== "CMake Server" ==[
{
"cookie":"",
"inReplyTo":"",
"name":"dirty",
"type":"signal"}
]== CMake Server ==]
]== "CMake Server" ==]
"fileChange" Signal
@ -226,7 +226,7 @@ that was detected. Possible changes are "change" and "rename".
The "fileChange" signal looks like this::
[== CMake Server ==[
[== "CMake Server" ==[
{
"cookie":"",
"inReplyTo":"",
@ -234,7 +234,7 @@ The "fileChange" signal looks like this::
"path":"/absolute/CMakeLists.txt",
"properties":["change"],
"type":"signal"}
]== CMake Server ==]
]== "CMake Server" ==]
Specific Message Types
@ -250,13 +250,15 @@ This is the only message ever sent by the server that is not of type "reply",
It will contain "supportedProtocolVersions" with an array of server protocol
versions supported by the cmake server. These are JSON objects with "major" and
"minor" keys containing non-negative integer values.
"minor" keys containing non-negative integer values. Some versions may be marked
as experimental. These will contain the "isExperimental" key set to true. Enabling
these requires a special command line argument when starting the cmake server mode.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"supportedProtocolVersions":[{"major":0,"minor":1}],"type":"hello"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "handshake"
@ -274,21 +276,23 @@ Protocol version 1.0 requires the following attributes to be set:
* "sourceDirectory" with a path to the sources
* "buildDirectory" with a path to the build directory
* "generator" with the generator name
* "extraGenerator" (optional!) with the extra generator to be used.
* "extraGenerator" (optional!) with the extra generator to be used
* "platform" with the generator platform (if supported by the generator)
* "toolset" with the generator toolset (if supported by the generator)
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"zimtstern","type":"handshake","protocolVersion":{"major":0},
"sourceDirectory":"/home/code/cmake", "buildDirectory":"/tmp/testbuild",
"generator":"Ninja"}
]== CMake Server ==]
]== "CMake Server" ==]
which will result in a response type "reply"::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"zimtstern","inReplyTo":"handshake","type":"reply"}
]== CMake Server ==]
]== "CMake Server" ==]
indicating that the server is ready for action.
@ -301,13 +305,13 @@ JSON structure with information on cmake state.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"type":"globalSettings"}
]== CMake Server ==]
]== "CMake Server" ==]
which will result in a response type "reply"::
[== CMake Server ==[
[== "CMake Server" ==[
{
"buildDirectory": "/tmp/test-build",
"capabilities": {
@ -344,7 +348,7 @@ which will result in a response type "reply"::
"warnUnused": false,
"warnUnusedCli": true
}
]== CMake Server ==]
]== "CMake Server" ==]
Type "setGlobalSettings"
@ -362,15 +366,15 @@ The server will respond with an empty reply message or an error.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"type":"setGlobalSettings","debugOutput":true}
]== CMake Server ==]
]== "CMake Server" ==]
CMake will reply to this with::
[== CMake Server ==[
[== "CMake Server" ==[
{"inReplyTo":"setGlobalSettings","type":"reply"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "configure"
@ -389,34 +393,34 @@ cache handling that are passed to the cmake command line client.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"type":"configure", "cacheArguments":["-Dsomething=else"]}
]== CMake Server ==]
]== "CMake Server" ==]
CMake will reply like this (after reporting progress for some time)::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","type":"reply"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "compute"
^^^^^^^^^^^^^^
This requist will generate build system files in the build directory and
This request will generate build system files in the build directory and
is only available after a project was successfully "configure"d.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"type":"compute"}
]== CMake Server ==]
]== "CMake Server" ==]
CMake will reply (after reporting progress information)::
[== CMake Server ==[
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"compute","type":"reply"}
]== CMake Server ==]
]== "CMake Server" ==]
Type "codemodel"
@ -426,8 +430,19 @@ The "codemodel" request can be used after a project was "compute"d successfully.
It will list the complete project structure as it is known to cmake.
The reply will contain a key "projects", which will contain a list of
project objects, one for each (sub-)project defined in the cmake build system.
The reply will contain a key "configurations", which will contain a list of
configuration objects. Configuration objects are used to destinquish between
different configurations the build directory might have enabled. While most
generators only support one configuration, others might support several.
Each configuration object can have the following keys:
"name"
contains the name of the configuration. The name may be empty.
"projects"
contains a list of project objects, one for each build project.
Project objects define one (sub-)project defined in the cmake build system.
Each project object can have the following keys:
@ -437,19 +452,8 @@ Each project object can have the following keys:
contains the current source directory
"buildDirectory"
contains the current build directory.
"configurations"
contains a list of configuration objects.
Configuration objects are used to destinquish between different
configurations the build directory might have enabled. While most generators
only support one configuration, others support several.
Each configuration object can have the following keys:
"name"
contains the name of the configuration. The name may be empty.
"targets"
contains a list of target objects, one for each build target.
contains a list of build system target objects.
Target objects define individual build targets for a certain configuration.
@ -519,88 +523,53 @@ sourceDirectory of the target.
Example::
[== CMake Server ==[
{"type":"project"}
]== CMake Server ==]
[== "CMake Server" ==[
{"type":"codemodel"}
]== "CMake Server" ==]
CMake will reply::
[== CMake Server ==[
{
"cookie":"",
"type":"reply",
"inReplyTo":"project",
"projects":
[
[== "CMake Server" ==[
{
"name":"CMAKE_FORM",
"sourceDirectory":"/home/code/src/cmake/Source/CursesDialog/form"
"buildDirectory":"/tmp/cmake-build-test/Source/CursesDialog/form",
"configurations":
[
"configurations": [
{
"name": "",
"targets":
[
"projects": [
{
"artifactDirectory":"/tmp/cmake/Source/CursesDialog/form",
"fileGroups":
[
"buildDirectory": "/tmp/build/Source/CursesDialog/form",
"name": "CMAKE_FORM",
"sourceDirectory": "/home/code/src/cmake/Source/CursesDialog/form",
"targets": [
{
"artifacts": [ "/tmp/build/Source/CursesDialog/form/libcmForm.a" ],
"buildDirectory": "/tmp/build/Source/CursesDialog/form",
"fileGroups": [
{
"compileFlags": " -std=gnu11",
"defines":
[
"SOMETHING=1",
"LIBARCHIVE_STATIC"
],
"includePath":
[
{ "path":"/tmp/cmake-build-test/Utilities" },
{ "isSystem": true, "path":"/usr/include/something" },
...
]
"defines": [ "CURL_STATICLIB", "LIBARCHIVE_STATIC" ],
"includePath": [ { "path": "/tmp/build/Utilities" }, <...> ],
"isGenerated": false,
"language": "C",
"sources":
[
"fld_arg.c",
...
"fty_regex.c"
]
"sources": [ "fld_arg.c", <...> ]
}
],
"fullName": "libcmForm.a",
"linkerLanguage": "C",
"name": "cmForm",
"sourceDirectory": "/home/code/src/cmake/Source/CursesDialog/form",
"type": "STATIC_LIBRARY"
}
]
}
],
},
...
<...>
]
}
]== CMake Server ==]
The output can be tailored to the specific needs via parameter passed when
requesting "project" information.
You can have a "depth" key, which accepts "project", "configuration" and
"target" as string values. These cause the output to be trimmed at the
appropriate depth of the output tree.
You can also set "configurations" to an array of strings with configuration
names to list. This will cause any configuration that is not listed to be
trimmed from the output.
Generated files can be included in the listing by setting "includeGeneratedFiles"
to "true". This setting defaults to "false", so generated files are not
listed by default.
Finally you can limit the target types that are going to be listed. This is
done by providing a list of target types as an array of strings to the
"targetTypes" key.
],
"cookie": "",
"inReplyTo": "codemodel",
"type": "reply"
}
]== "CMake Server" ==]
Type "cmakeInputs"
@ -614,13 +583,13 @@ This request is only available after a project was successfully
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"type":"cmakeInputs"}
]== CMake Server ==]
]== "CMake Server" ==]
CMake will reply with the following information::
[== CMake Server ==[
[== "CMake Server" ==[
{"buildFiles":
[
{"isCMake":true,"isTemporary":false,"sources":["/usr/lib/cmake/...", ... ]},
@ -633,7 +602,7 @@ CMake will reply with the following information::
"inReplyTo":"cmakeInputs",
"type":"reply"
}
]== CMake Server ==]
]== "CMake Server" ==]
All file names are either relative to the top level source directory or
absolute.
@ -652,13 +621,13 @@ list the cached configuration values.
Example::
[== CMake Server ==[
[== "CMake Server" ==[
{"type":"cache"}
]== CMake Server ==]
]== "CMake Server" ==]
CMake will respond with the following output::
[== CMake Server ==[
[== "CMake Server" ==[
{
"cookie":"","inReplyTo":"cache","type":"reply",
"cache":
@ -674,7 +643,7 @@ CMake will respond with the following output::
"value":"TEST"}
]
}
]== CMake Server ==]
]== "CMake Server" ==]
The output can be limited to a list of keys by passing an array of key names
to the "keys" optional field of the "cache" request.
@ -688,16 +657,16 @@ command will report on the files and directories watched.
Example::
[== CMake Server ==]
[== "CMake Server" ==[
{"type":"fileSystemWatchers"}
[== CMake Server ==]
]== "CMake Server" ==]
CMake will respond with the following output::
[== CMake Server ==]
[== "CMake Server" ==[
{
"cookie":"","inReplyTo":"fileSystemWatchers","type":"reply",
"watchedFiles": [ "/absolute/path" ],
"watchedDirectories": [ "/absolute" ]
}
[== CMake Server ==]
]== "CMake Server" ==]

@ -32,11 +32,11 @@
# - https://cmake.org/Wiki/CMake:CPackConfiguration
# - https://cmake.org/Wiki/CMake:CPackPackageGenerators#DEB_.28UNIX_only.29
#
# List of CPackRPM specific variables:
# List of CPackDEB specific variables:
#
# .. variable:: CPACK_DEB_PACKAGE_COMPONENT
# .. variable:: CPACK_DEB_COMPONENT_INSTALL
#
# Enable component packaging for CPackRPM
# Enable component packaging for CPackDEB
#
# * Mandatory : NO
# * Default : OFF
@ -616,7 +616,7 @@ function(cpack_deb_prepare_package_vars)
find_program(SHLIBDEPS_EXECUTABLE dpkg-shlibdeps)
if(SHLIBDEPS_EXECUTABLE)
# Check version of the dpkg-shlibdeps tool using CPackRPM method
# Check version of the dpkg-shlibdeps tool using CPackDEB method
execute_process(COMMAND env LC_ALL=C ${SHLIBDEPS_EXECUTABLE} --version
OUTPUT_VARIABLE _TMP_VERSION
ERROR_QUIET

@ -433,11 +433,15 @@
# Default path
set(_CPACK_IFW_PATHS
"${QTIFWDIR}"
"$ENV{QTIFWDIR}"
"${QTDIR}"
"$ENV{QTIFWDIR}")
foreach(_CPACK_IFW_PATH_VAR "QTIFWDIR" "QTDIR")
if(DEFINED ${_CPACK_IFW_PATH_VAR}
AND NOT "${${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
list(APPEND _CPACK_IFW_PATHS "${${_CPACK_IFW_PATH_VAR}}")
endif()
if(NOT "$ENV{${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
list(APPEND _CPACK_IFW_PATHS "$ENV{${_CPACK_IFW_PATH_VAR}}")
endif()
endforeach()
if(WIN32)
list(APPEND _CPACK_IFW_PATHS
"$ENV{HOMEDRIVE}/Qt"
@ -447,22 +451,44 @@ else()
"$ENV{HOME}/Qt"
"/opt/Qt")
endif()
list(REMOVE_DUPLICATES _CPACK_IFW_PATHS)
set(_CPACK_IFW_SUFFIXES
# Common
"bin"
set(_CPACK_IFW_PREFIXES
# QtSDK
"Tools/QtInstallerFramework/"
# Second branch
"QtIFW2.3.0/bin"
"QtIFW2.2.0/bin"
"QtIFW2.1.0/bin"
"QtIFW2.0.3/bin"
"QtIFW2.0.1/bin"
"QtIFW2.0.0/bin"
"QtIFW"
# First branch
"QtIFW-1.6.0/bin"
"QtIFW-1.5.0/bin"
"QtIFW-1.4.0/bin"
"QtIFW-1.3.0/bin")
"QtIFW-")
set(_CPACK_IFW_VERSIONS
"2.3"
"2.3.0"
"2.2"
"2.2.0"
"2.1"
"2.1.0"
"2.0"
"2.0.3"
"2.0.2"
"2.0.1"
"2.0.0"
"1.6"
"1.6.0"
"1.5"
"1.5.0"
"1.4"
"1.4.0"
"1.3"
"1.3.0")
set(_CPACK_IFW_SUFFIXES "bin")
foreach(_CPACK_IFW_PREFIX ${_CPACK_IFW_PREFIXES})
foreach(_CPACK_IFW_VERSION ${_CPACK_IFW_VERSIONS})
list(APPEND
_CPACK_IFW_SUFFIXES "${_CPACK_IFW_PREFIX}${_CPACK_IFW_VERSION}/bin")
endforeach()
endforeach()
# Look for 'binarycreator'

@ -45,7 +45,7 @@
#
# List of CPackRPM specific variables:
#
# .. variable:: CPACK_RPM_PACKAGE_COMPONENT
# .. variable:: CPACK_RPM_COMPONENT_INSTALL
#
# Enable component packaging for CPackRPM
#
@ -461,7 +461,7 @@
# May be used to embed a pre (un)installation script in the spec file.
# The referred script file (or both) will be read and directly
# put after the ``%pre`` or ``%preun`` section
# If :variable:`CPACK_RPM_PACKAGE_COMPONENT` is set to ON the (un)install
# If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the (un)install
# script for each component can be overridden with
# ``CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILE`` and
# ``CPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILE``.
@ -480,7 +480,7 @@
# May be used to embed a post (un)installation script in the spec file.
# The referred script file (or both) will be read and directly
# put after the ``%post`` or ``%postun`` section.
# If :variable:`CPACK_RPM_PACKAGE_COMPONENT` is set to ON the (un)install
# If :variable:`CPACK_RPM_COMPONENT_INSTALL` is set to ON the (un)install
# script for each component can be overridden with
# ``CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE`` and
# ``CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE``.

@ -9,20 +9,22 @@ set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <OBJECT> -MF <DEPFILE>")
if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
set(_std -Qstd)
set(_ext c)
else()
set(_std -std)
set(_ext gnu)
endif()
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
set(CMAKE_C11_STANDARD_COMPILE_OPTION "${_std}=c11")
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "${_std}=gnu11")
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "${_std}=${_ext}11")
endif()
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
set(CMAKE_C90_STANDARD_COMPILE_OPTION "${_std}=c89")
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "${_std}=gnu89")
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "${_std}=${_ext}89")
set(CMAKE_C99_STANDARD_COMPILE_OPTION "${_std}=c99")
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "${_std}=gnu99")
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "${_std}=${_ext}99")
endif()
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1)
@ -42,6 +44,7 @@ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1)
endif()
unset(_std)
unset(_ext)
macro(cmake_record_c_compile_features)
macro(_get_intel_c_features std_version list)

@ -1,6 +1,7 @@
# References:
# - https://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler
# - https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler
# - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0096r3.html
# FIXME: Intel C++ feature detection works only when simulating the GNU compiler.
# When simulating MSVC, Intel always sets __cplusplus to 199711L.
@ -8,9 +9,8 @@ if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
return()
endif()
# these are not implemented in any version at time of writing
#set(_cmake_feature_test_cxx_variable_templates "${Intel15_CXX14}")
#set(_cmake_feature_test_cxx_relaxed_constexpr "${Intel15_CXX14}")
set(_cmake_feature_test_cxx_variable_templates "__cpp_variable_templates >= 201304")
set(_cmake_feature_test_cxx_relaxed_constexpr "__cpp_constexpr >= 201304")
set(_cmake_oldestSupported "__INTEL_COMPILER >= 1210")
set(DETECT_CXX11 "((__cplusplus >= 201103L) || defined(__INTEL_CXX11_MODE__) || defined(__GXX_EXPERIMENTAL_CXX0X__))")

@ -9,8 +9,10 @@ set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <OBJECT> -MF <DEPFILE>")
if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
set(_std -Qstd)
set(_ext c++)
else()
set(_std -std)
set(_ext gnu++)
endif()
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.2)
@ -25,15 +27,15 @@ endif()
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "${_std}=c++11")
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "${_std}=gnu++11")
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "${_std}=${_ext}11")
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "${_std}=c++0x")
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "${_std}=gnu++0x")
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "${_std}=${_ext}0x")
endif()
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "${_std}=c++98")
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "${_std}=gnu++98")
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "${_std}=${_ext}98")
endif()
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
@ -50,6 +52,7 @@ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
endif()
unset(_std)
unset(_ext)
macro(cmake_record_cxx_compile_features)
macro(_get_intel_features std_version list)

@ -100,18 +100,10 @@ include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
set(HDF5_VALID_LANGUAGE_BINDINGS C CXX Fortran)
# Validate the list of find components.
set(HDF5_LANGUAGE_BINDINGS)
if(NOT HDF5_FIND_COMPONENTS)
get_property(__langs GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach(__lang IN LISTS __langs)
if(__lang MATCHES "^(C|CXX|Fortran)$")
list(APPEND HDF5_LANGUAGE_BINDINGS ${__lang})
set(HDF5_FIND_REQUIRED_${__lang} True)
endif()
endforeach()
set(FIND_HL ON)
set(HDF5_FIND_REQUIRED_HL True)
set(HDF5_LANGUAGE_BINDINGS "C")
else()
set(HDF5_LANGUAGE_BINDINGS)
# add the extra specified components, ensuring that they are valid.
set(FIND_HL OFF)
foreach(component IN LISTS HDF5_FIND_COMPONENTS)

@ -225,6 +225,7 @@ if(NOT MATLAB_ADDITIONAL_VERSIONS)
endif()
set(MATLAB_VERSIONS_MAPPING
"R2016b=9.1"
"R2016a=9.0"
"R2015b=8.6"
"R2015a=8.5"
@ -793,7 +794,7 @@ function(matlab_add_unit_test)
"-Dworking_directory=${${prefix}_WORKING_DIRECTORY}"
"-DMatlab_PROGRAM=${Matlab_MAIN_PROGRAM}"
"-Dno_unittest_framework=${${prefix}_NO_UNITTEST_FRAMEWORK}"
"-DMatlab_ADDITIONNAL_STARTUP_OPTIONS=${${prefix}_MATLAB_ADDITIONAL_STARTUP_OPTIONS}"
"-DMatlab_ADDITIONAL_STARTUP_OPTIONS=${${prefix}_MATLAB_ADDITIONAL_STARTUP_OPTIONS}"
"-Dunittest_file_to_run=${${prefix}_UNITTEST_FILE}"
"-Dcustom_Matlab_test_command=${${prefix}_CUSTOM_TEST_COMMAND}"
"-Dcmd_to_run_before_test=${${prefix}_UNITTEST_PRECOMMAND}"

@ -10,14 +10,14 @@
# -Dadditional_paths=""
# -Dno_unittest_framework=""
# -DMatlab_PROGRAM=matlab_exe_location
# -DMatlab_ADDITIONNAL_STARTUP_OPTIONS=""
# -DMatlab_ADDITIONAL_STARTUP_OPTIONS=""
# -Dtest_name=name_of_the_test
# -Dcustom_Matlab_test_command=""
# -Dcmd_to_run_before_test=""
# -Dunittest_file_to_run
# -P FindMatlab_TestsRedirect.cmake
set(Matlab_UNIT_TESTS_CMD -nosplash -nodesktop -nodisplay ${Matlab_ADDITIONNAL_STARTUP_OPTIONS})
set(Matlab_UNIT_TESTS_CMD -nosplash -nodesktop -nodisplay ${Matlab_ADDITIONAL_STARTUP_OPTIONS})
if(WIN32)
set(Matlab_UNIT_TESTS_CMD ${Matlab_UNIT_TESTS_CMD} -wait)
endif()

@ -107,6 +107,7 @@ set(_ANDROID_ABI_INIT_CFLAGS "")
set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "")
set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "")
set(_ANDROID_ABI_INIT_LDFLAGS "")
set(_ANDROID_ABI_INIT_EXE_LDFLAGS "")
macro(__android_compiler_common lang)
if(_ANDROID_ABI_INIT_CFLAGS)
@ -125,6 +126,9 @@ macro(__android_compiler_common lang)
string(APPEND CMAKE_${t}_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_LDFLAGS}")
endforeach()
endif()
if(_ANDROID_ABI_INIT_EXE_LDFLAGS)
string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${_ANDROID_ABI_INIT_EXE_LDFLAGS}")
endif()
if(DEFINED _ANDROID_STL_EXCEPTIONS)
if(_ANDROID_STL_EXCEPTIONS)

@ -1,8 +1,7 @@
# <ndk>/build/core/toolchains/aarch64-linux-android-clang/setup.mk
set(_ANDROID_ABI_CLANG_TARGET "aarch64-none-linux-android")
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fpic"
)
# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a
set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1)
include(Platform/Android/abi-common-Clang)

@ -1,6 +1,6 @@
# <ndk>/build/core/toolchains/aarch64-linux-android-4.9/setup.mk
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fpic"
)
# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a
set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1)
include(Platform/Android/abi-common-GNU)

@ -14,7 +14,6 @@ endif()
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -msoft-float"
" -mtune=xscale"
" -fpic"
)
include(Platform/Android/abi-common-Clang)

@ -12,7 +12,6 @@ endif()
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -msoft-float"
" -mtune=xscale"
" -fpic"
)
include(Platform/Android/abi-common-GNU)

@ -13,7 +13,6 @@ endif()
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -mfloat-abi=softfp"
" -fpic"
)
include(Platform/Android/abi-common-Clang)

@ -11,7 +11,6 @@ endif()
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -mfloat-abi=softfp"
" -fpic"
)
include(Platform/Android/abi-common-GNU)

@ -23,7 +23,6 @@ string(APPEND _ANDROID_ABI_INIT_LDFLAGS
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -mfloat-abi=softfp"
" -fpic"
)
include(Platform/Android/abi-common-Clang)

@ -17,7 +17,6 @@ endif()
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -mfloat-abi=softfp"
" -fpic"
)
string(APPEND _ANDROID_ABI_INIT_LDFLAGS

@ -2,3 +2,18 @@ string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -funwind-tables"
" -no-canonical-prefixes"
)
if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE
AND NOT CMAKE_SYSTEM_VERSION VERSION_LESS 16)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
if(CMAKE_POSITION_INDEPENDENT_CODE)
string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -fPIE -pie")
endif()
string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,--gc-sections")
if(NOT _ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc)
string(APPEND _ANDROID_ABI_INIT_EXE_LDFLAGS " -Wl,-z,nocopyreloc")
endif()

@ -1,8 +1,4 @@
# <ndk>/build/core/toolchains/mipsel-linux-android-clang/setup.mk
set(_ANDROID_ABI_CLANG_TARGET "mipsel-none-linux-android")
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fpic"
)
include(Platform/Android/abi-common-Clang)

@ -1,6 +1,3 @@
# <ndk>/build/core/toolchains/mipsel-linux-android-4.9/setup.mk
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fpic"
)
include(Platform/Android/abi-common-GNU)

@ -1,8 +1,4 @@
# <ndk>/build/core/toolchains/mips64el-linux-android-clang/setup.mk
set(_ANDROID_ABI_CLANG_TARGET "mips64el-none-linux-android")
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fpic"
)
include(Platform/Android/abi-common-Clang)

@ -1,6 +1,3 @@
# <ndk>/build/core/toolchains/mips64el-linux-android-4.9/setup.mk
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fpic"
)
include(Platform/Android/abi-common-GNU)

@ -1,8 +1,4 @@
# <ndk>/build/core/toolchains/x86-clang/setup.mk
set(_ANDROID_ABI_CLANG_TARGET "i686-none-linux-android")
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fPIC"
)
include(Platform/Android/abi-common-Clang)

@ -1,8 +1,4 @@
# <ndk>/build/core/toolchains/x86_64-clang/setup.mk
set(_ANDROID_ABI_CLANG_TARGET "x86_64-none-linux-android")
string(APPEND _ANDROID_ABI_INIT_CFLAGS
" -fPIC"
)
include(Platform/Android/abi-common-Clang)

@ -3,4 +3,6 @@ macro(__android_stl lang)
__android_stl_cxx(${lang} libc++_static.a)
__android_stl_lib(${lang} "${CMAKE_ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${CMAKE_ANDROID_ARCH_ABI}/libc++abi.a" 0)
__android_stl_lib(${lang} "${CMAKE_ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${CMAKE_ANDROID_ARCH_ABI}/libandroid_support.a" 0)
__android_stl_lib(${lang} "${CMAKE_ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${CMAKE_ANDROID_ARCH_ABI}/libunwind.a" 0)
string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -latomic") # provided by toolchain
endmacro()

@ -113,7 +113,6 @@ set(CMAKE_OSX_SYSROOT "${_CMAKE_OSX_SYSROOT_DEFAULT}" CACHE ${_CMAKE_OSX_SYSROOT
"The product will be built against the headers and libraries located inside the indicated SDK.")
# Transform the cached value to something we can use.
set(_CMAKE_OSX_SYSROOT_ORIG "${CMAKE_OSX_SYSROOT}")
set(_CMAKE_OSX_SYSROOT_PATH "")
if(CMAKE_OSX_SYSROOT)
if("x${CMAKE_OSX_SYSROOT}" MATCHES "/")
@ -122,13 +121,10 @@ if(CMAKE_OSX_SYSROOT)
message(WARNING "Ignoring CMAKE_OSX_SYSROOT value:\n ${CMAKE_OSX_SYSROOT}\n"
"because the directory does not exist.")
set(CMAKE_OSX_SYSROOT "")
set(_CMAKE_OSX_SYSROOT_ORIG "")
endif()
set(_CMAKE_OSX_SYSROOT_PATH "${CMAKE_OSX_SYSROOT}")
endif()
if(CMAKE_OSX_SYSROOT)
# Transform the (maybe unversioned) sysroot into a versioned path.
else()
# Transform the sdk name into a path.
execute_process(
COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version Path
OUTPUT_VARIABLE _stdout

@ -64,30 +64,6 @@ if(NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
mark_as_advanced(CMAKE_INSTALL_NAME_TOOL)
endif()
# Make sure the combination of SDK and Deployment Target are allowed
if(CMAKE_OSX_DEPLOYMENT_TARGET)
if("${_CMAKE_OSX_SYSROOT_PATH}" MATCHES "/MacOSX([0-9]+\\.[0-9]+)[^/]*\\.sdk")
set(_sdk_ver "${CMAKE_MATCH_1}")
elseif("${_CMAKE_OSX_SYSROOT_ORIG}" MATCHES "^macosx([0-9]+\\.[0-9]+)$")
set(_sdk_ver "${CMAKE_MATCH_1}")
elseif("${_CMAKE_OSX_SYSROOT_ORIG}" STREQUAL "/")
set(_sdk_ver "${_CURRENT_OSX_VERSION}")
else()
message(FATAL_ERROR
"CMAKE_OSX_DEPLOYMENT_TARGET is '${CMAKE_OSX_DEPLOYMENT_TARGET}' "
"but CMAKE_OSX_SYSROOT:\n \"${_CMAKE_OSX_SYSROOT_ORIG}\"\n"
"is not set to a MacOSX SDK with a recognized version. "
"Either set CMAKE_OSX_SYSROOT to a valid SDK or set "
"CMAKE_OSX_DEPLOYMENT_TARGET to empty.")
endif()
if(CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER "${_sdk_ver}")
message(FATAL_ERROR
"CMAKE_OSX_DEPLOYMENT_TARGET (${CMAKE_OSX_DEPLOYMENT_TARGET}) "
"is greater than CMAKE_OSX_SYSROOT SDK:\n ${_CMAKE_OSX_SYSROOT_ORIG}\n"
"Please set CMAKE_OSX_DEPLOYMENT_TARGET to ${_sdk_ver} or lower.")
endif()
endif()
# Enable shared library versioning.
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name")

@ -2,4 +2,4 @@
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 7)
set(CMake_VERSION_PATCH 0)
set(CMake_VERSION_RC 2)
set(CMake_VERSION_RC 3)

@ -843,20 +843,6 @@ std::string cmGlobalNinjaGenerator::ConvertToNinjaPath(const std::string& path)
return convPath;
}
std::string cmGlobalNinjaGenerator::ConvertToNinjaFolderRule(
const std::string& path)
{
cmLocalNinjaGenerator* ng =
static_cast<cmLocalNinjaGenerator*>(this->LocalGenerators[0]);
std::string convPath = ng->ConvertToRelativePath(
this->LocalGenerators[0]->GetState()->GetSourceDirectory(), path + "/all");
convPath = this->NinjaOutputPath(convPath);
#ifdef _WIN32
std::replace(convPath.begin(), convPath.end(), '/', '\\');
#endif
return convPath;
}
void cmGlobalNinjaGenerator::AddCXXCompileCommand(
const std::string& commandLine, const std::string& sourceFile)
{
@ -1083,11 +1069,11 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
this->LocalGenerators.begin();
lgi != this->LocalGenerators.end(); ++lgi) {
cmLocalGenerator const* lg = *lgi;
const std::string currentSourceFolder(
lg->GetStateSnapshot().GetDirectory().GetCurrentSource());
const std::string currentBinaryFolder(
lg->GetStateSnapshot().GetDirectory().GetCurrentBinary());
// The directory-level rule should depend on the target-level rules
// for all targets in the directory.
targetsPerFolder[currentSourceFolder] = cmNinjaDeps();
targetsPerFolder[currentBinaryFolder] = cmNinjaDeps();
for (std::vector<cmGeneratorTarget*>::const_iterator ti =
lg->GetGeneratorTargets().begin();
ti != lg->GetGeneratorTargets().end(); ++ti) {
@ -1098,7 +1084,7 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
type == cmState::MODULE_LIBRARY ||
type == cmState::OBJECT_LIBRARY || type == cmState::UTILITY) &&
!gt->GetPropertyAsBool("EXCLUDE_FROM_ALL")) {
targetsPerFolder[currentSourceFolder].push_back(gt->GetName());
targetsPerFolder[currentBinaryFolder].push_back(gt->GetName());
}
}
@ -1109,28 +1095,30 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
for (std::vector<cmState::Snapshot>::const_iterator stateIt =
children.begin();
stateIt != children.end(); ++stateIt) {
targetsPerFolder[currentSourceFolder].push_back(
this->ConvertToNinjaFolderRule(
stateIt->GetDirectory().GetCurrentSource()));
std::string const currentBinaryDir =
stateIt->GetDirectory().GetCurrentBinary();
targetsPerFolder[currentBinaryFolder].push_back(
this->ConvertToNinjaPath(currentBinaryDir + "/all"));
}
}
std::string const rootSourceDir =
this->LocalGenerators[0]->GetSourceDirectory();
std::string const rootBinaryDir =
this->LocalGenerators[0]->GetBinaryDirectory();
for (std::map<std::string, cmNinjaDeps>::const_iterator it =
targetsPerFolder.begin();
it != targetsPerFolder.end(); ++it) {
cmGlobalNinjaGenerator::WriteDivider(os);
std::string const& currentSourceDir = it->first;
std::string const& currentBinaryDir = it->first;
// Do not generate a rule for the root source dir.
if (rootSourceDir.length() >= currentSourceDir.length()) {
// Do not generate a rule for the root binary dir.
if (rootBinaryDir.length() >= currentBinaryDir.length()) {
continue;
}
std::string const comment = "Folder: " + currentSourceDir;
std::string const comment = "Folder: " + currentBinaryDir;
cmNinjaDeps output(1);
output.push_back(this->ConvertToNinjaFolderRule(currentSourceDir));
output.push_back(this->ConvertToNinjaPath(currentBinaryDir + "/all"));
this->WritePhonyBuild(os, comment, output, it->second);
}

@ -234,7 +234,6 @@ public:
}
std::string ConvertToNinjaPath(const std::string& path);
std::string ConvertToNinjaFolderRule(const std::string& path);
struct MapToNinjaPathImpl
{

@ -62,6 +62,7 @@ static const std::string kMESSAGE_KEY = "message";
static const std::string kMINOR_KEY = "minor";
static const std::string kNAME_KEY = "name";
static const std::string kPATH_KEY = "path";
static const std::string kPLATFORM_KEY = "platform";
static const std::string kPROGRESS_CURRENT_KEY = "progressCurrent";
static const std::string kPROGRESS_MAXIMUM_KEY = "progressMaximum";
static const std::string kPROGRESS_MESSAGE_KEY = "progressMessage";
@ -77,6 +78,7 @@ static const std::string kSUPPORTED_PROTOCOL_VERSIONS =
static const std::string kSYSROOT_KEY = "sysroot";
static const std::string kTARGETS_KEY = "targets";
static const std::string kTITLE_KEY = "title";
static const std::string kTOOLSET_KEY = "toolset";
static const std::string kTRACE_EXPAND_KEY = "traceExpand";
static const std::string kTRACE_KEY = "trace";
static const std::string kTYPE_KEY = "type";
@ -87,8 +89,8 @@ static const std::string kWARN_UNUSED_KEY = "warnUnused";
static const std::string kWATCHED_DIRECTORIES_KEY = "watchedDirectories";
static const std::string kWATCHED_FILES_KEY = "watchedFiles";
static const std::string kSTART_MAGIC = "[== CMake Server ==[";
static const std::string kEND_MAGIC = "]== CMake Server ==]";
static const std::string kSTART_MAGIC = "[== \"CMake Server\" ==[";
static const std::string kEND_MAGIC = "]== \"CMake Server\" ==]";
static const std::string kRENAME_PROPERTY_VALUE = "rename";
static const std::string kCHANGE_PROPERTY_VALUE = "change";

@ -244,6 +244,30 @@ std::pair<int, int> cmServerProtocol1_0::ProtocolVersion() const
return std::make_pair(1, 0);
}
static void setErrorMessage(std::string* errorMessage, const std::string& text)
{
if (errorMessage) {
*errorMessage = text;
}
}
static bool testValue(cmState* state, const std::string& key,
std::string& value, const std::string& keyDescription,
std::string* errorMessage)
{
const std::string cachedValue = std::string(state->GetCacheEntryValue(key));
if (!cachedValue.empty() && !value.empty() && cachedValue != value) {
setErrorMessage(errorMessage, std::string("\"") + key +
"\" is set but incompatible with configured " +
keyDescription + " value.");
return false;
}
if (value.empty()) {
value = cachedValue;
}
return true;
}
bool cmServerProtocol1_0::DoActivate(const cmServerRequest& request,
std::string* errorMessage)
{
@ -252,21 +276,20 @@ bool cmServerProtocol1_0::DoActivate(const cmServerRequest& request,
request.Data[kBUILD_DIRECTORY_KEY].asString();
std::string generator = request.Data[kGENERATOR_KEY].asString();
std::string extraGenerator = request.Data[kEXTRA_GENERATOR_KEY].asString();
std::string toolset = request.Data[kTOOLSET_KEY].asString();
std::string platform = request.Data[kPLATFORM_KEY].asString();
if (buildDirectory.empty()) {
if (errorMessage) {
*errorMessage =
std::string("\"") + kBUILD_DIRECTORY_KEY + "\" is missing.";
}
setErrorMessage(errorMessage, std::string("\"") + kBUILD_DIRECTORY_KEY +
"\" is missing.");
return false;
}
cmake* cm = CMakeInstance();
if (cmSystemTools::PathExists(buildDirectory)) {
if (!cmSystemTools::FileIsDirectory(buildDirectory)) {
if (errorMessage) {
*errorMessage = std::string("\"") + kBUILD_DIRECTORY_KEY +
"\" exists but is not a directory.";
}
setErrorMessage(errorMessage, std::string("\"") + kBUILD_DIRECTORY_KEY +
"\" exists but is not a directory.");
return false;
}
@ -275,77 +298,86 @@ bool cmServerProtocol1_0::DoActivate(const cmServerRequest& request,
cmState* state = cm->GetState();
// Check generator:
const std::string cachedGenerator =
std::string(state->GetCacheEntryValue("CMAKE_GENERATOR"));
if (cachedGenerator.empty() && generator.empty()) {
if (errorMessage) {
*errorMessage =
std::string("\"") + kGENERATOR_KEY + "\" is required but unset.";
}
return false;
}
if (generator.empty()) {
generator = cachedGenerator;
}
if (generator != cachedGenerator) {
if (errorMessage) {
*errorMessage = std::string("\"") + kGENERATOR_KEY +
"\" set but incompatible with configured generator.";
}
if (!testValue(state, "CMAKE_GENERATOR", generator, "generator",
errorMessage)) {
return false;
}
// check extra generator:
const std::string cachedExtraGenerator =
std::string(state->GetCacheEntryValue("CMAKE_EXTRA_GENERATOR"));
if (!cachedExtraGenerator.empty() && !extraGenerator.empty() &&
cachedExtraGenerator != extraGenerator) {
if (errorMessage) {
*errorMessage = std::string("\"") + kEXTRA_GENERATOR_KEY +
"\" is set but incompatible with configured extra generator.";
}
if (!testValue(state, "CMAKE_EXTRA_GENERATOR", extraGenerator,
"extra generator", errorMessage)) {
return false;
}
if (extraGenerator.empty()) {
extraGenerator = cachedExtraGenerator;
}
// check sourcedir:
const std::string cachedSourceDirectory =
std::string(state->GetCacheEntryValue("CMAKE_HOME_DIRECTORY"));
if (!cachedSourceDirectory.empty() && !sourceDirectory.empty() &&
cachedSourceDirectory != sourceDirectory) {
if (errorMessage) {
*errorMessage = std::string("\"") + kSOURCE_DIRECTORY_KEY +
"\" is set but incompatible with configured source directory.";
if (!testValue(state, "CMAKE_HOME_DIRECTORY", sourceDirectory,
"source directory", errorMessage)) {
return false;
}
// check toolset:
if (!testValue(state, "CMAKE_GENERATOR_TOOLSET", toolset, "toolset",
errorMessage)) {
return false;
}
if (sourceDirectory.empty()) {
sourceDirectory = cachedSourceDirectory;
// check platform:
if (!testValue(state, "CMAKE_GENERATOR_PLATFORM", platform, "platform",
errorMessage)) {
return false;
}
}
}
if (sourceDirectory.empty()) {
if (errorMessage) {
*errorMessage = std::string("\"") + kSOURCE_DIRECTORY_KEY +
"\" is unset but required.";
}
setErrorMessage(errorMessage, std::string("\"") + kSOURCE_DIRECTORY_KEY +
"\" is unset but required.");
return false;
}
if (!cmSystemTools::FileIsDirectory(sourceDirectory)) {
if (errorMessage) {
*errorMessage =
std::string("\"") + kSOURCE_DIRECTORY_KEY + "\" is not a directory.";
}
setErrorMessage(errorMessage, std::string("\"") + kSOURCE_DIRECTORY_KEY +
"\" is not a directory.");
return false;
}
if (generator.empty()) {
if (errorMessage) {
*errorMessage =
std::string("\"") + kGENERATOR_KEY + "\" is unset but required.";
setErrorMessage(errorMessage, std::string("\"") + kGENERATOR_KEY +
"\" is unset but required.");
return false;
}
std::vector<cmake::GeneratorInfo> generators;
cm->GetRegisteredGenerators(generators);
auto baseIt = std::find_if(generators.begin(), generators.end(),
[&generator](const cmake::GeneratorInfo& info) {
return info.name == generator;
});
if (baseIt == generators.end()) {
setErrorMessage(errorMessage, std::string("Generator \"") + generator +
"\" not supported.");
return false;
}
auto extraIt = std::find_if(
generators.begin(), generators.end(),
[&generator, &extraGenerator](const cmake::GeneratorInfo& info) {
return info.baseName == generator && info.extraName == extraGenerator;
});
if (extraIt == generators.end()) {
setErrorMessage(errorMessage,
std::string("The combination of generator \"" + generator +
"\" and extra generator \"" + extraGenerator +
"\" is not supported."));
return false;
}
if (!extraIt->supportsToolset && !toolset.empty()) {
setErrorMessage(errorMessage,
std::string("Toolset was provided but is not supported by "
"the requested generator."));
return false;
}
if (!extraIt->supportsPlatform && !platform.empty()) {
setErrorMessage(errorMessage,
std::string("Platform was provided but is not supported "
"by the requested generator."));
return false;
}
@ -353,13 +385,15 @@ bool cmServerProtocol1_0::DoActivate(const cmServerRequest& request,
cmExternalMakefileProjectGenerator::CreateFullGeneratorName(
generator, extraGenerator);
cm->SetGeneratorToolset(toolset);
cm->SetGeneratorPlatform(platform);
cmGlobalGenerator* gg = cm->CreateGlobalGenerator(fullGeneratorName);
if (!gg) {
if (errorMessage) {
*errorMessage =
setErrorMessage(
errorMessage,
std::string("Could not set up the requested combination of \"") +
kGENERATOR_KEY + "\" and \"" + kEXTRA_GENERATOR_KEY + "\"";
}
kGENERATOR_KEY + "\" and \"" + kEXTRA_GENERATOR_KEY + "\"");
return false;
}

@ -174,11 +174,6 @@ foreach(ndk IN LISTS TEST_ANDROID_NDK)
continue()
endif()
# Skip combinations that seem to be broken.
if("${stl};${abi}" MATCHES [[^c\+\+_static;armeabi]])
continue()
endif()
# Run the tests for this combination.
if("${abi}" STREQUAL "armeabi")
run_Android(ndk-armeabi-thumb) # default: -DCMAKE_ANDROID_ARCH_ABI=armeabi -DCMAKE_ANDROID_ARM_MODE=0

@ -45,14 +45,23 @@ function(run_SubDir)
set(SubDir_all [[SubDir\all]])
set(SubDir_test [[SubDir\test]])
set(SubDir_install [[SubDir\install]])
set(SubDirBinary_test [[SubDirBinary\test]])
set(SubDirBinary_all [[SubDirBinary\all]])
set(SubDirBinary_install [[SubDirBinary\install]])
else()
set(SubDir_all [[SubDir/all]])
set(SubDir_test [[SubDir/test]])
set(SubDir_install [[SubDir/install]])
set(SubDirBinary_all [[SubDirBinary/all]])
set(SubDirBinary_test [[SubDirBinary/test]])
set(SubDirBinary_install [[SubDirBinary/install]])
endif()
run_cmake_command(SubDir-build ${CMAKE_COMMAND} --build . --target ${SubDir_all})
run_cmake_command(SubDir-test ${CMAKE_COMMAND} --build . --target ${SubDir_test})
run_cmake_command(SubDir-install ${CMAKE_COMMAND} --build . --target ${SubDir_install})
run_cmake_command(SubDirBinary-build ${CMAKE_COMMAND} --build . --target ${SubDirBinary_all})
run_cmake_command(SubDirBinary-test ${CMAKE_COMMAND} --build . --target ${SubDirBinary_test})
run_cmake_command(SubDirBinary-install ${CMAKE_COMMAND} --build . --target ${SubDirBinary_install})
endfunction()
run_SubDir()

@ -1,5 +1,6 @@
include(CTest)
add_subdirectory(SubDir)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/SubDirSource SubDirBinary)
add_custom_target(TopFail ALL COMMAND does_not_exist)
add_test(NAME TopTest COMMAND ${CMAKE_COMMAND} -E echo "Running TopTest")
install(CODE [[

@ -0,0 +1 @@
1/1 Test #1: SubDirSourceTest

@ -0,0 +1,6 @@
add_custom_target(SubDirSourceFail COMMAND does_not_exist)
add_custom_target(SubDirSourceInAll ALL COMMAND ${CMAKE_COMMAND} -E echo "Building SubDirSourceInAll")
add_test(NAME SubDirSourceTest COMMAND ${CMAKE_COMMAND} -E echo "Running SubDirSourceTest")
install(CODE [[
message(STATUS "Installing SubDirSource")
]])

@ -46,11 +46,11 @@ def waitForRawMessage(cmakeCommand):
stdoutdata += stdoutdataLine.decode('utf-8')
else:
break
begin = stdoutdata.find("[== CMake Server ==[\n")
end = stdoutdata.find("]== CMake Server ==]")
begin = stdoutdata.find('[== "CMake Server" ==[\n')
end = stdoutdata.find(']== "CMake Server" ==]')
if (begin != -1 and end != -1):
begin += len("[== CMake Server ==[\n")
begin += len('[== "CMake Server" ==[\n')
payload = stdoutdata[begin:end]
if print_communication:
print("\nSERVER>", json.loads(payload), "\n")
@ -59,9 +59,9 @@ def waitForRawMessage(cmakeCommand):
def writeRawData(cmakeCommand, content):
writeRawData.counter += 1
payload = """
[== CMake Server ==[
[== "CMake Server" ==[
%s
]== CMake Server ==]
]== "CMake Server" ==]
""" % content
rn = ( writeRawData.counter % 2 ) == 0

Binary file not shown.

@ -59,10 +59,10 @@
{ "recv": {"cookie":"zimtstern","inReplyTo":"handshake","type":"error","errorMessage":"Failed to activate protocol version: \"generator\" is unset but required."} },
{ "send": {"cookie":"zimtstern","type": "handshake","protocolVersion":{"major":1},"sourceDirectory":".","buildDirectory":"/tmp/build","generator":"XXXX","extraGenerator":"CodeBlocks"} },
{ "recv": {"cookie":"zimtstern","inReplyTo":"handshake","type":"error","errorMessage":"Failed to activate protocol version: Could not set up the requested combination of \"generator\" and \"extraGenerator\""} },
{ "recv": {"cookie":"zimtstern","inReplyTo":"handshake","type":"error","errorMessage":"Failed to activate protocol version: Generator \"XXXX\" not supported."} },
{ "send": {"cookie":"zimtstern","type": "handshake","protocolVersion":{"major":1},"sourceDirectory":".","buildDirectory":"/tmp/build","generator":"Ninja","extraGenerator":"XXXX"} },
{ "recv": {"cookie":"zimtstern","inReplyTo":"handshake","type":"error","errorMessage":"Failed to activate protocol version: Could not set up the requested combination of \"generator\" and \"extraGenerator\""} },
{ "recv": {"cookie":"zimtstern","inReplyTo":"handshake","type":"error","errorMessage":"Failed to activate protocol version: The combination of generator \"Ninja\" and extra generator \"XXXX\" is not supported."} },
{ "send": {"cookie":"zimtstern","type": "handshake","protocolVersion":{"major":1},"sourceDirectory":".","buildDirectory":"/tmp/build","generator":"Ninja","extraGenerator":"CodeBlocks"} },
{ "recv": {"cookie":"zimtstern","inReplyTo":"handshake","type":"reply"} },

Loading…
Cancel
Save