Commit Graph

1146 Commits

Author SHA1 Message Date
Brad King a9be85da2e Create FortranCInterface_VERIFY function
This function builds a simple test project using a combination of
Fortran and C (and optionally C++) to verify that the compilers are
compatible.  The idea is to help projects report very early to users
that the compilers specified cannot mix languages.
2009-08-24 08:49:35 -04:00
Bill Hoffman b7e3146275 Output command that failed, if it fails. 2009-08-11 22:01:49 -04:00
Brad King 875c478b64 Test add_test() generator expressions
This teaches the 'testing' test to try generator expressions in
arguments to add_test(NAME).  This test case mimics a common use-case of
passing executables to test driver scripts.  We excercise the syntax for
per-configuration target file names.
2009-08-11 09:56:02 -04:00
Brad King 80f0201b37 Rewrite FortranCInterface module
This is a new FortranCInterface.cmake module to replace the previous
prototype.  All module support files lie in a FortranCInterface
directory next to it.

This module uses a new approach to detect Fortran symbol mangling.  We
build a single test project which defines symbols in a Fortran library
(one per object-file) and calls them from a Fortran executable.  The
executable links to a C library which defines symbols encoding all known
manglings (one per object-file).  The C library falls back to the
Fortran library for symbols it cannot provide.  Therefore the executable
will always link, but prefers the C-implemented symbols when they match.
These symbols store string literals of the form INFO:symbol[<name>] so
we can parse them out of the executable.

