Expect cxx_variadic_templates to implement N2555.
N2555 is essentially a bugfix and predates most compiler releases which
aimed to experimentally support variadic templates.
Record the availability of this feature for GNU 4.8 on (UNIX AND
NOT APPLE) only. In the future, availability can be recorded for
earlier GNU, for other platforms and for other compilers. Initially
the affected configurations are as restricted as possible to allow
for easy testing while extending the features vector in only one
dimension.
The error message when using the set_property API directly is not
very good, but follow up commits will provide origin debugging of
the property and a target_compile_features command which will
provide a configure-time backtrace when possible.
Add a feature test using the compiler macros and the preprocessor to
determine available features.
Add a CMAKE_CXX_COMPILE_FEATURES variable which contains all features
known to the loaded compiler, and a CMAKE_CXX_KNOWN_FEATURES variable
containing all features known to CMake. Add language standard specific
variables for internal use to determine the standard-specific compile
flags to use.
This will be extended to other languages in the future. Follow-up
commits will add features which will be recorded by the feature test.
QT4_CREATE_MOC_COMMAND is given a moc_flags argument that contains the
COMPILE_DEFINITIONS and a potentially large list of include directories.
Since it is a macro, the ${moc_flags} reference is replaced with this
content and sent through cmMakefile::ExpandVariablesInString (EVIS).
Since commit v3.0.0-rc1~138^2 (Qt4: Use generator expression in
COMPILE_DEFINITIONS, 2014-01-13) the COMPILE_DEFINITIONS value contains
a '$' so the EVIS fast-path is no longer used. Instead the full
cmCommandArgumentParserHelper is now used on the large input, which is
very slow (since it was originally created for hand-written code).
Change QT4_CREATE_MOC_COMMAND to a function instead of a macro to avoid
passing large content through EVIS. This makes it significantly faster.
* Remove Watcom linker caseexact options already defined in system
definition.
* Use win_dll system for SHARED_LIBRARY and SHARED_MODULE.
* Use explicit target definition -bt=.. option for proper initialization
of compiler Windows environment (predefined macros)
* Reorganize compiler options to global options and configuration
specific options
* Use option to optimize out stack checking code for release version
When adding a new external project, the "all" target will depend on
this.
This option allows one to add an external project will not be executed
when the "all" target is executed.
The reason for this is that an external project could be useful, for
example, only for running tests, and therefore not necessary during
the build.
When adding a new step using ExternalProject_Add_Step, the main target
will depend on this step.
This option allows one to add a step that will not be executed when the
main target for the external project is executed.
ExternalProject handles git remote branches by commit hash. Due to
this, the git repository ends in detached states, and local commits
are discarded.
Use "git rebase" for remote branches instead of "git checkout". If
there are uncommitted changes, use "git stash save/pop" to save changes
and restore them after the rebase. If any of these operations fails,
try to restore the original status and exit with a fatal error, asking
the user to resolve the conflicts manually.
This also makes the behaviour of ExternalProject using git more similar
to the svn version, and probably more likely to what the user expects
by setting GIT_TAG to a branch.
Previously the GTEST_ADD_TESTS function would miss parameterized tests
because it only considered TEST and TEST_F. Add TEST_P to the list of
considered tests and will run all instantiations of this parameterized
test together.
This is perhaps not as correct as searching for all instantiations of
this parameterized test and separating those into separate runs, but
this will at least run tests that were previously missing.
For reference: https://code.google.com/p/googletest/wiki/Documentation
Fixes issues #14812 and #14813 where find_package(OpenMP QUIET) and
find_package(Qt4 QUIET) would still print out messages when calling
check*() functions.
Also a partial fix for #14445 where building CMake
(without cmake-gui) when Qt5 is installed and Qt4 is not installed
and warnings come out of FindQt4.cmake.
Drop the CMAKE_NO_QUOTED_OBJECTS internal variable from the Makefile
generators. The underlying problem is with the Watcom linker, not with
WMake. The Watcom linker wants object files to be single-quoted. Add
<LINK-RULE>_USE_WATCOM_QUOTE platform information variables to tell the
generators to use Watcom-style single quotes for object files on link
lines.
On Windows, Watcom uses the GetCommandLine API to get the original
command-line string and do custom parsing that expects single quotes.
On POSIX systems, Watcom approximates the original command line by
joining all argv[] entries separated by a single space. Therefore we
need to double-quote the single-quoted arguments so that the shell does
not consume them and they are available for the parser to see.
693f8bf3 FindThreads: simplify checking for SunOS
858ce31f FindThreads: avoid useless checks if a thread library is already found
fdf7bd27 FindThreads: replace MATCHES with STREQUAL
Since commit v2.8.12~327^2 (Qt4Macros: Allow specifying a TARGET
in invokations of macros., 2013-02-26), a parameters file is
populated with moc arguments at generate-time.
When the compile definitions or include directories change, the
parameters file is updated but moc is not re-run in response.
Fix that by making the moc invocation depend on the parameters file.
Reported-At: https://bugreports.qt-project.org/browse/QTBUG-36970
Objective C sources should be compiled with the C compiler, not C++.
The Xcode generator correctly classifies ".m" sources already. The
cmSystemTools::GetFileFormat method was fixed by commit v2.8.0~1782 (fix
for 7045, use gcc for .m, 2008-08-19) but it is not used by any of the
generator since commit v2.4.0~2819 (major changes to support addition of
languages, 2004-09-22).
Fix the CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS table entries so that
cmGlobalGenerator::GetLanguageFromExtension tells the Makefile, Ninja,
and VS IDE generators to compile ".m" sources as C. This makes behavior
consistent on all generators.
Signed-off-by: Tim Blechmann <tim@klingt.org>
64c2342a Watcom: Enable 'WMake Makefiles' generator on Linux
5d9aa66c Watcom: Introduce OpenWatcom compiler id and fix compiler version
9292d3b8 Watcom: Detect compiler target architecture and platform
fbc883c9 Watcom: Add one blank line to Makefile for better readability
Distinguish "Open Watcom" from old "Watcom" by introducing a new
"OpenWatcom" compiler id. The __WATCOMC__ format is "VVRP" for Watcom
and "VVRP + 1100" for Open Watcom.
Use CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH, and CMAKE_APPBUNDLE_PATH
cache and environment variables to extend PKG_CONFIG_PATH before calling
pkg-config.
In each of the path in these variables it searches for lib/pkgconfig.
Then, depending on the system, it searches for
lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig (debian) or for
lib64/pkgconfig (other 64 bit unixes). If any of these path is found,
it is appended to the PKG_CONFIG_PATH enviromnent variable.
Add two new arguments to the pkg_check_module and pkg_search_module
macro, NO_CMAKE_PATH and NO_CMAKE_ENVIRONMENT_PATH. The new signature
are therefore:
pkg_check_modules(<PREFIX> [REQUIRED] [QUIET]
[NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH]
<MODULE> [<MODULE>]*)
pkg_search_module(<PREFIX> [REQUIRED] [QUIET]
[NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH]
<MODULE> [<MODULE>]*)
By default, if CMAKE_MINIMUM_REQUIRED_VERSION is 3.1 or later (in
order to keep compatibility with the previous behavior), or if
PKG_CONFIG_USE_CMAKE_PREFIX_PATH is set, the CMAKE_PREFIX_PATH,
CMAKE_FRAMEWORK_PATH, and CMAKE_APPBUNDLE_PATH cache and environment
variables will be added to pkgconfig search path.
The NO_CMAKE_PATH and NO_CMAKE_ENVIRONMENT_PATH arguments disable this
behavior for the cache variables and the environment variables,
respectively, similarly to the find_package() command.
This example now works without need to enable C language:
cmake_minimum_required(VERSION x.x.x)
project(foo CXX)
include(CheckTypeSize)
check_type_size("short" SIZEOF_SHORT LANGUAGE CXX)
Fixes#14056
Add a CPACK_DEBIAN_COMPRESSION_TYPE option to set the compression type.
Default to 'gzip' to preserve existing behavior. Use "cmake -E tar"
for 'gzip', 'bzip2', and 'none'. Use system "tar" for 'lzma' and 'xz'.
If
find_package(PythonLibs)
find_package(PythonInterp)
is called, help PythonInterp to get a version of PYTHON_EXECUTABLE
consistent with the library versions found by PythonLibs.