Commit Graph

22784 Commits

Author SHA1 Message Date
Stephen Kelly 50d152035d cmTarget: Make custom command accessors API const.
Add specific mutators instead of providing non-const refs.
2013-11-19 20:40:31 +01:00
Brad King e776a2dae4 Merge topic 'macro-args-docs'
f0db2e3 Help: Document macro argument caveats in more detail
2013-11-19 12:44:48 -05:00
Brad King 46ec48c93d Merge topic 'cross-compiling-toolchain-variables'
7cd65c9 Add CMAKE_SYSROOT variable to set --sysroot when cross compiling.
5096967 Allow toolchain files to specify an external toolchain.
76552d5 Add compiler target compile options.
f41ecd1 CMakeDetermineCompilerId: Look for internal file only on host
2013-11-19 12:41:57 -05:00
Stephen Kelly 7cd65c97fa Add CMAKE_SYSROOT variable to set --sysroot when cross compiling.
As CMAKE_ROOT_FIND_PATH can be a list, a new CMAKE_SYSROOT is
introduced, which is never a list.

The contents of this variable is passed to supporting compilers
as --sysroot. It is also accounted for when processing implicit
link directories reported by the compiler, and when generating
RPATH information.
2013-11-19 12:39:39 -05:00
Stephen Kelly 5096967ecd Allow toolchain files to specify an external toolchain.
Clang can compile code, but uses the gcc tools for other tasks such
as linking. The -gcc-toolchain option can be used for that, but
generalize so that other compilers can be treated the same.

If such a location is specified, use it as a hint for finding
the binutils executables.
2013-11-19 12:39:34 -05:00
Stephen Kelly 76552d595d Add compiler target compile options.
For clang, this allows passing -target <triple> to the compiler, and
for qcc, -V<arch> using toolchain files containing something like

 set(triple arm-linux-gnueabihf)
 set(CMAKE_C_COMPILER "/usr/bin/clang")
 set(CMAKE_C_COMPILER_TARGET ${triple})
 set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
 set(CMAKE_CXX_COMPILER_TARGET ${triple})

or

 set(arch gcc_ntoarmv7le)
 set(CMAKE_C_COMPILER /opt/qnx650/host/linux/x86/usr/bin/qcc)
 set(CMAKE_C_COMPILER_TARGET ${arch})
 set(CMAKE_CXX_COMPILER /opt/qnx650/host/linux/x86/usr/bin/QCC)
 set(CMAKE_CXX_COMPILER_TARGET ${arch})

Both clang and qcc are inherently cross compiler( driver)s.

When cross-compiling with clang, use the CMAKE_${lang}_COMPILER_TARGET
as the _CMAKE_TOOLCHAIN_PREFIX to find the appropriate binutils.

When cross-compiling with QNX qcc, use the CMAKE_${lang}_COMPILER_TARGET
to set the appropriate _CMAKE_TOOLCHAIN_PREFIX.
2013-11-19 12:38:53 -05:00
Stephen Kelly f41ecd1db4 CMakeDetermineCompilerId: Look for internal file only on host
The find_file this module uses to locate the compiler id source file
must always look on the host and never in CMAKE_FIND_ROOT_PATH, even
when a toolchain file has

 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Add NO_CMAKE_FIND_ROOT_PATH to the find_file call to avoid rerooting.
