Commit Graph

22 Commits

Author SHA1 Message Date
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 a30b84e4cc BUG: Fix AddExternalProject config command id
This fixes the get_configure_command_id function to not mistake
CONFIGURE_COMMAND values that run "cmake -P" or "cmake -E" for a CMake
project configuration.  These values just help run scripts.
2009-03-31 10:13:01 -04:00
Brad King 88184bb698 ENH: Simpler AddExternalProject install step
This simplifies the implementation with add_external_project_step.
2009-03-30 11:38:43 -04:00
Brad King bf09570615 ENH: Simpler AddExternalProject build step
This simplifies the implementation with add_external_project_step.
2009-03-30 11:38:26 -04:00
Brad King f3ba510a65 ENH: Simpler AddExternalProject configure step
This simplifies the implementation with add_external_project_step.
2009-03-30 11:38:05 -04:00
Brad King 385eb4dea7 ENH: Simpler AddExternalProject patch step
This simplifies the implementation with add_external_project_step.
2009-03-30 11:37:50 -04:00
Brad King aa7e41c16e ENH: Simpler AddExternalProject update step
This simplifies the implementation with add_external_project_step.
2009-03-30 11:37:29 -04:00
Brad King feef81b34f ENH: Simpler AddExternalProject download step
This simplifies the implementation with add_external_project_step.
2009-03-30 11:37:03 -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 c45c862ef4 ENH: Factor argument parsing in AddExternalProject
The add_external_project function parses its arguments and puts them in
properties of the target it creates.  This factors out implementation of
the behavior for use by other functions in the module.
2009-03-30 11:35:50 -04:00
Brad King 5bc6869551 ENH: Teach AddExternalProject a 'complete' step
This separates creation of the project completion sentinel file from the
'install' step to allow more steps to be added in between later.
2009-03-30 11:35:22 -04:00
Brad King 566c8bb15b STYLE: Reminder note for add_external_project work 2009-03-18 11:01:25 -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 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 726114077d ENH: Allow empty arguments in external project API
This uses the get_property command to simplify property lookup in the
AddExternalProject module.  It distinguishes for build and install
argument properties the cases of unset and set to empty.
2009-03-04 09:21:16 -05:00
David Cole 5d9e78e918 ENH: Re-work of fix committed yesterday for the Watcom WMake dashboard. Fix it properly by using the SYMBOLIC source file property to indicate to WMake when the sentinel file is not actually written by the update step. 2008-12-24 10:10:40 -05:00
David Cole 468c9e250b ENH: Add the update step in between download and build. Add UPDATE_ARGS and UPDATE_COMMAND handling. Output a -complete sentinel in synch with the -install sentinel, but do not list it as an OUTPUT of the custom command. That breaks the chaining of add_custom_commands between custom targets, but allows for a file-level dependency expression that will cause proper incremental rebuilds. When earlier targets rebuild, subsequent dependent targets will also rebuild. CVS and SVN update commands are always out-of-date so that they always run to get the latest source. To suppress that behavior on a per-external project basis use an explicit empty string for UPDATE_COMMAND. The source will still be checked out from the repository prior to the update step by the download step. 2008-12-19 10:35:16 -05:00
David Cole 09084d89fb ENH: Default to the same cmake used for configuring when building and installing. If none specified default to the cmake used to configure the outer/aggregating project. 2008-12-09 15:31:28 -05:00
David Cole 98afdd0e37 BUG: Make sure all directories used as working directories exist at CMake configure time as well as having custom commands that create them. Necessary for the Borland Makefiles generator to generate short path names in the makefile build rules. Also, make sure all custom commands chain together properly through the use of the sentinel files. 2008-12-08 14:58:59 -05:00
David Cole dba2c51d90 ENH: Make it easier to use configure/make/make-install as the build steps for an external project. Add capability of customizing the download step. Add tests of empty projects. Better comments and error checking in AddExternalProject.cmake. In tests, use KWStyle from CVSHEAD to see if QNX continuous can build the latest KWStyle. Make KWStyle test depend on all previous test external projects so it builds last to catch other issues before any KWStyle compile errors. 2008-12-05 15:18:32 -05:00
David Cole 930827d48c ENH: First draft of add_external_project functionality. Tweaks, dashboard fixing, more tests and documentation certain to follow as it gets used by others... 2008-12-04 13:27:48 -05:00