Commit Graph

4893 Commits

Author SHA1 Message Date
Stephen Kelly f97bf4370c Features: Add cxx_auto_type.
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.
2014-04-07 18:11:18 +02:00
Stephen Kelly faeddf64f2 project: Add infrastructure for recording CXX compiler features
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.
2014-04-07 16:48:44 +02:00
Stephen Kelly 8238a6cd5d Add some COMPILE_OPTIONS for specifying C++ dialect.
These are compiler-specific, compiler version specific, extension specific
and standard version specific.
2014-04-07 16:48:44 +02:00
Stephen Kelly 59b5fdd37c Don't load Clang-CXX from AppleClang-CXX.
The Clang-CXX module is going to get version-specific checks, and
the version system for AppleClang is not the same as Clang.
2014-04-07 16:48:44 +02:00
Brad King 1dc59debcc Merge topic 'Qt4Macros-moc-performance'
7beba986 Qt4Macros: Make QT4_CREATE_MOC_COMMAND a function
2014-04-04 11:38:02 -04:00
Robert Maynard 7beba98652 Qt4Macros: Make QT4_CREATE_MOC_COMMAND a function
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.
2014-04-03 12:58:58 -04:00
Brad King 7d34041709 Merge topic 'watcom-platform-module-cleanup'
1e22b23c Watcom: Cleanup Windows-wcl386 configuration
2014-04-03 12:51:43 -04:00
Brad King 487f7a41ec Merge topic 'ExternalProject_exclude-from-all'
1ddcc582 ExternalProject: Add EXCLUDE_FROM_ALL option to ExternalProject_Add
0a1c0129 ExternalProject: Add EXCLUDE_FROM_MAIN option to ExternalProject_Add_Step
2014-04-03 12:51:37 -04:00
Brad King 7fcf0277c9 Merge topic 'FindGTest-TEST_P'
2e2939c3 FindGTest: Teach GTEST_ADD_TESTS about TEST_P
2014-04-03 12:51:35 -04:00
Jiri Malak 1e22b23c81 Watcom: Cleanup Windows-wcl386 configuration
* 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
2014-04-02 09:14:50 -04:00
Daniele E. Domenichelli 1ddcc582c1 ExternalProject: Add EXCLUDE_FROM_ALL option to ExternalProject_Add
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.
2014-04-01 18:17:31 +02:00
Daniele E. Domenichelli 0a1c012961 ExternalProject: Add EXCLUDE_FROM_MAIN option to ExternalProject_Add_Step
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.
2014-04-01 18:17:31 +02:00
Brad King ce9ffd6b23 Merge topic 'find_package-check-quiet'
83934757 Find*: Make find_package(.. QUIET) affect Check* modules.
4c0cc9ab Check*.cmake : Add CMAKE_REQUIRED_QUIET flag.
2014-04-01 11:06:12 -04:00
Brad King 8617de566f Merge topic 'hpux-processorcount'
c3e238dd ProcessorCount: use mpsched on HPUX if machinfo is not present
2014-04-01 11:06:11 -04:00
Brad King 05d3570cf5 Merge topic 'ExternalProject_GitUpdate'
f2128d4c ExternalProject: Improve handling of git remote branches
ff2451dc ExternalProject: Strip trailing space from git hash
2014-04-01 11:06:09 -04:00
Brad King 382c9ee859 Merge topic 'link-line-quoting'
423009c1 Makefile: Generate single-quoted object lists for Watcom
a863a8fe cmLocalUnixMakefileGenerator3: Re-organize ConvertToQuotedOutputPath
2014-04-01 11:06:08 -04:00
Brad King 09498984b1 Merge topic 'UseSWIG-NO_SONAME'
f26147b8 UseSWIG: Enable NO_SONAME on swig modules (#14815)
2014-04-01 11:06:06 -04:00
Daniele E. Domenichelli f2128d4c28 ExternalProject: Improve handling of git remote branches
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.
2014-04-01 10:51:58 -04:00
Daniele E. Domenichelli ff2451dc24 ExternalProject: Strip trailing space from git hash 2014-04-01 10:51:53 -04:00
Julien Schueller f26147b871 UseSWIG: Enable NO_SONAME on swig modules (#14815)
Swig modules are plugins and do not need the SONAME field set.
2014-04-01 10:48:13 -04:00
Jack Morrison 2e2939c365 FindGTest: Teach GTEST_ADD_TESTS about TEST_P
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
2014-04-01 09:48:20 -04:00
Clinton Stimpson 83934757c9 Find*: Make find_package(.. QUIET) affect Check* modules.
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.
2014-03-29 20:22:54 -06:00
Clinton Stimpson 4c0cc9ab91 Check*.cmake : Add CMAKE_REQUIRED_QUIET flag.
Setting this flag can silence messages from the Check*.cmake modules.
This can be used by Find*.cmake modules when they are in silent mode.
2014-03-29 20:14:23 -06:00
Rolf Eike Beer c3e238dd53 ProcessorCount: use mpsched on HPUX if machinfo is not present
Co-Author: Gerhard Grimm <gerhard.grimm@detec.com>
2014-03-28 18:02:49 +01:00
Jiri Malak 423009c17f Makefile: Generate single-quoted object lists for Watcom
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.
2014-03-27 13:45:29 -04:00
Brad King e8451d6426 Merge topic 'threads-cleanup'
693f8bf3 FindThreads: simplify checking for SunOS
858ce31f FindThreads: avoid useless checks if a thread library is already found
fdf7bd27 FindThreads: replace MATCHES with STREQUAL
2014-03-27 11:12:08 -04:00
Brad King 6ae3fbfeda Merge topic 'dev/find-boost-graph_parallel'
f284b003 FindBoost: Search next to MPI libs for graph_parallel (#14832)
2014-03-26 13:24:45 -04:00
Brad King 098a39f21c Merge topic 'simplify-empty-LDFLAGS'
1b18f442 Avoid trailing space in CMAKE_*_LINKER_FLAGS when LDFLAGS is empty
2014-03-26 13:24:42 -04:00
Brad King 2cb8417584 Merge topic 'FindPkgConfig-stop-on-missing'
63a4c0af FindPkgConfig: Stop processing when REQUIRED package not found (#14381)
2014-03-26 13:24:40 -04:00
Brad King 06c9f55449 Merge topic 'haiku-updates'
0cc42b87 Haiku: Fix compiler detection when using distcc
84603d80 Haiku: Enable CMake builtin ELF editor
2014-03-26 13:24:36 -04:00
Brad King ab07d383a9 Merge topic 'fix-Qt4-moc-commands-depends'
734df96f Qt4: Fix moc command dependencies for incremental build.
2014-03-26 13:24:34 -04:00
Brad King bcd4d0ced8 Merge topic 'UseJava-fix-resource-copy'
2abd8efe UseJava: Copy resource files before compiling the jar (#13360)
2014-03-26 13:24:31 -04:00
Brad King 046c1a1f65 Merge topic 'compile-m-as-c'
95cdf132 Treat .m files consistently as C across all generators
2014-03-26 13:24:28 -04:00
Brad King 74a45ce647 Merge topic 'UseSWIG-revert-bad-fix-0010080'
d9760647 Revert "UseSWIG: Name extra generated files after module name (#10080)"
2014-03-26 13:24:26 -04:00
Rolf Eike Beer 693f8bf34d FindThreads: simplify checking for SunOS 2014-03-25 23:49:54 +01:00
Rolf Eike Beer 858ce31f4c FindThreads: avoid useless checks if a thread library is already found 2014-03-25 23:47:49 +01:00
Rolf Eike Beer fdf7bd27a3 FindThreads: replace MATCHES with STREQUAL 2014-03-25 22:46:11 +01:00
Ben Boeckel f284b003d7 FindBoost: Search next to MPI libs for graph_parallel (#14832)
In addition to the MPI libraries, graph_parallel lives in the MPI libdir
as well.
2014-03-25 16:26:11 -04:00
Jiri Malak 1b18f442f4 Avoid trailing space in CMAKE_*_LINKER_FLAGS when LDFLAGS is empty 2014-03-24 09:11:48 -04:00
Christoph Grüninger 63a4c0af31 FindPkgConfig: Stop processing when REQUIRED package not found (#14381)
Make the behavior similar to find_package.
2014-03-24 08:57:31 -04:00
Adrien Destugues 0cc42b871a Haiku: Fix compiler detection when using distcc
Also remove outdated include directories.
2014-03-21 08:19:10 -04:00
Stephen Kelly 734df96f5a Qt4: Fix moc command dependencies for incremental build.
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
2014-03-21 11:14:41 +01:00
Bruno Nova 2abd8efecb UseJava: Copy resource files before compiling the jar (#13360)
Co-Author: Mary Ellen Foster <mefoster@gmail.com>
2014-03-20 09:50:47 -04:00
Tim Blechmann 95cdf13248 Treat .m files consistently as C across all generators
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>
2014-03-20 09:40:41 -04:00
Brad King d8fb08a391 Merge topic 'watcom-updates'
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
2014-03-20 09:22:30 -04:00
Brad King df136e6c27 Merge topic 'ExternalProject-no-download-progress'
f1b953ec Help: Add notes for topic 'ExternalProject-no-download-progress'
7d35b550 ExternalProject: Add option to disable download progress (#14807)
2014-03-20 09:22:26 -04:00
Brad King b048a3edd0 Merge topic 'FindPkgConfig_Extend-PKG_CONFIG_PATH_2'
cc5a0d8f FindPkgConfig: More unit tests
453d2b24 FindPkgConfig: small refactoring
2014-03-20 09:22:25 -04:00
Brad King 82c590b12e Merge topic 'CheckTypeSize_#14056'
7f857775 CheckTypeSize: Add unit test to cover the no-C case
7d6d45f2 CheckTypeSize: Support for CXX when C language is not enabled
2014-03-20 09:22:23 -04:00
Brad King deb981c052 Merge topic 'Android-platform'
77f06b14 Modules: Add an Andriod platform file
2014-03-20 09:22:15 -04:00
Stephen Kelly 77f06b145d Modules: Add an Andriod platform file
It is much like Linux but has no SONAME or RPATH.
2014-03-20 09:04:31 -04:00