Commit Graph

66 Commits

Author SHA1 Message Date
Brad King 128605054a Normalize slashes of add_custom_(command|target) DEPENDS ()
All commands accepting file paths should normalize the slashes so that
the string-represented names can be compared reliably.  The commands
add_library and add_executable have done this for years.  We taught
add_custom_command to normalize its OUTPUT names in commit a75a0a14
(Normalize add_custom_command OUTPUT names, 2010-12-15).  We handled a
special case of the DEPENDS option in commit 7befc007 (Handle trailing
slashes on add_custom_command DEPENDS, 2011-01-26).

Teach both add_custom_command and add_custom_target to normalize slashes
of DEPENDS files up front.  This approach subsumes the above-mentioned
special case so remove the one line added for it but keep its test.
Extend the CustomCommand test to check that slash count mismatches
between custom command OUTPUT and DEPENDS can still be linked correctly.
2011-03-30 09:52:07 -04:00
Brad King 31b0657e7d Merge topic 'custom-command-generator-expressions'
4499d50 Mark CustomCommand test perconfig.out as SYMBOLIC
f0cdb60 Introduce "generator expression" syntax to custom commands ()
4749e4c Record set of targets used in cmGeneratorExpression
ef9e9de Optionally suppress errors in cmGeneratorExpression
45e1953 Factor per-config sample targets out of 'Testing' test
4091bca Factor generator expression docs out of add_test
bfb7288 Record backtrace in cmCustomCommand
2010-12-21 14:03:24 -05:00
Brad King 4499d50ad2 Mark CustomCommand test perconfig.out as SYMBOLIC
The custom command with this output does not actually create the file,
so mark it as SYMBOLIC.
2010-12-20 12:09:23 -05:00
Brad King f0cdb6001b Introduce "generator expression" syntax to custom commands ()
Evaluate in the COMMAND arguments of custom commands the generator
expression syntax introduced in commit d2e1f2b4 (Introduce "generator
expressions" to add_test, 2009-08-11).  These expressions have a syntax
like $<TARGET_FILE:mytarget> and are evaluated during build system
generation.  This syntax allows per-configuration target output files to
be referenced in custom command lines.
2010-12-15 14:53:48 -05:00
Brad King a75a0a1448 Normalize add_custom_command OUTPUT names ()
Previously the OUTPUT arguments of add_custom_command were not
slash-normalized but those of add_library and add_executable were.
This caused the example

  add_custom_command(OUTPUT a//b.c ...)
  add_library(... a//b.c ...)

to fail at build time with "no rule to make a/b.c".  Fix this and modify
the CustomCommand test to try it.
2010-12-15 08:44:57 -05:00
Brad King ced1d5eccd Skip file-level dependencies on custom targets ()
A custom command may name a target created by add_custom_target in its
DEPENDS field.  Treat this case as a target-level dependency only since
a custom target provides no standard file on which to add a file-level
dependency.
2010-12-08 17:14:17 -05:00
David Cole a798bb7074 Avoid CustomCommand test failure on VS71 ()
Test still failing on dash1.kitware. Give up on testing
the new arg on MSVC71. Test it with newer nmakes instead.
All other dashboards are fine with -DPATH=c:/posix/path
as the first arg, so keep it except when MSVC71 is true.
2010-09-20 13:20:15 -04:00
David Cole 9b4ab06c2c Avoid CustomCommand test failure on VS71 ()
The new first arg in the test is the critical one
to prove that the new NMake specific code works.
The additional colons in the middle of the arg
stream work fine everywhere else, but not on
dash1.kitware with Visual Studio 7.1. Just avoid
the failure for now by removing the unnecessary
new args from the test.
2010-09-14 10:36:43 -04:00
David Cole 9d2e6489bf No extra spaces in CustomCommand test ()
The nightly dashboard showed that the following
platforms had difficulties dealing with "bin dir"
and/or "check command line" as directory and
file names:

  AIX
  Borland 5.5, 5.6 and 5.8
  IRIX
  NMake 6.0
  OpenBSD
  VS 7.1
  Watcom

Re-visit later, after the release, to use spaces
in the bin dir and in the target name where possible.
2010-09-12 05:01:35 -04:00
David Cole 269a4b876a Enable calling commands with : in argv[1] ()
The solution seems hackish, but it works: for
NMake only, prepend a no-op command before each
real command that begins with ".

This is really a work-around for an NMake problem.
When a command begins with ", nmake truncates the
first argument to the command after the first :
in that arg. It has a parsing problem.

Workaround..., hackish..., but it should solve
the issue for  and its related friends.

Also, modify the CustomCommand test to replicate
the problem reported in issue . Before the
NMake specific code change, the test failed.
Now, it passes. Ahhhhhh.
2010-09-10 17:55:45 -04:00
David Cole 8562f5400d Oops. Last commit did not create subdir before doing a touch on a file in it. So it fails on some platforms. This fixes that. 2009-09-25 13:36:08 -04:00
David Cole f199385605 Fix CMake Internal Error from cmTarget::GetOutputInfo - triggered by calling GetLocation on a utility target - caused by custom command output file with same name as custom target. The fix is to avoid calling GetLocation unless the target is of a type that is expected to have a location... 2009-09-25 13:23:19 -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 0a83aa6f57 BUG: Fix windows command line escape for empty arg
On Windows the KWSys System package generates escapes for command-line
arguments.  This fix enables quoting of the empty string as an argument.
This also adds a test to pass an empty argument to a custom command.
2008-12-18 13:36:58 -05:00
Brad King c5f70ff27f ENH: Allow custom sources in custom targets
This adds a SOURCES option to ADD_CUSTOM_TARGET, enabling users to
specify extra sources for inclusion in the target.  Such sources may not
build, but will show up in the IDE project files for convenient editing.
See issue .
2008-10-09 11:01:23 -04:00
Brad King 32df2a715b ENH: Test relative path custom command output
As of CMake 2.6 a custom command output specified by relative path is
placed in the build tree.  This adds a test to make sure other
references to the output are hooked up correctly, fixing a bug in CMake
2.6.1.
2008-08-05 13:27:14 -04:00
Brad King 3ecfb5f7e8 BUG: Fix new custom command with make-var expansion test on VS6. The VS6 IDE adds some extra characters to the variable value during expansion. 2008-06-05 10:01:16 -04:00
Brad King 306e3e573f ENH: Add test for make variable replacement in a custom command with the VERBATIM option. 2008-06-04 12:10:59 -04:00
Brad King bed3ac8741 ENH: Remove SKIP_RULE_DEPENDS option from add_custom_command()
- Option was recently added but never released.
  - Custom commands no longer depend on build.make so we do
    not need the option.
  - Rule hashes now take care of rebuilding when rules change
    so the dependency is not needed.
2008-06-02 16:45:07 -04:00
Brad King 600e5e274e ENH: Add SKIP_RULE_DEPENDS option for add_custom_command()
- Allows make rules to be created with no dependencies.
  - Such rules will not re-run even if the commands themselves change.
  - Useful to create rules that run only if the output is missing.
2008-05-14 11:38:47 -04:00
Brad King 16ec04c2a7 BUG: Fix escaping of more characters on Windows shells. 2008-04-30 15:58:45 -04:00
Brad King c7d84b21c6 BUG: Do not escape shell operators when generating command lines.
- See bug#6868.
  - Update CustomCommand test to check.
2008-04-29 15:34:49 -04:00
Ken Martin ce8810c4e7 ENH: preclean some warnings 2008-03-25 11:27:18 -04:00
Brad King 872553de7e ENH: Implemented generation of display for pre-build, pre-link, and post-build custom command comments during the build. This addresses issue . 2007-12-18 09:50:08 -05:00
Brad King 0f4ad19ef8 ENH: Re-arranged code to test adding a custom command to generate a source file after the file has been added to a target. This is supported by the current implementation because of the use of source lists in the target implementation. When we later convert to creating cmSourceFile instances immediately for the target we need to make sure the mentioned case still works. 2007-06-11 13:22:17 -04:00
Brad King 9bfb3cacbb BUG: Replace "with space" in custom command argument tests with "w s" to still have whitespace but be shorter. The test was failing because the custom command line length was simply too long for the VS IDE. 2007-05-18 09:33:59 -04:00
Brad King ea66edaf5e ENH: Added quick means to turn on verbose output for debugging this test. 2007-05-18 09:18:09 -04:00
Brad King 6f9575690a ENH: Add testing of * and / character arguments except on MinGW. 2007-05-17 14:32:14 -04:00
Brad King ad0df37f62 ENH: Added test for custom command lines with special single-character arguments. 2007-05-17 14:03:31 -04:00
Brad King f41e1f496c BUG: Disable test of angle bracket escapes until it works everywhere. 2007-05-17 13:28:54 -04:00
Brad King c25d2bfdd2 ENH: Added testing for custom command line arguments containing all special characters on the US keyboard. Fixed curly brace arguments on borland and % arguments in mingw32-make. 2007-05-17 10:53:18 -04:00
Alexander Neundorf 7f11536704 ENH: now target names can be used in add_custom_command() and
add_custom_target() as COMMAND, and cmake will recognize them and replace
them with the actual output path of these executables. Also the dependency
will be added automatically. Test included.
ENH: moved TraceVSDependencies() to the end of GlobalGenerator::Configure(),
so it is done now in one central place

Alex
2007-05-09 08:25:45 -04:00
Brad King 87853ed828 ENH: Added test to make sure custom commands are not built more than once in a single build. This tests for a bug introduced by one fix and fixed by another fix for bug#4377. 2007-05-01 14:12:56 -04:00
Brad King 9b8f479e01 ENH: Re-enabling # escape test now that it is implemented everywhere. 2006-10-25 11:23:23 -04:00
Brad King ee9341079f BUG: Disable testing of # escapes until it can be implemented for Watcom WMake. 2006-10-24 09:47:04 -04:00
Brad King 87dcfb54c4 ENH: Added # character for shell escaping. 2006-10-23 17:20:59 -04:00
Brad King 9f52b7d2da ENH: Adding test of special characters in custom command and custom target comments. 2006-10-04 18:57:59 -04:00
Brad King 5a6b0792cd ENH: Added COMMENT option to ADD_CUSTOM_TARGET. This addresses bug#3461. 2006-10-04 18:10:30 -04:00
Brad King 2dfa2ba888 ENH: Added APPEND option to ADD_CUSTOM_COMMAND to allow extra dependencies to be connected later. This is useful to create one rule and then have a macro add things to it later. This addresses bug#2151. 2006-10-04 15:24:26 -04:00
Brad King 523075ded5 BUG: Do not replace @VAR@ syntax in list files. This addresses bug . 2006-10-04 14:37:42 -04:00
Brad King bb01a0d6ba COMP: Fix command line check test implementation for Watcom. 2006-10-02 10:17:22 -04:00
Brad King d01b6f1281 ENH: Added VERBATIM option to ADD_CUSTOM_COMMAND and ADD_CUSTOM_TARGET commands. This option enables full escaping of custom command arguments on all platforms. See bug#3786. 2006-09-28 11:30:49 -04:00
Brad King c1b4a0bf74 BUG: Disable new shell escape code until backward compatibility can be established in the new implementation. 2006-09-25 10:22:48 -04:00
Brad King c27e9fd656 COMP: Need ANSI C flags to build check_command_line.c. 2006-09-22 08:42:45 -04:00
Brad King ca22f0f14b ENH: Adding test for non-trivial custom command line arguments. This is for bug#3786. 2006-09-21 16:11:25 -04:00
Brad King 09f2be12b8 ENH: Added test for generation of files listed explicitly as sources but not used during the build of a target. 2006-06-01 13:01:31 -04:00
Brad King 58d0c5e176 COMP: Do not use ANSI function prototypes to pacify HP. 2006-04-13 15:28:57 -04:00
Brad King d5719f22c1 ENH: Added support for multiple outputs generated by a single custom command. For Visual Studio generators the native tool provides support. For Xcode and Makefile generators a simple trick is used. The first output is considered primary and has the build rule attached. Other outputs simply depend on the first output with no build rule. During cmake_check_build_system CMake detects when a secondary output is missing and removes the primary output to make sure all outputs are regenerated. This approach always builds the custom command at the right time and only once even during parallel builds. 2006-04-11 11:06:19 -04:00
Ken Martin 6ccc18bc26 BUG: fix test to list generate dheader 2006-03-24 12:20:46 -05:00
Brad King 98a187a8d4 ENH: Automatic include directories should not be done by default as was just implemented. Instead a project may now set CMAKE_INCLUDE_CURRENT_DIR to get this behavior. The current source and binary directories are added automatically to the beginning of the include path in every directory. This simulates in-source behavior for double-quote includes when there are generated sources and headers in the directory. 2006-02-19 13:10:25 -05:00