This module also provides a simpler interface.  It always detects the
mangling as soon as it is included.  A single macro is provided to
generate mangling macros and optionally pre-mangled symbols.
2009-08-05 13:40:29 -04:00
Brad King 87442aefb0 Remove WXDialog source code
The QtDialog is our supported cross-platform GUI, so the WXDialog source
is no longer needed.
2009-08-05 10:15:30 -04:00
Brad King 80c947b397 No /fast targets in try_compile project mode
The try_compile command builds the cmTryCompileExec executable using the
cmTryCompileExec/fast target with Makefile generators in order to save
time since dependencies are not needed.  However, in project mode the
command builds an entire source tree that may have dependencies.
Therefore we can use the /fast target approach only in one-source mode.
2009-08-04 14:37:46 -04:00
Brad King f3cd1e06f5 Test C, C++, Fortran interface combinations
Previously the Fortran test created a single executable containing C,
C++, and Fortran sources.  This commit divides the executable into three
libraries corresponding to each language, and two executables testing
Fortran/C only and Fortran/C/C++ together.  The result tests more
combinations of using the languages together, and that language
requirements propagate through linking.
2009-08-04 14:06:45 -04:00
Brad King 73de2362dd Fix recursive try_compile calls
When building an entire source tree with try_compile instead of just a
single source file, it is possible that the CMakeLists.txt file in the
try-compiled project invokes try_compile.  This commit fixes propagation
of language-initialization results from the outer-most project into any
number of try-compile levels.
2009-08-03 13:37:36 -04:00
Brad King 1a159bbf33 Test try_compile project mode
The try_compile command project mode builds an entire source tree
instead of one source file.  It uses an existing CMakeLists.txt file in
the given source tree instead of generating one.  This commit creates a
test for the mode in the TryCompile test.
2009-08-03 13:37:28 -04:00
Brad King 2537a72f8e Check PGI linker lines in ImplicitLinkInfo test
This adds sample linker invocation lines for the PGI compiler on Linux.
2009-07-29 16:38:12 -04:00
Brad King f47ae0599d Check Intel linker lines in ImplicitLinkInfo test
This adds sample linker invocation lines for the Intel compiler on
Linux.  In particular, this exercises the case when "ld" appears without
a full path.
2009-07-29 16:07:33 -04:00
Brad King 819b0742c6 Test cache entry property "STRINGS"
The STRINGS property tells cmake-gui to create a drop-down selection
list.  This teaches the Properties test to set and verify its value.
2009-07-29 08:39:50 -04:00
Brad King 836447663e BUG: Parse implicit link editor -z*extract options
The Sun Fortran compiler passes -zallextract and -zdefaultextract to the
linker so that all objects from one of its archives are included in the
link.  This teaches the implicit options parser to recognize the flags.
We need to pass them explicitly on C++ link lines when Fortran code is
linked.
2009-07-28 08:36:11 -04:00
Brad King 2b849a77a6 ENH: Test Fortran and C++ in one executable
This extends the Fortran-to-C interface test to add a C++ source file.
The executable can only link with the C++ linker and with the proper
Fortran runtime libraries.  These libraries should be detected by CMake
automatically, so this tests verifies the detection functionality.
2009-07-27 12:43:42 -04:00
Brad King 1c98cdf224 ENH: Remove EXTRA_FORTRAN_C_LIBS Fortran test hack
This hack was created to help the Fortran test executables link to the
implicit C libraries added by BullsEye.  Now that implicit libraries
from all languages are detected and included automatically the hack is
no longer needed.
2009-07-27 12:43:27 -04:00
Brad King 0afa7a95f2 ENH: Report CMake logs in SystemInformation test
This teaches the SystemInformation test to report the CMake log files
CMakeOutput.log and CMakeError.log from the CMake build tree and from
the SystemInformation test build tree.  These logs may help diagnose
dashboard problems remotely.
2009-07-27 12:35:12 -04:00
David Cole 7ae028eb33 ENH: Make the CheckSourceTree test emit a warning (but pass instead of fail) when there is an in-source build on a dashboard machine. 2009-07-27 12:04:03 -04:00
Brad King 38d1ff59da ENH: Require language libs in Fortran/C test
This extends the Fortran/C interface test to require that the executable
link to the fortran language runtime libraries.  We must verify that the
proper linker is chosen.
2009-07-27 11:56:09 -04:00
David Cole 32be77df8c ENH: Improvements to the new CheckSourceTree test: ignore Thumbs.db and .DS_Store files. Force all output to stderr by not using STATUS with message. Better error text. 2009-07-25 13:32:07 -04:00
Brad King 55718eb869 BUG: Further avoid ImplicitLinkInfo case change
The commit "Avoid case change in ImplicitLinkInfo test" did not change
all of the paths to mingw, so some case change still occurs.  This
changes more of them.
2009-07-25 08:11:57 -04:00
David Cole c84255d703 BUG: One last attempt for today to get the new CheckSourceTree test running on dashboards driven by CMake 2.4... Good night now. 2009-07-24 18:30:00 -04:00
David Cole 6414fa21fe BUG: Close endif statements with same string as if so that it still configures with CMake 2.4. One more time. Encore, encore. 2009-07-24 17:28:54 -04:00
David Cole 6237c6ead4 BUG: Improve CheckSourceTree test so that it ignores 'U ' output from cvs update. Also: improve failure logic for dashboard runs and developer runs. 2009-07-24 17:12:37 -04:00
Brad King d958105afb BUG: Teach VariableWatch test to check results
Previously this test was only a smoke test for manual verification.
This teaches the test to actually check that the variable watch
succeeds.
2009-07-24 16:57:38 -04:00
David Cole e0461bbcbc BUG: Close endif statements with same string as if so that it still configures with CMake 2.4 -- also check for existence of FindCVS.cmake before doing find_package(CVS QUIET) also for CMake 2.4 sake... 2009-07-24 16:31:33 -04:00
David Cole b819ee85c0 BUG: Oops. Left chunk of junk at the bottom of the main Tests CMakeLists.txt file with the last commit... Sorry. 2009-07-24 16:15:10 -04:00
David Cole 5bea9620dc BUG: Additional fix necessary for issue #8481 so that Xcode builds do not write files into the source tree. Also add a test that runs last to check for local modifications in CMake_SOURCE_DIR based on whether 'cvs -q -n up -dP' output is empty. Test fails on dashboard runs when there are local modifications. Test passes on non-dashboard runs with local modifications so that CMake developers may have mods when running the test locally. 2009-07-24 15:58:23 -04:00
Brad King e981dc99f5 BUG: Avoid case change in ImplicitLinkInfo test
Since "get_filename_component(... ABSOLUTE)" retrieves the actual case
for existing paths on windows, we need to use an obscure path for mingw.
Otherwise the test can fail just because the case of the paths changes.
2009-07-24 07:34:03 -04:00
Brad King c98aaceb92 ENH: Create ImplicitLinkInfo test
This tests the internal CMakeParseImplicitLinkInfo.cmake module to
ensure that implicit link information is extracted correctly.  The test
contains many manually verified examples from a variety of systems.
2009-07-23 10:07:39 -04:00
Brad King 07ea19ad1f ENH: Implicit link info for C, CXX, and Fortran
This teaches CMake to detect implicit link information for C, C++, and
Fortran compilers.  We detect the implicit linker search directories and
implicit linker options for UNIX-like environments using verbose output
from compiler front-ends.  We store results in new variables called

  CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
  CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES

