This variable can be set to command line arguments which will be passed
to make when eclipse invokes make, e.g. you can enter "-j8" to get
8 parallel builds (#9930)
Alex
Escaped the @var@ in the file writes - this was being expanded at file
write and so not causing a reconfigure at the right time. I also took
care of build up lists of lists in the variables, especially important
for things like MPI_EXTRA_LIBRARY. Added some error checking, and use
the tmp_dir for initial cache file.
On Windows the limit for command line arguments is 8192 characters, and
this was limiting longer paths with some of our more nested projects
such as Library. Placing the -D arguments into CMAKE_CACHE_ARGS will
write out an initial cache file, that will be passed to CMake with a -C
argument as the initial cache.
By forcing the cache variables we preserve the existing behavior with
-D, to change the values of cache variables in our inner projects.
On Linux the NAG Fortran compiler uses gcc under the hood to link. Use
"-Wl,-v" to pass "-v" to the underlying gcc compiler to get verbose link
output. Detect the NAG Fortran directory (using -dryrun) and then honor
object files in the directory referenced in the implicit link line.
Pass real linker options with "-Wl,-Xlinker,". The -Wl, gets through
the NAG front-end and the -Xlinker gets through the gcc front-end.
The Numerical Algorithms Group (NAG) Fortran compiler does not document
a preprocessor macro to identify it. Check for identifying output using
the -V option.
Teach CMakeFortranInformation to use default flags only for variables
that have not been set at all, rather then not set or empty. This will
allow platform or compiler-specific information files to set empty
values without getting the defaults.
The NAG Fortran compiler implicitly passes object files by full path to
the linker. Teach CMakeParseImplicitLinkInfo to parse object files that
match some tool-specific regular expression.
FindTCL.cmake switched variables in the FIND_LIBRARY invocation. The
FIND_LIBRARY() statement for TCL used the TK variables and vice versa.
This patch reverses that into the right usage.
Closes debian issue 600245.
Also, improve the documentation of the fixup_bundle and fixup_bundle_item
functions to clarify that plugin type "libs" need to be copied into
the bundle *before* calling fixup_bundle.
Commit e93a4b4d34 changed the way that
the libs parameter to fixup_bundle is interpreted. Before the commit,
the libs were copied into the bundle first and then fixed up. After
the commit, the copy was skipped, assuming the libs were in the bundle
in the first place, and then the fixups occurred as before.
However, before the commit, it was possible to name a lib from outside
the bundle, and have it copied in and then fixed up. Its resolved
embedded name was always inside the bundle before. After, its resolved
embedded name was just the same as its resolved name, which is in its
original location, and not necessarily inside the bundle.
This manifested itself as a problem with the ParaView call to
fixup_bundle and its many plugins. Previously, ParaView had simply
passed in the list of plugin file names as they existed in the build
tree, and left the copying into the bundle up to the fixup_bundle
function. When built with CMake 2.8.3 (the first version to contain
the above named commit) the fixup_bundle call would inadventently
fixup libraries in the build tree, not libraries that were in the
bundle. Furthermore, the plugins would not be in the final bundle.
This points out the fact that the fix for the bugs made by the above
commit was a backwards-incompatible change in behavior.
This commit makes it an error to try to fixup an item that is not
already inside the bundle to make the change in behavior apparent
to folks who were depending on the prior copy-in behavior: now,
they should get an error, and hopefully, reading the new and
improved documentation, should be able to resolve it in their
projects by adding code to install or copy in such libraries prior
to calling fixup_bundle.
Whew.
e0b6016 Some more fixes for nasm support, from Etienne (#10069)
d25c2eb Use CMAKE_ASM_NASM_FLAGS for nasm instead of FLAGS
e614e9b Add support for yasm, a nasm compatible assembler
79dd9be We already have 2010, fix copyright year.
ffeca06 Add missing copyright headers
7b337ac Improve misleading comments.
e1fc9b9 Add support for nasm assembler, patch by Peter Collingbourne (see #10069)
Use the Config mode of find_package to search for ITKConfig. This makes
FindITK a thin-wrapper around a standard find_package, bringing benefits
like searching lib64 paths when appropriate. This does for FindITK what
commit 2c1a01dc (Modernize FindVTK module, 2009-10-07) did for FindVTK.
The Mac linker defines -headerpad_max_install_names and the GCC
front-end passes this flag through. The PGI compiler does not know
about this flag, so we must use -Wl,-headerpad_max_install_names to pass
it to the linker instead.
CMakeDetermineASMCompiler.cmake relied on that somebody else (usually
during enabling C or CXX) already included that file, and broke if that
was not the case.
Thanks to Louis for the patch
Alex
The Cray Fortran compiler needs "-em" to enable module output and also
"-J." to place the .mod files in the current working directory (instead
of next to the .o file).
Previously FindPerlLibs did not work with the Mac stock Perl because it
includes patches. From "perl -V":
Locally applied patches:
/Library/Perl/Updates/<version> comes before system perl directories
installprivlib and installarchlib points to the Updates directory
Adjust paths accordingly.
48e80eb Fixes to GetPrerequisites for cygwin
bee4802 Append the gp_tool path to the system PATH using native slashes.
8e550ba Remove unecessary TO_CMAKE_PATH for gp_cmd_dir.
1684198 Switch to CMAKE_PATH when doing PATH comparisons on Windows.
be94c49 Fixed appending PATH to dumpbin tool from growing without bounds.
Fix IF(WIN32) guards check for cygwin. Fix checking if the depenency is in a system location to use cygwin style paths on cygwin. Also change GetPrerequisites to switch gp_tool to tools that are very unlikely to be found, ie. dumpbin on Apple and otool on Windows/Unix.
Users PATH may contain elements that end with backslash. This will escape the semicolon when iterating resulting in mismatches.
Fix indentation.
Fix whitespace
This fixes bugs #0011355 and 0008342.
The merged patch is a contribution from Michael Lasmanis and Petri Hodju
with some extra documentation added by the merger.
IF(... MATCHES ...) used for comparing directories chokes especially in the case of C:\Program Files (x86)\<blah> because of regex pattern matching. Switched this to use STREQUAL in a loop instead.
Fixed parallel build for projects using generators that have the
CMAKE_EXTRA_GENERATOR as well as CMAKE_GENERATOR. Thanks to Bill Hoffman
for helping me to track this one down, I missed parallel builds.
There is no need to introduce this extra variable as FindBoost
can simply rely on if Boost_USE_STATIC_RUNTIME is defined
or not to disable the old searching behavior for static runtime
libraries on WIN32.
On a Win32 system with a German version of SilkSVN I couldn't run CMake
again on the working copy as the cache is displayed as corrupted. The
cause is that the regular expression to find the version number will not
match and put everything from the "svn --version" output into the cache,
which contains umlauts and other funny characters.
Fix the regexp to not only match " version " but also " Version " as
it's in the German output. I have no idea what will happen on a French
or Japanese system. This should be easy to test as it happens also on a
German Linux system.
b935f00 Close ENDFUNCTION() properly with the same name as FUNCTION()
07bca48 Set a default DESCRIPTION if none is given for ALL mode of feature_summary()
d5b2915 APPEND and not-APPEND mode of feature_summary() were swapped
In each CMake<lang>Information.cmake file we use an _INCLUDED_FILE
variable to track whether a compiler information file has been loaded.
Reset this variable for each language.
This fixes Fortran under VS generators with the Intel plugin.
Previously the variable would be left set true from C and C++ and then
Fortran would not load old-style files like Platform/Windows-ifort.
If a Qt installation is in CMAKE_PREFIX_PATH and a
QT_QMAKE_EXECUTABLE points to a qmake for a different Qt installation,
prefer finding libs in the latter Qt installation.
Use a separate variable to pass to the BUILD_COMMAND call
and then use set(CACHE) to transfer that to MAKECOMMAND.
That way, if MAKECOMMAND is in the cache already, it is
left untouched. Fixes regression introduced in commit
0b38bb4c with the fix for bug #2336.
Thanks to Evgeniy P for the patch.
Parse compiler flags like "-fmessage-length=0 -fstack-protector
-funwind-tables -fasynchronous-unwind-tables -fno-strict-aliasing" from
the output of "mpicc -show". We already handle preprocessor definition
arguments like -DUSE_STDARG. Honor '-f' flags too.
Add Boost_REALPATH option for people packaging Boost with their app:
Boost_REALPATH Resolves symbolic links for discovered boost libraries
to assist with packaging. For example, instead of
Boost_SYSTEM_LIBRARY_RELEASE being resolved to
"/usr/lib/libboost_system.so" it would be
"/usr/lib/libboost_system.so.1.42.0" instead.
This does not affect linking and should not be
enabled unless the user needs this information.
* Add a warning if the user sets Boost_ROOT which is not correct
* Clarify directions to the user for viewing debugging messages
* Move the CMAKE_FIND_LIBRARY_SUFFIXES tweak outside of a for loop
* Fixed issue 11204: FindBoost.cmake had trouble discovering libraries
when both -sgd and -gd libraries were available by adding a new option
Boost_USE_STATIC_RUNTIME.
Backwards compatibility of searching for first -gd and then -sgd on
WIN32 is maintained unless the user sets Boost_COMPAT_STATIC_RUNTIME to
false (or they have set Boost_USE_STATIC_RUNTIME).
* Fixed issue 8529: FindBoost was unable to detect boost libraries compiled against
STLport, by reworking the way the Boost ABI tag is calculated. There are additional
ABI tag options available now as well.
* Boost_DEBUG now reports the full list of filenames being searched for when
find_library is called.
Use a combination of response files and the archiver to support long
object file lists that do not fit in the Windows command-line length
limit. This can work only with GCC >= 4 because the MinGW GCC 3.x
front-ends do not support response-file syntax.
CUDA 3.2 on Windows systems changed the layout of the library paths. This adds the extra
directories needed to locate the new files.
I also explicitly disable emulation mode for CUDA 3.1+. This feature was deprecated in
3.0 and ultimately removed in 3.1. The script errors out if CUDA_BUILD_EMULATION is
turned on. I didn't want to ignore emulation mode (even with a warning - which most
people may not even see) and have users confused as to why it wasn't working.
The default value for CMAKE_INSTALL_PREFIX should be
based on what architecture the built targets are, not
what architecture CMake itself is.
This fix merely guesses better what the built targets
architecture is. It still may guess incorrectly in some
cases. For those cases, it will have to be up to build
scripts and developers on projects to pass in a correct
value for CMAKE_INSTALL_PREFIX with -D on the command line
or via 'force cache value' logic in CMakeLists.txt files.
7944e4e Allow testing of .CPP on WIN32 as it is a case insensitive OS and should work.
ba0a890 Only test for .CPP on Microsoft compilers which will handle .CPP as c++.
d26cd46 Only use .CPP .CXX and .C++ do not work by default with g+++.
ced61f5 Let CMake recognize .CPP .CXX and .C++ as c++ files.
ede24f8 ENH #8993: FindwxWidgets add support for wx-config custom options.
3dbeeb7 BUG #8184: Fixed FindwxWidgets wrong order of default libs for MinGW.
f46712e BUG #11123: Generic include dir should come after config specific one.
6cb14eb STYLE: Clarified/Fixed documentation of UsewxWidgets.
36c15a2 BUG #10658: FindwxWidgets USE_FILE should not include .cmake extension.
5cdfc9c Improve wording of the error message of find_package() in config-mode
4969c3b Improve version notice in the generated message
e8ae504 Add option CONFIG_MODE to FPHSA()
b4b8f96 Don't create an empty element at the end of Foo_CONSIDERED_CONFIGS/VERSIONS
cc955a0 Small cleanup of FindPackageHandleStandardArgs.cmake
0367245 Replace the two vector<string,string> with one vector<struct{string,string}>
130b0e2 Improve error message in Config-mode when no appropriate version was found
dfe9c95 Record all considered Config files and their versions.
This ensures that any bundle items are made user writable before
any attempt is made to alter them using install_name_tool. This is
because MacPorts/Fink/Homebrew don't install libraries as writable.
This fix is needed to allow fixup_bundle_item to work correctly
when ingesting libraries installed by these package managers.
Set CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH in the HP-UX platform file to
tell CMake to pass -Wl,+b,/usr/lib no matter whether RPATH is enabled or
not. This corrects the behavior of -Wl,+nodefaultrpath to look in this
default library path as documented.
The gdk-pixbuf library was split off from core GTK in 2.21 so it could be used
separately by people outside GTK. Now FindGTK searches and adds it to the
library/include list. Thanks to Vincent Untz for the patch and Ricardo Cruz
for the heads up.
This work was started from a patch by Thomas Schiffer.
Thanks, Thomas!
See the newly added documentation of the FOLDER target
property for details.
Also added global properties, USE_FOLDERS and
PREDEFINED_TARGETS_FOLDER. See new docs here, too.
By default, the FOLDER target property is used to organize
targets into folders in IDEs that have support for such
organization.
This commit adds "solution folder" support to the Visual
Studio generators. Currently works with versions 7 through
10.
Also, use the new FOLDER property in the ExternalProject
test and in the CMake project itself.
Include this prefix in CMAKE_SYSTEM_PREFIX_PATH so that it will be used
for all find* commands. Previously only find_library and find_path
would look under /opt/local/lib and /opt/local/include, respectively.
88e6447 Add macro ADD_FEATURE_INFO() and improve docs.
b353524 Improve wording of the documentation.
6fc88b2 Improve documentation.
3333878 Log the required package version and major improvement to FeatureSummary
3178767 Merge 'CPack-FixDESTDIR-Issue7000' from github.com:TheErk/CMake
6a521f8 CPack Enable better handling of absolute installed files
40dc97d CPack Backward-compatibly enforce DESTDIR for DEB and RPM
Now the version number is also printed if no required version was
specified, but a version number was detected (showing more information
shouldn't hurt).
The code for generating the failure message in config-mode is moved
into a separate helper macro, it was becoming too much.
Alex
When this option is used for FPHSA(), it automatically handles the
information created by a preceding find_package(NO_MODULE) all and
creates a proper success/error message.
Alex
ADD_FEATURE_INFO() can be used to set the info for a feature,
e.g. an option().
set_feature_info() has been renamed to set_package_info(), since this is
about found or not found packages. For compatiblity set_feature_info()
is still provided.
Alex
of http://github.com/themiwi/CMake
into fix-10747
Conflicts:
Modules/BundleUtilities.cmake
There was one newly added function in BundleUtilities.cmake
which also needed the same "documentation at top" treatment.
find_package() now also stores the required version automatically, so it
can be used by FeatureSummary.cmake.
This was one of the requested features for setting up nightly builds
for KDE, since with this functionality it will be possible to write
a file at the end of each project which lists all required packages
and their versions. This file could then be compared for equality
with an older one and if something has changed the build maintainer
can be emailed.
In FeatureSummary.cmake there is now a new function feature_summary(),
which also allows to print the log to a file or into a variable.
It also allows to specify whether to append to a file or to write a new
one, and what information to log.
Docs are still missing.
Alex
Fix bug 11120. Parameters files previously went into source
directory when qt4_generate_moc() was given relative paths.
Also simplified some logic for absolute paths.
This commit introduces the ability to add custom targets
that correspond to individual ExternalProject steps.
The main motivation behind this new feature is to drive
sub-project based dashboard steps as external projects
with separate targets for update, configure, build and
test output. This makes it easy to construct a ctest -S
script to drive such a dashboard.
With no STEP_TARGETS defined, there are no additional
custom targets introduced, to minimize the chatter in
the target name space. Clients may define STEP_TARGETS
on a per-ExternalProject_Add basis, or at the directory
level by setting the EP_STEP_TARGETS directory property.
The idea of the patch is to let the install generator define
CPACK_ABSOLUTE_INSTALL_FILES then when CMake is installing
project he will concatenate the list of files and give
it to specific CPack Generator by defining CPACK_ABSOLUTE_INSTALL_FILES
to be the list of ALL files that were installed using absolute destination.
An example of use has been applied to RPM generator which now
tries to automatically build a relocatable package.
Included patch by Simone Rossetto to check if either Python or Perl
are present in the system. Whichever intepreter that is detected
is now used to run the test generator program. If both interpreters
are detected, the CXXTEST_USE_PYTHON variable is obeyed.
Also added support for CXXTEST_TESTGEN_ARGS, for manually specifying
options to the CxxTest code generator.
c327cbd Modules: Fix CMakeParseArguments copyright notice
9eb6cc1 Merge branch 'module-notices' into CMakeParseArguments
b173b87 Add macro CMakeParseArguments() and use it in FPHSA()
In CMAKE_DETERMINE_COMPILER_ID_VENDOR() the compiler is called with various
arguments. In some cases, this can make the compiler hang and wait
forever for input (e.g. "as -v"). That's why add an timeout
so it terminates finally. 10 seconds should be more than enough,
this is the time it takes to startup the compiler, which is
usually quite fast.
Alex
For assembler, the "compiler ID" cannot be detected by "compiling" a
source file, since there is not source file all assemblers understand.
Instead the function CMAKE_DETERMINE_COMPILER_ID_VENDOR() is used to
run the assembler and check its output.
For this the CMAKE_DETERMINE_COMPILER_ID_VENDOR() function had to be
extended so that it creates the run directory if it doesn't exist yet.
In CMakeASMInformation.cmake now also CMAKE_ASM_COMPILER_ID is used
(but there are no such files yet, will come with the support for the
IAR toolchain).
Alex
ZLIB_VERSION_STRING was "1.2.3.#define ZLIB_VERSION "1.2.3"" here, because
the result of the matching for the tweak version was also appended if there
was no TWEAK version and the regexp failed, which gives as result not
an empty string, but the full string.
Now it is only appended if the regexp matches.
Alex
This adds a macro cmake_parse_arguments() (as discussed on cmake-devel)
which can be used in macros or functions to help with parsing its
arguments. Detailled docs are included.
find_package_handle_standard_args() is the first user of this new macro.
Alex
The _TARGET_SUPPORTS_SHARED_LIBS variable was being altered outside of
the find module, moving it into the function fixes any of these scoping
issues. Fix tested and verified in VTK and Titan.
BlueGeneP-base: Internal base shared by static and dynamic files
BlueGeneP-static: Platform file for all-static builds
BlueGeneP-dynamic: Platform file for "default" dynamic builds
* Add support for detecting fontconfig.h header
* Call find_package(Freetype) since it's required
* Add support for allowing users to add additional library directories
via the GTK2_ADDITIONAL_SUFFIXES variable (kind of a future-kludge in
case the GTK developers change versions on any of the directories in the
future).
* Fixed a problem on Windows where you had to configure twice to find
the gtk & gdk libraries
430336c Merge branch 'findsubversion_fphsa_cleanup'
b6c6156 Use FPHSA() in FindSWIG, including version checking.
656cd2f Improved version checking for FindCUDA using the new mode of FPHSA
126db7b Improved version checking for FindSubversion using the new mode of FPHSA()
77d909b Fix DETAILS string with version number in FHPSA()
19b68b9 Improved version checking for FindJava using the new FPHSA() mode
6bb0b6e Improved version checking for FindRuby using the new mode of FPHSA()
946493f FindSquish doesn't detect the version, remove that from the documentation
cb9d1ea Add version checking support to FindFlex and FindPerlLibs
Use response files for C and CXX languages with the Intel compiler on
Windows. We already used them for Fortran. This enables creation of
libraries and executables with a very large number of object files.
Read zlib.h by using file(STRINGS.....REGEX) to limit the amount of text we apply the version regex on. This patch also addresses the fact that the version string may contain a tweak component.
Patch by Simone Rossetto
This additional mode also supports version checking and should be
easily extendible, e.g. for COMPONENT stuff.
Updated FindBISON.cmake as first user of this new mode.
Docs updated.
Alex
The intent was to warn about misspelled keyword arguments,
but the effect was to warn about valid argument values far
too often. Let's stop annoying and confusing people.
By default, if an embedded item is a framework, copy its
main dylib file explicitly, and then also its Resources
if it has any.
Inspect a variable, BU_COPY_FULL_FRAMEWORK_CONTENTS, and
if it's ON, copy the entire framework into the bundle.
ExternalProject_Add calls that did not explicitly request a
CMAKE_GENERATOR would not get recursive parallel make behavior.
This commit fixes that issue.
38c762c Merge 'remove-CTestTest3' into ctest-file-checksum
46df0b4 Activate retry code on any curl submit failure.
8705497 Checksum test should use CMAKE_TESTS_CDASH_SERVER
d0d1cdd Mock checksum failure output for old CDash versions
af5ef0c Testing for CTest checksum
86e81b5 CTest should resubmit in the checksum failed case
d6b7107 Fix subscript out of range crash
082c87e Cross-platform fixes for checksum/retry code
e525649 Checksums on CTest submit files, and retry timed out submissions.
56da481 Changed ADDITIONAL_SEARCH_PATHS to PostgreSQL_ADDITIONAL_SEARCH_PATHS.
106de67 Forgot the copyright notice.
5ecfe16 Adding a FindPostgreSQL.cmake module
7fd3739 Find correct Qt plugins for cross-compiling.
ff888dd Fix some issues with refinding when qmake executable is changed.
22e725f Tweak for cygwin, don't convert : to ;
b55da4c Add cross-compiling support to FindQt4.cmake
Fix niggly in ExternalProject that would inadvertently
create a log file of output when a command was explicitly
set to the empty string.
Also, increase the default value for showing context
around build errors to 10 lines, up from 6. Also add
the ability to customize this setting so that users
can put it back to 6 or even lower if they want, or
show more if they want.
-remove trailing whitespace
-fix description of CPACK_RPM_PACKAGE_SUMMARY
-fix description of CPACK_RPM_PACKAGE_VENDOR
-fix description of CPACK_RPM_PACKAGE_PROVIDES
-do not put changelog of that file to generated RPM but read it from CPACK_RPM_CHANGELOG_FILE
-add CPACK_RPM_PACKAGE_URL
-add CPACK_RPM_PACKAGE_OBSOLETES
-add CPACK_RPM_PACKAGE_SUGGESTS
-add a loop so adding more user supplied header fields is easy
Signed-off-by: Eric NOULARD <eric.noulard@gmail.com>
Commit d84cbd0f (FindMPI: Parse mpicc flags more carefully, 2010-06-24)
broke parsing of '-L' flags appearing after '-Wl,' by expecting a
preceding space. Update the regular expression to allow '-Wl,-L' too.
Do not hard-code known BlueGene/L MPI libraries. We do not know their
location so the linker cannot find them without the proper -L search
path. The MPI compiler tells us about the libraries anyway, and if it
does not then the user can fix the problem locally by editing the
MPI_EXTRA_LIBRARY cache entry.
Extend the fix from commit 68c7d3e2 (FindMPI: Do not parse -l in middle
of library name, 2010-06-24). Parse -D, -I, -L, and -Wl only with
preceding spaces or at the beginning of the string.
ldd can return "not found" and we need to handle it correctly.
In that case, we extract only the name of the library instead of trying for its full path.
Some zlib.h files have ZLIB_VERSION "1.2.3.3" with 4 numbers instead of 3.
The regex is changed to grab the first 3 numbers.
It was slow because if it failed to find that string near the top of the file,
where it usually is, it would read the entire file.
We parse the output of 'mpicc -shome:link' to look for -l options
specifying libraries. Fix the parsing regex to avoid matching the
string '-l' in the middle of a library name.
Avoid issues with two external projects trying to extract two
separate trees at the same time into the same location. Should
fix the sporadically failing ExternalProject test on the dashboards
for parallel builds.
In version 3.0 of the CUDA toolkit when building code for emulation, you need to link
against a new version of the cuda run time library called cudartemu. This CL adds a check
for the new library and uses it when present and in emulation mode. Note that this
library is not present in previous or subsequent versions of the CUDA toolkit.
Optionally hide the output of each external project build step by
wrapping its command in a launcher script. Make output available in log
files instead. This simplifies the output of external project builds.
Tru64's make(1) resolves relative paths in "include" directives with
respect to the includer. This is inconsistent with all other known make
tools. Note that this make tool treats the path literally so we cannot
use our standard FULL path code which escapes spaces. Instead qualify
the paths with $(CMAKE_BINARY_DIR) to avoid the problem.
See http://public.kitware.com/Bug/view.php?id=10346.
The proposed patch for the issue could not be applied as is
because the SOURCE_DIR always exists for an ExternalProject_Add
call by the time we get to the place to emit the potential error.
The fix is to emit the error only if the source dir is empty.
By which, I mean devoid of files and subdirectories. If
SOURCE_DIR is used by itself, without any DOWNLOAD_COMMAND
or repository info, then it implies that the SOURCE_DIR is ready
to build as-is without need for a download step. Clearly, if it
is empty, then it is not ready to build as is. So complain if
the SOURCE_DIR is empty.