2013-11-19 12:36:27 -05:00
Stephen Kelly a247911a88 Tests: Don't read the LOCATION property from build targets. 2013-11-19 18:07:27 +01:00
Stephen Kelly cffcdd8331 KDevelop: Use GetLocation(0) instead of LOCATION property.
This can be migrated to use cmGeneratorTarget later.
2013-11-19 18:07:27 +01:00
Stephen Kelly 0f876439e9 cmGeneratorTarget: Make GetIncludeDirectories const. 2013-11-19 18:07:04 +01:00
Ben Boeckel a990722b5a eclipse: Support custom natures via a global property
This is useful for enabling natures not recognized by the Eclipse
generator directly in a project.
2013-11-19 11:48:19 -05:00
Ben Boeckel 51726cce64 eclipse: Add natures for Eclipse based on enabled languages
Also adds support for the Java nature if Java is being used.
2013-11-19 11:48:19 -05:00
Ben Boeckel 4a352d43bb Notify extra generators about languages
Some generators can use the any enabled languages to add extra support
in the relevant build tool. One such is Eclipse since there are many
plugins available for various languages.
2013-11-19 11:48:18 -05:00
Brad King e7434d43ab cmDocumentation: Fix exit after help output format warnings
After warning that a help output format is no longer supported, fix the
return value from cmDocumentation::CheckOptions to indicate that it was
still a help option that was parsed.  Otherwise CMake moves on to treat
the help output file name as a source tree and complains that it does
not exist.
2013-11-19 10:58:16 -05:00
Brad King 1da77bf1ee Merge topic 'cleanup-build-commands'
4cce44b Help: Document the CMAKE_MAKE_PROGRAM variable in more detail
558c74d VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators
5229f2d Tests: Do not use an explicit make program for VS generators
72dd738 Tests: Fix MFC test heuristic for empty CMAKE_TEST_MAKEPROGRAM
fd6076d Tests: Pass CMAKE_MAKE_PROGRAM instead of --build-makeprogram
68031ab Tests: Configure SubProject-Stage2 test more robustly
003d10c Tests: Simplify VSExcludeFromDefaultBuild configuration
e47d934 Tests: Simplify VSProjectInSubdir configuration
e965cb1 Tests: Simplify CTest.BuildCommand.ProjectInSubdir configuration
72bf255 Tests: Pass --build-options to every test
4d1d772 ctest: Teach --build-options to allow zero options
96966b5 ctest: Make the --build-makeprogram optional for --build-and-test
91a0211 Simplify some calls to cmGlobalGenerator::Build
123a060 Teach GenerateBuildCommand to find its own make program
5f5c92b VS: Add internal APIs to find MSBuild, devenv/VCExpress, and msdev
4ac75fd Prefer CMAKE_MAKE_PROGRAM over CMAKE_BUILD_TOOL (#14548)
...
2013-11-19 10:55:39 -05:00
Brad King 8564682136 Merge topic 'doc-ExternalProject-formatting'
01ecd24 ExternalProject: Format module documentation
2013-11-19 09:47:39 -05:00
Brad King 6574d3d1d1 Merge topic 'forbid-reserved-targets'
3900fcf CMP0037: Extend policy to reserved names and custom targets
2013-11-19 09:47:32 -05:00
Brad King 46d85a1da0 Merge topic 'emacs-mode-no-reserved-bindings'
0f21261 cmake-mode.el: drop reserved keybindings (#14576)
2013-11-19 09:47:15 -05:00
Brad King 4aea6d7e0f Merge topic 'cpack-internal-variables'
7621ad6 CPack: don't write internal variables to CPackConfig.cmake
2013-11-19 09:47:10 -05:00
Brad King e752a02368 Merge topic 'fix-remove-forbidden-flags'
3a8f34b Makefile: Remove "forbidden" flags only as a whole
2013-11-19 09:46:59 -05:00
Nils Gladitz 3900fcf4a8 CMP0037: Extend policy to reserved names and custom targets
Teach add_custom_target to check the policy too.  Extend the policy to
disallow reserved target names that we use for builtin targets like
"all".

Extend the RunCMake.CMP0037 test to cover these cases.
2013-11-19 09:44:22 -05:00
Nils Gladitz 3a8f34b98c Makefile: Remove "forbidden" flags only as a whole
Fix CMAKE_<LANG>_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS implementation to
only remove whole flags.  Without this n the Mac we were incorrectly
removing -w from -Wno-write-strings.
2013-11-19 09:39:50 -05:00
Brad King 01ecd24fa6 ExternalProject: Format module documentation
Manually revise the .rst format of the documentation.  Use inline
literal quotes appropriately in paragraph text.  Move the :: literal
block openers to the end of the preceding paragraphs.  Convert the
command signature documentation and examples to cmake code-block
directives.
2013-11-19 09:27:08 -05:00
Daniele E. Domenichelli f0db2e3898 Help: Document macro argument caveats in more detail
Add notes about macro arguments in the foreach, if, and list commands.
Add a section to the macro command documentation explaining in detail
how macro arguments are not variables.
2013-11-19 09:01:54 -05:00
Kitware Robot 4bb41b30d6 CMake Nightly Date Stamp 2013-11-19 00:01:07 -05:00
Brad King bf1db4963f VS: Map /Fd to ProgramDataBaseFileName for VS 7,8,9 (#14577)
Since commit 42ba1b08 (VS: Separate compiler and linker PDB files,
2013-04-05) the VS generators no longer add ProgramDataBaseFileName.
Therefore we should allow projects to do so by mapping the /Fd option.
For VS >= 10 our flag tables map /Fd to ProgramDataBaseFileName already.
Add the mapping for VS 7, 8, and 9.
2013-11-18 11:48:38 -05:00
Brad King 4cce44b6c5 Help: Document the CMAKE_MAKE_PROGRAM variable in more detail
Explain how it is set for each group of generators.  Also explain
the build-time selection behavior used by Visual Studio generators.
2013-11-18 11:30:51 -05:00
Brad King 558c74d0ab VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators
Drop the "Modules/CMakeVS*FindMake.cmake" files.  Override the
cmGlobalGenerator::FindMakeProgram method for VS generators to use their
internal APIs to locate the build tool.  Set the CMAKE_MAKE_PROGRAM as a
normal variable for use by project code, but do not cache it.  This will
allow CMake and CTest to select the proper tool at build time.
2013-11-18 11:30:50 -05:00
Brad King 5229f2df63 Tests: Do not use an explicit make program for VS generators
Do not pass the CMAKE_MAKE_PROGRAM cache entry to tests when using the
VS generators.  Allow them to pick the correct build tool automatically.
2013-11-18 11:30:50 -05:00
Brad King 72dd738bd4 Tests: Fix MFC test heuristic for empty CMAKE_TEST_MAKEPROGRAM
Also disable the MFC test if CMAKE_MAKE_PROGRAM is vcexpress.
2013-11-18 11:30:50 -05:00
Brad King fd6076d075 Tests: Pass CMAKE_MAKE_PROGRAM instead of --build-makeprogram
Pass the CMAKE_TEST_MAKEPROGRAM, if any, to each test at CMake time in
the CMAKE_MAKE_PROGRAM cache entry.  Pass the CMAKE_TEST_MAKEPROGRAM
into the ExportImport, Fortran, and MacRuntimePath tests so that they
may do the same for the nested project configurations.

Now "ctest --build-and-test" can get the make program from the test
build tree cache, so drop the explicit --build-makeprogram.
2013-11-18 11:30:50 -05:00
Brad King 68031abf15 Tests: Configure SubProject-Stage2 test more robustly
Fix the condition that adds the test to check CMAKE_TEST_GENERATOR
rather than the tools used to build CMake.  Drop the test on Ninja
because the generator does not support subproject generation anyway.
Stop using the general build_generator_args and pass the
--build-generator options explicitly.  Also pass --build-makeprogram
explicitly when CMAKE_TEST_MAKEPROGRAM is available because there is no
CMakeCache.txt in the test project subdirectory from which to pick up
the make program.
2013-11-18 11:30:50 -05:00
Brad King 003d10c248 Tests: Simplify VSExcludeFromDefaultBuild configuration
Create a CTEST_TEST_DEVENV variable that is set to the
CMAKE_MAKE_PROGRAM used for Visual Studio 7, 8, and 9.  It will always
be either "devenv" or "VCExpress", and not "MSBuild".  Add the
VSExcludeFromDefaultBuild test only when this variable is set, and use
its value as the --build-makeprogram value.

More work will be needed later to restore the test on VS 10 and above
when devenv is available, but this is the simplest approach for now.
2013-11-18 11:30:49 -05:00
Brad King e47d934a5a Tests: Simplify VSProjectInSubdir configuration
The test is only enabled on VS 10 and above, where the generators now
select for "ctest --build-and-test" the MSBuild tool by default.
Simplify the test configuration by dropping the --build-makeprogram
option and all the logic needed to compute its value.  The test will
automatically use MSBuild.
2013-11-18 11:30:49 -05:00
Brad King e965cb12e2 Tests: Simplify CTest.BuildCommand.ProjectInSubdir configuration
Collect all ctest_configure options in a list to configure it into the
test script.  Drop the unused -DCMAKE_MAKE_PROGRAM argument to ctest.
2013-11-18 11:30:49 -05:00
Brad King 72bf2552f2 Tests: Pass --build-options to every test
Create a "build_options" variable whose value is passed to every
"ctest --build-and-test" call through the --build-options argument.
2013-11-18 11:30:49 -05:00
Brad King 4d1d7725f3 ctest: Teach --build-options to allow zero options
The --build-options option consumes all following arguments until either
--build-target or --test-command.  Fix the logic to allow this to be
zero options.
2013-11-18 11:30:49 -05:00
Brad King 96966b5c80 ctest: Make the --build-makeprogram optional for --build-and-test
GenerateBuildCommand now knows how to lookup CMAKE_MAKE_PROGRAM or
choose a generator-provided default build tool.  Therefore the
--build-makeprogram can now be optional and simply override the
default selection when provided.

Note that with --build-nocmake we now need to load the cache in order to
make the CMAKE_MAKE_PROGRAM entry available to GenerateBuildCommand.
2013-11-18 11:30:49 -05:00
Brad King 91a021146c Simplify some calls to cmGlobalGenerator::Build
Code paths that look up CMAKE_MAKE_PROGRAM from the cache only to
pass it to Build, which only passes it to GenerateBuildCommand,
no longer need to do so.  GenerateBuildCommand now knows how to
look up CMAKE_MAKE_PROGRAM in the cache when no explicit value
is given, so simply pass 0 now.
2013-11-18 11:30:48 -05:00
Brad King 123a0608df Teach GenerateBuildCommand to find its own make program
Add a cmGlobalGenerator::SelectMakeProgram method to select a
caller-provided make program, the CMAKE_MAKE_PROGRAM cache entry, or a
generator-provided default.  Call it from all implementations of the
GenerateBuildCommand method with the corresponding generator's default,
if any.
2013-11-18 11:30:48 -05:00
Brad King 0f21261868 cmake-mode.el: drop reserved keybindings (#14576)
The keybindings added by commit 301e67e3 (cmake-mode.el: add local
keybindings, 2012-09-20) overlap the reserved C-c space:

 http://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html

Revert the commit to drop them.

Reported-by: Paul Smith <paul@mad-scientist.net>
Reviewed-by: Eric NOULARD <eric.noulard@gmail.com>
2013-11-18 09:36:28 -05:00
Brad King 2596fae8ba Merge topic 'doc-ctest-upload-part'
7eb9940 CTest: added documentation for the "Upload" submission PART
2013-11-18 09:25:50 -05:00
Brad King 5f5c92b9a2 VS: Add internal APIs to find MSBuild, devenv/VCExpress, and msdev
Teach the VS generators to compute the locations of these tools directly
from registry entries.  Add internal APIs to get the locations on demand.
2013-11-18 08:26:24 -05:00
Brad King 4ac75fdfe6 Prefer CMAKE_MAKE_PROGRAM over CMAKE_BUILD_TOOL (#14548)
Historically these were both added for the Makefile and Visual Studio
generators, respectively.  Later the VS generators started using the
CMAKE_MAKE_PROGRAM cache entry to find the IDE build tool, and the
CMAKE_BUILD_TOOL was simply set as an alias.

Fix the documentation to explain that CMAKE_MAKE_PROGRAM is the modern
variable and that CMAKE_BUILD_TOOL is the compatibility alias, not the
other way around.  Replace uses of CMAKE_BUILD_TOOL with
CMAKE_MAKE_PROGRAM in CMake-provided modules.  Nothing needs to lookup
CMAKE_BUILD_TOOL in the cache, so simply set it as a normal variable.
2013-11-18 08:26:23 -05:00
Brad King cc23f92861 Tests: Split <test>_EXTRA_OPTIONS into <test>_(CTEST|BUILD)_OPTIONS
Some extra options are for "ctest --build-and-test" directly, and others
are values for "--build-options".  Split these two roles out into two
separate variables and update existing uses.
2013-11-18 08:26:23 -05:00
Brad King 20bac8f19e Tests: Simplify ExternalProjectUpdate test arguments
Drop the -DCMAKE_TEST_MAKEPROGRAM argument because the value is not
used inside the test script.
2013-11-18 08:26:23 -05:00
Brad King 4d85365307 Tests: Fix make capability selection for empty CMAKE_TEST_MAKEPROGRAM 2013-11-18 08:26:23 -05:00
Brad King 95b28eb763 Tests: Teach MakeClean to use "cmake --build"
Switch from "ctest --build-and-test" to "cmake --build" to drive the
clean target in the MakeClean test.
2013-11-18 08:26:23 -05:00
Brad King c85672634c Tests: Teach SimpleInstall to use "cmake --build"
Switch from "ctest --build-and-test" to "cmake --build" to drive the
install and package targets in the SimpleInstall test.
2013-11-18 08:26:22 -05:00
Brad King f2b1d653cf Tests: Launch CMake.Install test through 'cmake --build'
Use "cmake --build" to drive the "install" target from the CMake build
tree itself.  This avoids using the heavier "ctest --build-and-test"
just to run the native build tool to drive installation.
2013-11-18 08:26:22 -05:00