The implicit libraries can contain linker flags as well as library
names.
2009-07-23 10:07:25 -04:00
Brad King 267085f338 ENH: Improve strictness of Function test
The command "set(... PARENT_SCOPE)" should never affect the calling
scope.  This improves the Function test to check that such calls in a
subdirectory scope affect the parent but not the child.
2009-07-22 13:42:27 -04:00
Brad King 924dd34451 BUG: Fix SystemInformation dump output
When this test was renamed from DumpInformation to SystemInformation the
configured header that points the dump executable to the directory
containing information files was broken.  No information has been dumped
by this test for 2 years!  This fixes it.
2009-07-21 10:56:31 -04:00
Bill Hoffman 0902d2918e ENH: set expected failure for tests 2009-07-20 10:58:50 -04:00
Bill Hoffman 3d1c12b802 ENH: remove INCLUDE_EXTERNAL_MSPROJECT name hack, and use target properties instead, fix VXExternalInclude test for VS10 2009-07-14 14:16:46 -04:00
Brad King b23b1800a5 ENH: Teach separate_arguments() to parse commands
This adds UNIX_COMMAND and WINDOWS_COMMAND modes to the command.
These modes parse unix- and windows-style command lines.
2009-07-14 10:15:47 -04:00
Brad King b44413f9f8 COMP: Shorten ExportImport test command lines
The ExportImport test drives its Export and Import projects using the
same compiler and flags.  This converts the ctest --build-and-test
command lines to use an initial cache file instead of passing all
settings on the command line.

We need a shorter command line to pass through VS 6 on Win98.
This approach reduces duplicate code anyway.
2009-07-14 08:38:24 -04:00
Bill Hoffman 11d42b3e8f ENH: almost all tests passing in vs 10, commit fixes preprocess and starts vs external project 2009-07-13 16:58:24 -04:00
Brad King 61367c69d7 COMP: Fix ExportImport testLib6 on VS6
The compiler does not support multiple source files differing only by
extension in one target.  This renames the C source file in the test.
2009-07-13 09:20:36 -04:00
Alexander Neundorf 0429853f1b BUG: disable the test for now, will make it work correctly later
Alex
2009-07-12 14:52:31 -04:00
Alexander Neundorf 7048373296 STYLE: don't load CMakeDetermineSystem and CMakeSystemSpecific directly from
cmCTestScriptHandler, but have it load the new script CTestScriptMode.cmake
-> that makes it more flexible, also add a simple test that the system name
has been determined correctly

