Commit Graph

12618 Commits

Author SHA1 Message Date
Brad King c403f27a2d Add $<TARGET_OBJECTS:...> expression to use an object library
For now do not allow an OBJECT library to reference other object
libraries.  Teach cmTarget::ComputeLinkImplementation to include the
languages of object libraries used by a target.
2012-03-16 10:12:15 -04:00
David Cole 34e4985eed Xcode: Re-factor code into GetObjectsNormalDirectory method
...in preparation for calling it from more than one location.
Required to support OBJECT_LIBRARY targets in Xcode.
2012-03-16 10:05:46 -04:00
KWSys Robot b4f949a3dd KWSys Nightly Date Stamp 2012-03-16 00:05:07 -04:00
KWSys Robot acc3862d0a KWSys Nightly Date Stamp 2012-03-15 00:05:05 -04:00
Brad King 9eb8e4b22b Write CMakeCache.txt atomically (#13040)
The write code introduced by commit 0b0d1b1d (add CMakeCache.txt
support, 2001-02-22) uses a temporary file but does not replace the
original atomically.  Use cmGeneratedFileStream to do both
copy-if-different and atomic replacement.
2012-03-14 08:18:15 -04:00
KWSys Robot 50fe2c6460 KWSys Nightly Date Stamp 2012-03-14 00:05:08 -04:00
Alex Neundorf 16c0c7376c find_package: allow <pkg>Config.cmake to set <pkg>_FOUND to FALSE
Before, find_package in Config mode always set Foo_FOUND to true if the
Config file has been found and could be executed.
If the Config file itself detected some problem, like a missing dependency,
it did not have a way to signal to the outside that the package is not working.
With this patch, if a Config file sets Foo_FOUND to FALSE, this is taken into
account and not overridden.

Alex
2012-03-13 16:56:23 -04:00
Brad King 3a53005f7d Build object library targets in VS
Treat OBJECT libraries as STATIC libraries.  The VS project file format
provides no way to avoid running the librarian so hide the resulting
.lib away next to the object files as it should never be referenced.
The object files will be left behind for reference by other targets
later.
2012-03-13 14:38:02 -04:00
Brad King 3aa741acb6 Build object library targets in Makefiles
Treat OBJECT libraries as STATIC libraries but leave out the archive
step.  The object files will be left behind for reference by other
targets later.
2012-03-13 14:38:02 -04:00
Brad King b87d7a60a0 Add OBJECT_LIBRARY target type
This library type can compile sources to object files but does not link
or archive them.  It will be useful to reference from executable and
normal library targets for direct inclusion of object files in them.

Diagnose and reject the following as errors:

* An OBJECT library may not be referenced in target_link_libraries.

* An OBJECT library may contain only compiling sources and supporting
  headers and custom commands.  Other source types that are not normally
  ignored are not allowed.

* An OBJECT library may not have PRE_BUILD, PRE_LINK, or POST_BUILD
  commands.

* An OBJECT library may not be installed, exported, or imported.

Some of these cases may be supported in the future but are not for now.

Teach the VS generator that OBJECT_LIBRARY targets are "linkable" just
like STATIC_LIBRARY targets for the LinkLibraryDependencies behavior.
2012-03-13 14:37:32 -04:00
David Cole 0f4dfa6960 CPack: Use real path to PackageMaker to find its version file (#12621)
On machines where a usr/bin/packagemaker symlink is found, we were
unable to find the version.plist file relative to the symlink.
Resolve the symlink first, so we can find it relative to the
real PackageMaker.
2012-03-13 14:01:19 -04:00
Brad King e8f1d7f031 Merge topic 'doc-Fortran-mod-dir-issue-13034'
54604ee Document Fortran_MODULE_DIRECTORY as OUTPUT only (#13034)
2012-03-13 11:54:58 -04:00
Brad King 88720153a9 Merge topic 'fix-cpack-hdiutil-retry-loops'
05a76d5 CPack: Fix retry logic when calls to hdiutil fail
2012-03-13 11:54:03 -04:00
Brad King b96424012d Merge topic 'ctest-match-valgrind'
ea4416c CTest: Match valgrind errors with "points to" (#12922)
2012-03-13 11:53:38 -04:00
Brad King 3cd124cf28 Merge topic 'ctest-clang-in-xcode'
c7da50d CTest: Detect Xcode error "Command ... failed with exit code"
2012-03-13 11:53:35 -04:00
Brad King 1ee4b65a7f Merge topic 'cleanup-object-file-names'
0996f2a Hide Makefile local object info inside local generator
67734be VS: Simplify object name computation
4ae7f36 Remove unused partial OBJECT_FILES property implementation
2012-03-13 11:53:28 -04:00
Brad King ac800f49d0 Ninja: Constify use of cmCustomCommand
The generator never needs to modify custom command instances.
2012-03-13 11:23:14 -04:00
Peter Kuemmel 9a0d5a828a Ninja: add /DEF: flag to linker call 2012-03-13 11:20:29 -04:00
KWSys Robot 738d94f57e KWSys Nightly Date Stamp 2012-03-13 00:05:06 -04:00
Brad King f737bd416a Pre-compute and store target object directory in cmGeneratorTarget
Add cmGeneratorTarget::ObjectDirectory member to hold the value.  In
ComputeTargetObjects set the value to the full path to the target object
directory including any necessary placeholder for the configuration
name.
2012-03-12 16:44:03 -04:00
Brad King 54604ee7e9 Document Fortran_MODULE_DIRECTORY as OUTPUT only (#13034)
CMake does not automatically pass the Fortran module output directory
location to the module search path.  Add a note to the documentation
that the location must also be specified by INCLUDE_DIRECTORIES.
2012-03-12 11:54:54 -04:00
KWSys Robot 3551844a81 KWSys Nightly Date Stamp 2012-03-12 00:05:05 -04:00
KWSys Robot 335b6592dd KWSys Nightly Date Stamp 2012-03-11 00:05:10 -05:00
KWSys Robot 71c16e457c KWSys Nightly Date Stamp 2012-03-10 00:05:06 -05:00
Brad King 9c0a00d6dd Rename/constify build-time config placeholder lookup
Rename cmGlobalGenerator::GetCMakeCFG{InitDirectory => IntDir} to
have a shorter name without a typo.  Add a 'const' qualifier since
the method is only for lookup and never needs to modify anything.
2012-03-09 15:16:03 -05:00
Brad King 46f4940675 Remove unused cmSourceGroup method
The non-const GetSourceFiles method is not needed.
2012-03-09 15:16:03 -05:00
Brad King d57047de33 Pre-compute object file names before VS project generation
Implement cmGlobalGenerator::ComputeTargetObjects in the VS generator
to pre-compute all the object file names.  Use the results during
generation instead of re-computing it later.
2012-03-09 15:16:02 -05:00
Brad King 3baaf6ccec Pre-compute object file names before Makefile generation
Add a virtual cmGlobalGenerator::ComputeTargetObjects method invoked
during cmGeneratorTarget construction.  Implement it in the Makefile
generator to pre-compute all object file names for each target.  Use
the results during generation instead of re-computing it later.
2012-03-09 15:16:02 -05:00
Brad King 62a841b80b Simplify cmVisualStudio10TargetGenerator using cmGeneratorTarget
Use CustomCommands and ModuleDefinitionFile computed in the latter
instead of recomputing them from the original target source files.
2012-03-09 15:16:02 -05:00
Brad King 45c2f93240 Simplify cmMakefileTargetGenerator using cmGeneratorTarget
Replace the classification of source files in this generator
using that computed by cmGeneratorTarget.
2012-03-09 15:16:02 -05:00
Brad King 4b24558091 Create a cmGeneratorTarget for each cmTarget during generation
Construct the instances after the final set of targets is known but
before computing inter-target dependencies.  This order will allow
initialization of cmGeneratorTarget instances to adjust and finalize
declared inter-target dependencies.
2012-03-09 15:16:02 -05:00
Brad King 11d9b21126 Add cmGeneratorTarget to represent a target during generation
Some per-target information and logic is common to all generators.
Some of that information is currently stored in cmTarget but that
should be reserved for the configure step.  Create a class to hold
per-target information for generators.  On construction classify
sources from the target and store them in separate members.  This
classification is already implemented separately in each generator.
2012-03-09 15:16:02 -05:00
Brad King 51b67366ed Merge branch 'cleanup-object-file-names' into object-library 2012-03-09 15:15:37 -05:00
Bill Hoffman d40eebd89d Ninja: Add a cache option CMAKE_ENABLE_NINJA to enable the ninja generator.
Make the option default to on, for platforms where CMake passes
all tests with the ninja generator.  This is currently only Linux.
2012-03-09 14:28:21 -05:00
David Cole 05a76d53c0 CPack: Fix retry logic when calls to hdiutil fail
The long-standing sporadic failures of CPack tests on the Mac dashboards
are caused by an occasional problem running hdiutil. To compensate for
this, a retry loop was added in the code in a previous commit: a9fa71a4
... but the logic for breaking out of the retry loop was flawed, breaking
out of the loop (and not retrying) when the hdiutil command returns an
error instead of when it returns success.

This commit fixes the flawed logic, bumps up the number of retries from
4 to 10, and adds a half-second delay in between retries.

The delay is specifically added in case a virus checker or spotlight indexer
is temporarily causing the hdiutil failure by hanging onto a newly created
file longer than hdiutil expects it to.

As with all sporadically occurring issues, we'll never know if this is
really fixed all the way. But I'll be happy even if we can only get it to
happen just a bit less often.
2012-03-09 11:39:01 -05:00
Alexandru Ciobanu ea4416cf7b CTest: Match valgrind errors with "points to" (#12922)
Teach CTest to match valgrind errors of the format
"Syscall param ... points to uninitialised byte(s)".
2012-03-09 09:32:28 -05:00
Alexandru Ciobanu c7da50da52 CTest: Detect Xcode error "Command ... failed with exit code" 2012-03-09 07:59:56 -05:00
KWSys Robot c7bdef5b48 KWSys Nightly Date Stamp 2012-03-09 00:05:04 -05:00
David Cole 4693cf8492 Xcode: Detect new default locations of Xcode 4.3 bits and pieces (#12621)
Xcode 4.3 installs into "/Applications" by default, from the Mac App Store.

Also, the paths to the available SDKs changed: they are now within the
Xcode.app bundle.

PackageMaker is installed as a separate program, and may be installed
anywhere. It is not installed with Xcode 4.3 by default anymore.
Download the "Auxiliary Tools for Xcode" to get PackageMaker.
Put PackageMaker inside the Xcode.app bundle, in its nested Applications
folder, or put it alongside Xcode in "/Applications" and CMake will find
it.

Update references to "find" paths: add new possible locations for finding
Xcode.app and PackageMaker.app. Prefer the most recent version's locations
first, but keep the old locations as fallback search paths, too.

Thanks to all the contributors who provided and tested out various patches
for fixing this issue. Especially, but by no means limited to:
Francisco Requena Espí, Jamie Kirkpatrick and drfrogsplat.
2012-03-08 22:43:19 -05:00
David Cole fa0f065426 Merge topic 'find_package_fatal_error_if_required_and_config_not_found'
c5ae733 find_package: Test that REQUIRED aborts processing correctly
c91a54d find_package: error out if REQUIRED Config has not been found
2012-03-08 15:14:23 -05:00
David Cole da43d8fa8d Merge topic 'MakingConfigFilesEasier_ConfigureMacro'
6973e2d wrap write_basic_config_version_file as write_basic_package_version_file()
204f5d4 add CMakePackageConfigHelpers: configure_package_config_file()
2012-03-08 15:14:12 -05:00
David Cole f55119e63b Merge topic 'fix-12189-support-SBCS-in-VS'
b28e7fa VS6: Avoid SBCS test on VS6 (#12189)
df19b9c VS6: Avoid _MBCS define when _SBCS is defined (#12189)
ba89e92 Visual Studio: Allow setting Single Byte Character Set (#12189)
2012-03-08 15:14:03 -05:00
David Cole 9cdd989667 Merge topic 'fixCPackDocTypo'
b0cb29b Fix some typos in CPACK_SET_DESTDIR doc
2012-03-08 15:13:39 -05:00
David Cole 580171185b Merge topic 'target-include-directories'
d662dff Fix shadowed variable warning on dashboard results
f66e735 Fix compiler warning reported on older Borland dashboard.
d90eed4 Fix compiler error reported on older Borland dashboard.
8233636 Update the documentation regarding INCLUDE_DIRECTORIES.
d899eb7 Call ExpandVariablesInString for each target's INCLUDE_DIRECTORIES
c21db87 Make search paths ordered and unique
22021f0 Remove cmMakefile::GetIncludeDirectories
9106b56 Extract and use the INCLUDE_DIRECTORIES target properties.
840509b Keep the INCLUDE_DIRECTORIES target property up to date.
a4d5f7b Add API to get the ordered includes for a target.
8adaee2 CMake: Eliminate cmMakefile::IncludeDirectories
7620932 Remove include flags memoization.
97a5faa Make it safe to call this method without creating duplicates.
edd5303 Refactor GetIncludeFlags to take includes instead of fetching them
2012-03-08 15:13:15 -05:00
Brad King 0996f2a228 Hide Makefile local object info inside local generator
Make cmLocalUnixMakefileGenerator3::LocalObjectInfo private and add
cmLocalUnixMakefileGenerator3::AddLocalObjectFile to create entries.
2012-03-08 07:58:52 -05:00
KWSys Robot 3a36fa9971 KWSys Nightly Date Stamp 2012-03-08 00:05:06 -05:00
David Cole 8c634330db Ninja: Add friend struct so it can access the private ConvertToNinjaPath.
The HP aCC compiler is apparently more strict than all our other
dashboard compilers with respect to complaining about this.
2012-03-07 16:24:34 -05:00
Peter Kuemmel dbe3dce546 Ninja: add .def file support 2012-03-07 16:24:34 -05:00
Peter Kuemmel f1bb08f55b Ninja: ensure the output dir exists at compile time 2012-03-07 16:24:33 -05:00
Alex Neundorf 6973e2d5a8 wrap write_basic_config_version_file as write_basic_package_version_file()
So the name fits better with configure_package_config_file(), as
discussed on the mailing list. Adapt the documentation accordingly.

Alex
2012-03-07 11:23:18 -05:00
KWSys Robot 285f0db9f4 KWSys Nightly Date Stamp 2012-03-07 00:05:05 -05:00
David Cole 50f9db9b00 Merge topic 'skip-install-rpath'
635bf50 Add an option to skip RPATH during installation.
2012-03-06 15:27:54 -05:00
David Cole e872b0d2b8 Merge topic 'win32_executable-and-macosx_bundle-initializers'
761c146 Add default initializers for WIN32_EXECUTABLE and MACOSX_BUNDLE
2012-03-06 15:27:44 -05:00
David Cole 7fbd323f80 Merge topic 'remove-unused-members'
aef248a Remove cmExprParserHelper::SetLineFile()
e266571 Remove UnionsAvailable member from 2 classes
2012-03-06 15:27:08 -05:00
David Cole 480ba64343 Merge topic 'rename-used-commands'
89403bf Rename UsedCommands to FinalPassCommands
2012-03-06 15:24:40 -05:00
Eric NOULARD b0cb29bb06 Fix some typos in CPACK_SET_DESTDIR doc 2012-03-06 21:23:11 +01:00
Alex Neundorf c91a54db37 find_package: error out if REQUIRED Config has not been found
If in Config mode a configuration file could not be found, cmake printed
an error, but did not actually stop processing. With SetFatalErrorOccured
it does.

Alex
2012-03-06 21:16:24 +01:00
Brad King 67734be8cf VS: Simplify object name computation
Simplify cmLocalVisualStudioGenerator::ComputeObjectNameRequirements to
loop over the original vector of source files instead of recursively
traversing source groups just to find the same files.  Drop from
cmVisualStudio10TargetGenerator::ComputeObjectNames temporary source
group calculation now that it is not needed for computing object names.
2012-03-06 13:30:19 -05:00
Brad King 4ae7f3656b Remove unused partial OBJECT_FILES property implementation
Remove partial implementation added by commit ca0230a3 (check in initial
conv library stuff, 2007-02-16) since it was never finished.  It does
not make sense for multi-configuration generators since no specific
build configuration is processed at CMake time.
2012-03-06 13:20:17 -05:00
KWSys Robot ec50093be7 KWSys Nightly Date Stamp 2012-03-06 00:05:18 -05:00
Stephen Kelly 635bf50c27 Add an option to skip RPATH during installation. 2012-03-05 22:24:57 +01:00
Stephen Kelly 761c146a4c Add default initializers for WIN32_EXECUTABLE and MACOSX_BUNDLE
This allows downstreams to use

set(CMAKE_WIN32_EXECUTABLE ON)
set(CMAKE_MACOSX_BUNDLE ON)

to create executables with the WIN32_EXECUTABLE and MACOSX_BUNDLE
properties set on by default.
2012-03-05 15:50:55 +01:00
KWSys Robot 17a099dd13 KWSys Nightly Date Stamp 2012-03-05 00:05:06 -05:00
KWSys Robot 76bff60292 KWSys Nightly Date Stamp 2012-03-04 00:05:09 -05:00
Yury G. Kudryashov aef248a4ff Remove cmExprParserHelper::SetLineFile() 2012-03-03 15:11:09 +04:00
Yury G. Kudryashov e26657103f Remove UnionsAvailable member from 2 classes
These classes were copied from cmDependsJavaParserHelper that really needs this
member.
2012-03-03 15:11:08 +04:00
KWSys Robot ac2979e4b3 KWSys Nightly Date Stamp 2012-03-03 00:05:08 -05:00
David Cole 5012787c3c Merge topic 'while-testing'
944b90b add testcases for while()/endwhile() errors
f605b92 improve error message on a stray "endwhile()"
2012-03-02 11:50:54 -05:00
David Cole 5d9c535f31 Merge topic 'doxygen-fixes'
09ff226 Merge branch 'add-const-qualifiers' into doxygen-fixes
31ab25c doxygen: MathCommand is not about string operators
486033a doxygen: review cmake.h
937bb4b doxygen: remove a few comments
4774590 doxygen: fix some comments in cmPolicies.h
4a48be3 doxygen: Small fixes in cmake.h apidocs
1e5b971 doxygen: Use proper syntax to document enum
54ab11c doxygen: Improve API docs of GetRealDependency
80072d4 doxygen: cmPropertyDefinition
2012-03-02 11:50:26 -05:00
David Cole e4382180fc Merge topic 'add-const-qualifiers'
737c49a Add 'const' qualifier to some cmCommand members
261491f cmPropertyDefinition::IsChained is const
2012-03-02 11:50:07 -05:00
David Cole 1073d50508 Merge topic 'inject_code_via_variable'
2557a08 Fix typo in error message, and remove redundent test.
9090572 Add ability to include a file in a project via a cache variable.
2012-03-02 11:49:35 -05:00
David Cole 20446079ee Merge topic 'run-vim-spellcheck'
43d6011 Run vim spellcheck on some files
2012-03-02 11:49:23 -05:00
David Cole af87e8abb0 Merge topic 'dragndrop-sla'
5663e43 DragNDrop: Fix problem with relocated files in Xcode 4.3
2012-03-02 11:48:55 -05:00
David Cole 0ee7b8ea03 Merge topic 'find_package-improve-messages'
eeaaffc find_package: Test error and warning messages in failure cases
52dffb9 Merge branch 'test-CMakeCommands' into find_package-improve-messages
d365104 find_package: Optionally warn when implicitly using Config mode
31ead5f find_package: Reject mixed use of MODULE- and CONFIG-only options
6d83083 find_package: mention requested version number in error message
9c39bbd find_package: add CONFIG mode keyword alias for NO_MODULE
f310f67 find_package: add MODULE mode to use only Find-modules
7d67dcf find_package: improve error message when no Find module is present
978d89b find_package: rename NoModule to UseFindModules
2012-03-02 11:48:38 -05:00
David Cole 2fb1df42a2 Merge topic 'find_package-report-CONFIGS-error'
b3f9fe4 find_package: print error if an invalid CONFIGS name is used
2012-03-02 11:48:09 -05:00
David Cole 881dc35579 Merge topic 'factor-install-type'
573fa3b Factor cmInstallType out of cmTarget::TargetType
2012-03-02 11:47:42 -05:00
David Cole 6ed36e7b88 Merge topic 'simplify-GetRealDependency'
4f6fd96 Drop if(...) check because condition is always true
2012-03-02 11:47:21 -05:00
David Cole e8aa0401c8 Merge topic 'fix-BORLAND-doc-typo'
a5edfc4 Fix typo in documentation
2012-03-02 11:46:51 -05:00
David Cole c79a57b0ac Merge topic 'CPack-updateCommonDoc'
6ad0f04 Update CPackConfig template.
94a2693 Review and update CPack variable documentation.
2012-03-02 11:46:23 -05:00
David Cole aba1c1aa3b Merge topic 'fix-macos-findprogramm-crash'
0d2f5c8 Fix crash if app bundle executeable couldn't be found
2012-03-02 11:45:48 -05:00
KWSys Robot 65dfe9e5be KWSys Nightly Date Stamp 2012-03-02 00:05:05 -05:00
Rolf Eike Beer f605b92dec improve error message on a stray "endwhile()" 2012-03-01 21:20:48 +01:00
Brad King 09ff226e4c Merge branch 'add-const-qualifiers' into doxygen-fixes
Conflicts:
	Source/cmPropertyDefinition.h
2012-03-01 10:40:21 -05:00
KWSys Robot 3d8028841d KWSys Nightly Date Stamp 2012-03-01 00:05:06 -05:00
Bill Hoffman 2557a08054 Fix typo in error message, and remove redundent test. 2012-02-29 22:28:06 -05:00
Yury G. Kudryashov 31ab25c0c9 doxygen: MathCommand is not about string operators 2012-03-01 02:33:13 +04:00
Yury G. Kudryashov 486033aef3 doxygen: review cmake.h
* Move top-level comment to class apidocs
* Remove misleading comment
2012-03-01 02:33:13 +04:00
Yury G. Kudryashov 937bb4bebf doxygen: remove a few comments
These comments were either wrong or non-informative.
Replace some of them by brief comments
2012-03-01 02:33:13 +04:00
Yury G. Kudryashov 477459010f doxygen: fix some comments in cmPolicies.h 2012-03-01 02:33:12 +04:00
Yury G. Kudryashov 43d60114a5 Run vim spellcheck on some files 2012-02-29 14:07:50 -05:00
Yury G. Kudryashov 737c49a357 Add 'const' qualifier to some cmCommand members
Use const_cast for the special case in cmFindBase where
GetFullDocumentation calls GenerateDocumentation.
2012-02-29 13:27:04 -05:00
Clinton Stimpson 5663e436ab DragNDrop: Fix problem with relocated files in Xcode 4.3
Remove dependency on /Developer/Headers/FlatCarbon when creating SLAs for DMG images.
Instead, of adding those .r files on the command line, include the necessary .r files
from the generated .r file.
2012-02-29 08:29:46 -07:00
Yury G. Kudryashov 89403bf87f Rename UsedCommands to FinalPassCommands
When I read 'UsedCommands' I thought that it holds all commands used in the
file, not only those that have FinalPass().
2012-02-29 11:49:42 +04:00
KWSys Robot 4fd479816d KWSys Nightly Date Stamp 2012-02-29 00:05:04 -05:00
Yury G. Kudryashov 4a48be323b doxygen: Small fixes in cmake.h apidocs 2012-02-29 00:18:22 +04:00
Yury G. Kudryashov 1e5b971ed0 doxygen: Use proper syntax to document enum 2012-02-29 00:18:11 +04:00
Yury G. Kudryashov 54ab11c0d2 doxygen: Improve API docs of GetRealDependency
Use list instead of sequence of sentences in one paragraph.
2012-02-29 00:17:48 +04:00
Yury G. Kudryashov 80072d4ebf doxygen: cmPropertyDefinition 2012-02-29 00:17:37 +04:00
Brad King d3651041e9 find_package: Optionally warn when implicitly using Config mode
Define variable CMAKE_FIND_PACKAGE_WARN_NO_MODULE for use by a project
that wants to use an explicit mode in every call to find_package in
order to generate more specific failure messages.  Word the warning
using the new CONFIG and MODULE mode keywords when the minimum required
version of CMake is new enough to have them.  Otherwise word the warning
using the old NO_MODULE mode keyword.

Inspired-by: Alex Neundorf <neundorf@kde.org>
2012-02-28 10:01:44 -05:00
Brad King 31ead5f695 find_package: Reject mixed use of MODULE- and CONFIG-only options
Many options imply exclusive Config mode.  The new MODULE option
implies exclusive Module mode.  Do not allow mixed combinations.
2012-02-28 09:58:31 -05:00