Alex
2009-07-12 04:51:51 -04:00
Brad King 3621e073a8 ENH: Test export/import of link interface languages
This extends the ExportImport test.  The Export project creates a C++
static library and exports it.  Then the Import project links the
library into a C executable.  On most platforms the executable will link
only if the C++ linker is chosen correctly.
2009-07-11 10:10:51 -04:00
Bill Hoffman 28b1912aa3 ENH: add group support and fix borland error 2009-07-11 00:05:20 -04:00
Brad King 22b96543e5 ENH: Test transitive link languages
This test creates a C executable that links to a C++ static library.  On
most platforms the executable will not link unless the C++ linker is
chosen correctly.
2009-07-10 13:53:38 -04:00
Brad King d4d467dbd5 ENH: Teach CTest to handle Mercurial repositories
This creates cmCTestHG to drive CTest Update handling on hg-based work
trees.  Currently we always update to the head of the remote tracking
branch (hg pull), so the nightly start time is ignored for Nightly
builds.  A later change will address this.

See issue #7879.  Patch from Emmanuel Christophe.  I modified the patch
slightly for code style, to finish up some parsing details, and to fix
the test.
2009-07-10 11:08:05 -04:00
Bill Hoffman 5c4208f50e ENH: only 5 failing tests for VS 10 2009-07-10 09:12:39 -04:00
Brad King d1aa17a7b0 ENH: Remove CMAKE_ANSI_CFLAGS from tests
As of CMake 2.6 this variable is not defined, and the ANSI flags for the
HP compiler are simply hard-coded in the default C flags.
2009-07-08 11:41:48 -04:00
Brad King 4fc192c6cf BUG: Skip CTest.Update* for cygwin tools on Windows
These tests cannot run with cygwin tools unless testing cygwin CTest.
The version control tools do not understand all Windows paths.
2009-07-01 14:29:25 -04:00
David Cole 44878e7b11 BUG: Exclude svn portions of ExternalProject test when: svn client version is less than 1.2 or cygwin/non-cygwin mismatch detected -- avoids ExternalProject test failures on dash5 and dash22-cygwin. Also, non-code change: allow cvslock through Windows firewall to prevent ExternalProject test failure on dash1vista32. 2009-07-01 13:48:38 -04:00
David Cole fb81cd93f0 BUG: Avoid running the cvs portions of the ExternalProject test on non-cygwin builds that are using cygwin cvs.exe. 2009-06-29 10:46:45 -04:00
David Cole 0e6c530e9e BUG: Downgrade svn repository to be created with an svn 1.2 installation (rather than 1.4) so that it works (hopefully) with more svn clients in the wild. Change time stamps of test projects in CMakeLists.txt to reflect times available in newly created repository. Add UPDATE_COMMAND "" for checkouts that are tag-based or date-stamp-based to avoid unnecessary update steps. 2009-06-26 13:00:39 -04:00
David Cole 688db8a17d ENH: Do not unzip the local repositories unless CVS and SVN executables are available. Add 'configure' step to the repository extraction 'projects' to print the version number of CVS and SVN in the dashboard test/build output. 2009-06-26 11:32:04 -04:00
David Cole f23668a919 ENH: Revise the ExternalProject test to use local CVS and SVN repositories to avoid network activity. Also: stop building KWStyle and kwsys as part of this test to reduce the amount of time spent running the test. Instead, build TutorialStep1 as retrieved from the new local repositories with various tags, date stamps and revision numbers. 2009-06-26 09:55:35 -04:00
David Cole f96f7f8612 ENH: Add *.tgz files of cvs and svn repositories containing the TutorialStep1 project to test cvs and svn capabilities of ExternalProject without requiring network activity. 2009-06-25 12:03:00 -04:00
Brad King c8a1621ebf BUG: Fix CTest.UpdateBZR tests to run in parallel
The UpdateBZR and UpdateBZR.CLocale tests should run in different
directories so that they can be executed in parallel.
2009-06-25 10:51:53 -04:00
Brad King 031379abe6 ENH: New ExternalProject.cmake module interface
This creates new module ExternalProject.cmake to replace the prototype
AddExternalProject.cmake module.  The interface is more refined, more
flexible, and better documented than the prototype.

This also converts the ExternalProject test to use the new module.  The
old module will be removed (it was never in a CMake release) after
projects using it have been converted to the new module.
2009-06-24 15:03:26 -04:00
Brad King 191573e8d7 BUG: Extend timeout of ExternalProject test
This test requires a long time on slower machines, so we need to extend
its timeout.  It is an important test, so it does not fall under the
CMAKE_RUN_LONG_TESTS option.  In the future we should try to shorten the
test by building simpler external projects.
2009-06-24 14:48:27 -04:00
Ken Martin 57a0f830df ENH: fix spelling mistake 2009-06-23 12:58:19 -04:00
Brad King db024f444e ENH: Auto-enable CTest.UpdateCVS test on Windows
The test needs to create a cvs repository with 'cvs init', but the CVSNT
client on Windows needs 'cvs init -n' to avoid administrator access.
Previously we required users to explicitly enable CTEST_TEST_UPDATE_CVS
to activate the test on Windows.

This teaches the test to use the '-n' option when necessary.  Now we can
enable the test in all cases except when trying to use a cygwin cvs.exe
without cygwin paths.
2009-06-22 16:26:02 -04:00
Brad King f4b3bdc6be BUG: Create an exe's implib output dir for VS
If an executable marks symbols with __declspec(dllexport) then VS
creates an import library for it.  However, it forgets to create the
directory that will contain the import library if it is different from
the location of the executable.  We work around this VS bug by creating
a pre-build event on the executable target to make the directory.
2009-06-15 10:55:21 -04:00
Brad King 55c4cbbae9 BUG: Parse more bzr xml output encodings
The BZR xml output plugin can use some encodings that are not recognized
by expat, which leads to "Error parsing bzr log xml: unknown encoding".
This works around the problem by giving expat a mapping, and adds a
test.  Patch from Tom Vercauteren.  See issue #6857.
2009-05-18 10:34:35 -04:00
Brad King a524e07152 ENH: Teach CTest to handle Bazaar repositories
This creates cmCTestBZR to drive CTest Update handling on bzr-based work
trees.  Currently we always update to the head of the remote tracking
branch (bzr pull), so the nightly start time is ignored for Nightly
builds.  A later change will address this.  Patch from Tom Vercauteren.
See issue #6857.
2009-05-14 16:13:52 -04:00
Brad King 33a1076b84 BUG: file(COPY) test should not make read-only dir
CMake directory removal code cannot remove content from read-only
directories (a separate bug which will be fixed).  Therefore we should
not create them in the StringFileTest.  This tweaks the file(COPY) call
to test not giving OWNER_WRITE to files rather than directories.
2009-05-13 10:30:22 -04:00
Brad King 430cc2b4b7 ENH: Always imply CLEAN_DIRECT_OUTPUT target prop
This property was left from before CMake always linked using full path
library names for targets it builds.  In order to safely link with
"-lfoo" we needed to avoid having both shared and static libraries in
the build tree for targets that switch on BUILD_SHARED_LIBS.  This meant
cleaning both shared and static names before creating the library, which
led to the creation of CLEAN_DIRECT_OUTPUT to disable the behavior.

Now that we always link with a full path we do not need to clean old
library names left from an alternate setting of BUILD_SHARED_LIBS.  This
change removes the CLEAN_DIRECT_OUTPUT property and instead uses its
behavior always.  It removes some complexity from cmTarget internally.
2009-05-01 10:38:35 -04:00
Brad King 2740db5ede ENH: Allow more specification of target file names
This creates target properties ARCHIVE_OUTPUT_NAME, LIBRARY_OUTPUT_NAME,
and RUNTIME_OUTPUT_NAME, and per-configuration equivalent properties
ARCHIVE_OUTPUT_NAME_<CONFIG>, LIBRARY_OUTPUT_NAME_<CONFIG>, and
RUNTIME_OUTPUT_NAME_<CONFIG>.  They allow specification of target output
file names on a per-type, per-configuration basis.  For example, a .dll
and its .lib import library may have different base names.

For consistency and to avoid ambiguity, the old <CONFIG>_OUTPUT_NAME
property is now also available as OUTPUT_NAME_<CONFIG>.

See issue #8920.
2009-05-01 09:45:43 -04:00
Brad King 1f7ef5bf7a BUG: Fix CMake.File test for deep dir name
This fixes the regex checking expected output of Copy-NoFile to account
for line wrapping when the input directory name is long.
2009-04-29 14:02:54 -04:00
Brad King e0d3339e65 ENH: Test file(COPY) failure cases
This tests some cases of bad arguments to the file(COPY) signature.
It checks that the proper error messages are produced.
2009-04-29 13:13:58 -04:00
Brad King c58ca24286 ENH: Create file(COPY) command signature
The file(INSTALL) command has long been undocumented and used only to
implement install() scripts.  We now document it and provide a similar
file(COPY) signature which is useful in general-purpose scripts.  It
provides the capabilities of install(DIRECTORY) and install(FILES) but
operates immediately instead of contributing to install scripts.
2009-04-29 13:13:29 -04:00
Brad King 6a74dbbeef ENH: Test spaces in non-string preprocessor values
This extends the Preprocessor test to put spaces in the value of a
definition that is not a quoted string.  In particular this tests that
VS6 supports values with spaces if they do not have '"', '$', or ';'.
See issue #8779.
2009-04-24 11:21:09 -04:00
Brad King 708d1cf1ee ENH: Support more preprocessor values in VS6
Previously we rejected all preprocessor definition values containing
spaces for the VS6 IDE generator.  In fact VS6 does support spaces but
not in combination with '"', '$', or ';', and only if we use the sytnax
'-DNAME="value with spaces"' instead of '-D"NAME=value with spaces"'.
Now we support all definition values that do not have one of these
invalid pairs.  See issue #8779.
2009-04-24 11:18:06 -04:00
Brad King d847ca8e27 BUG: Fix CTest.UpdateGIT test for older git
Older git versions do not support 'git init --bare', so we instead use
the more proper 'git --bare init'.
2009-04-23 09:10:07 -04:00
Brad King 9c17cbeb44 ENH: Teach CTest to handle git repositories
This creates cmCTestGIT to drive CTest Update handling on git-based work
trees.  Currently we always update to the head of the remote tracking
branch (git pull), so the nightly start time is ignored for Nightly
builds.  A later change will address this.  See issue #6994.
2009-04-22 09:19:06 -04:00
Bill Hoffman 3ca9bf797c ENH: make sure tests for cpack are run correctly 2009-04-21 17:15:42 -04:00
Bill Hoffman c8513fe14b ENH: make sure tests for cpack are run correctly 2009-04-21 17:15:04 -04:00
Bill Hoffman 0bbed87a5b ENH: make sure tests for cpack are run correctly 2009-04-21 17:13:46 -04:00
Bill Hoffman 572cf0212f ENH: make sure tests for cpack are run correctly 2009-04-21 17:12:37 -04:00
Brad King 0d92350bb6 ENH: Create file(RENAME) command mode
This creates command "file(RENAME <oldname> <newname>)" to rename a file
or directory within a single disk volume.
2009-04-15 09:58:13 -04:00
Brad King 68248be52e ENH: Allow lists in AddExternalProject arguments
The add_external_project function separates its arguments with ';'
separators, so previously no command line argument could contain one.
When specifying CMAKE_ARGS, some -D argument values may need to contain
a semicolon to form lists in the external project cache.

This adds add_external_project argument LIST_SEPARATOR to specify a list
separator string.  The separator is replaced by ';' in arguments to any
command created to drive the external project.  For example:

  add_external_project(...
    LIST_SEPARATOR ::
    CMAKE_ARGS -DSOME_LIST:STRING=A::B::C
    ...)

passes "-DSOME_LIST:STRING=A;B;C" to CMake for the external project.
2009-04-09 13:56:08 -04:00
Brad King d05e98f8d7 ENH: Allow IMPORTED_IMPLIB w/o IMPORTED_LOCATION
Linking to a Windows shared library (.dll) requires only its import
library (.lib).  This teaches CMake to recognize SHARED IMPORTED library
targets that set only IMPORTED_IMPLIB and not IMPORTED_LOCATION.
2009-04-08 16:29:04 -04:00
Brad King d49978a948 ENH: Teach Update* tests to report local mod step
The CTest.UpdateCVS/SVN tests report every step with a message.  This
adds a message for the local modification step.
2009-04-08 09:22:08 -04:00
Brad King cd532b6132 ENH: Make UpdateCVS test robust to 1s file time res
CVS clients recognize file modifications only if a file's timestamp is
newer than its CVS/Entries line.  This fixes intermittent failure of the
test on filesystems with low timestamp resolution by delaying before
creating a local modification.
2009-04-08 09:21:57 -04:00
Brad King d6bdaf9f13 ENH: Test transitive link to subdir-imported lib
This tests linking to an imported target that is not visible but is a
transitive dependency of a target that is visible.  See issue #8843.
2009-04-06 11:11:33 -04:00
David Cole 2981936707 STYLE: White space only change to see if continuous is working on new dashboard machine... 2009-03-31 13:50:26 -04:00
David Cole 17d62105d6 STYLE: White space only change to see if continuous is working on new dashboard machine... 2009-03-31 13:16:56 -04:00
Brad King d2175580e7 ENH: Generalize AddExternalProject step creation
This creates function 'add_external_project_step' to centralize creation
of external project steps.  Users may call it to add custom steps to
external project builds.
2009-03-30 11:36:32 -04:00
Brad King 5f4686920d BUG: Fix CMAKE_CURRENT_LIST_FILE in macros
The value of CMAKE_CURRENT_LIST_FILE is supposed to be the list file
currently being executed.  Before macros were introduced this was always
the context of the argument referencing the variable.

Our original implementation of macros replaced the context of command
arguments inside the macro with that of the arguments of the calling
context.  This worked recursively, but only worked when macros had at
least one argument.  Furthermore, it caused parsing errors of the
arguments to report the wrong location (calling context instead of line
with error).

The commit "Improve context for errors in macros" fixed the latter bug
by keeping the lexical context of command arguments in macros.  It broke
evaluation of CMAKE_CURRENT_LIST_FILE because the calling context was no
longer preserved in the argument referencing the variable.  However,
since our list file processing now maintains the proper value of
CMAKE_CURRENT_LIST_FILE with dynamic scope we no longer need the context
of the argument and can just evaluate the variable normally.
2009-03-25 10:37:04 -04:00
Brad King 4085454658 ENH: Support preprocessor def values in VS6
The add_definitions() command and COMPILE_DEFINITIONS dir/tgt/src
properties support preprocessor definitions with values.  Previously
values were not supported in the VS6 generator even though the native
tool supports them.  It is only values with spaces that VS6 does not
support.  This enables support and instead complains only for values
with spaces.  See issue #8779.
2009-03-23 14:48:09 -04:00
Brad King 2cc46c12f8 ENH: Add patch step for add_external_project
The patch step runs parallel to the update step since it does not make
sense to have both.  Configuration of the step requires specification of
a PATCH_COMMAND argument to add_external_project.
2009-03-18 11:01:02 -04:00
Brad King 6ae0ff626a ENH: Improve add_external_project interface
This rewrites the keyword/argument parsing and handling in the
AddExternalProject module to use arguments more literally:

  - The strict keyword-value pairing is gone in favor of keywords with
    arbitrary non-keyword values.  This avoids requiring users to escape
    spaces and quotes in command lines.

  - Customized step command lines are now specified with a single
    keyword <step>_COMMAND instead of putting the arguments in a
    separate entry (previously called <step>_ARGS).

  - Build step custom commands now use VERBATIM mode so that arguments
    are correctly escaped on the command line during builds.
2009-03-18 11:00:30 -04:00
Brad King ecb0f3af55 ENH: New foreach(<var> IN ...) mode
This creates a new mode of the foreach command which allows precise
iteration even over empty elements.  This mode may be safely extended
with more keyword arguments in the future.  The cost now is possibly
breaking scripts that iterate over a list of items beginning with 'IN',
but there is no other way to extend the syntax in a readable way.
2009-03-17 15:10:15 -04:00
Brad King 493f88ce55 ENH: Allow projects to disable per-rule echo lines
This creates global property RULE_MESSAGES which can be set to disbale
per-rule progress and action reporting.  On Windows, these reports may
cause a noticable delay due to the cost of starting extra processes.
This feature will allow scripted builds to avoid the cost since they do
not need detailed information anyway.  This replaces the RULE_PROGRESS
property created earlier as it is more complete.  See issue #8726.
2009-03-16 16:55:58 -04:00
Brad King 2f651c2e59 ENH: Allow projects to disable per-rule progress
This creates global property RULE_PROGRESS which can be set to disbale
per-rule progress reporting.  On Windows, progress reports may cause a
noticable delay due to the cost of starting an extra process.  This
feature will allow scripted builds to avoid the cost since they do not
need detailed progress anyway.  See issue #8726.
2009-03-16 16:22:19 -04:00
Brad King 9862f383d0 ENH: Add NAME mode to ADD_TEST command
This creates command mode add_test(NAME ...).  This signature is
extensible with more keyword arguments later.  The main purpose is to
enable automatic replacement of target names with built target file
locations.  A side effect of this feature is support for tests that only
run under specific configurations.
2009-03-16 10:51:30 -04:00
Brad King e5e91d6179 ENH: Teach set/get_property about CACHE properties
This adds the CACHE option to set_property and get_property commands.
This allows full control over cache entry information, so advanced users
can tweak their project cache as desired.  The set_property command
allows only pre-defined CACHE properties to be set since others would
not persist anyway.
2009-03-10 11:10:59 -04:00
David Cole 7bf80c9a11 STYLE: White space only change to see if continuous is working on new dashboard machine... 2009-03-06 14:29:31 -05:00
Brad King ca3b93d9c6 ENH: Teach message() how to display warnings
This adds message(WARNING) and message(AUTHOR_WARNING) command modes and
fully documents the command behavior in all modes.
2009-03-06 10:04:06 -05:00
Brad King 98c51ff6dc ENH: Overhaul CMake version numbering
This moves the version numbers into an isolated configured header so
that not all of CMake needs to rebuild when the version changes.

Previously we had spaces, dashes and/or the word 'patch' randomly chosen
before the patch number.  Now we always report version numbers in the
traditional format "<major>.<minor>.<patch>[-rc<rc>]".

We still use odd minor numbers for development versions.  Now we also
use the CCYYMMDD date as the patch number of development versions, thus
allowing tests for exact CMake versions.
2009-03-05 15:17:07 -05:00
Brad King 170febac52 ENH: Cleanup cmake --build interface.
This cleans up the 'cmake --build' command-line interface:
  - Rename --clean to --clean-first to better describe it.
  - Replace --extra-options with a -- separator to simplify passing of
    multiple native build tool options.
  - Document the options in the main CMake man page description of the
    --build option, and shares this with the usage message.
  - Require --build to be the first argument when present.
  - Move implementation into cmakemain where it belongs.
2009-03-04 15:39:27 -05:00
Brad King ba5cbf0fb1 ENH: Better recursive make in AddExternalProject
This teaches AddExternalProject to run "$(MAKE)" for build and install
steps of CMake-based external projects when using a Makefile generator.
It allows the external project to participate in a parallel make invoked
on the superproject.
2009-03-04 11:45:42 -05:00
Brad King 7960f7541c ENH: Extend CTest.UpdateSVN to test local mods
This teaches the test to create local modifications in the work tree
before updating.
2009-02-26 09:22:16 -05:00
Brad King ff32962a68 ENH: Test included header in Fortran preprocessing
This extends the Fortran preprocessing test to include a header file
through a preprocessor directive.
2009-02-24 14:32:31 -05:00