2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-16 13:22:11 +00:00
Commit Graph

36 Commits

Author SHA1 Message Date
Vladimir Prus
1c4204443e Allow unqualified rule names for calls to the 'make' main target rule.
[SVN r30974]
2005-09-14 09:54:14 +00:00
Vladimir Prus
ef2513b4c2 Prevent auto-adding of suffixes to targets.
[SVN r26838]
2005-01-24 15:46:17 +00:00
Vladimir Prus
f4b06edc27 Refactoring of virtual targets.
- Drop separate 'suffix' field in file targets. Store suffix as part of
  the name' field. This avoids the need to copy the suffix field and the
  name everywhere.
- Do not pass generated targets to constructor of 'action'. Instead,
  pass the acton to constructor of target.


[SVN r26778]
2005-01-21 08:42:51 +00:00
Vladimir Prus
230ec44483 Refactor/improve <tag> support.
* build/targets.jam (generate-realy):
  After applying tag, we used to 'temporary' change self.name,
  which is horrible. How pass the name to 'construct'.

  (construct): New parameter 'name'.

  (tag-name): New rule, extracted from basic-target. This needs to be
  separate rule so that we can call it from 'stage'. Check for a value of
  from '@something' and interpret 'something' as a rule which returns the
  new name.


[SVN r26408]
2004-12-03 08:28:37 +00:00
Vladimir Prus
28867fecac Allow a generator's 'run' method to return additional usage requirements
as the first elements of result. Those usage requirements will be combined
with explicitly specified for the main target.

This is yet another step towards making 'main target classes' unnecessary.

* build/generators.jam
  (try-one-generator): Check if generator returned usage requirements or not.
  (construct): Make sure first element of result is always property set.
  (many other methods): Induced changes

* tools/builtin.jam
  (exe-target-class, lib-target-class): Remove.
  (linking-generator, seached-lib-generator): Compute usage requirements.
  (archiving-generator): New class


[SVN r26192]
2004-11-12 08:11:14 +00:00
Vladimir Prus
d4e260045f Refactorings.
The targets (both abstract and virtual) used to refer to project there belong
to using the name of Jamfile module corresponding to the project. That was a
bit messy, and whatevet it was necessary to get any project attribute, one
had to call 'project.attribute', which was messy too.

Now, projects are identified by instance of project-target class, and
attributes are obtained via 'get' method in that class.


[SVN r23001]
2004-06-02 14:26:15 +00:00
Vladimir Prus
533abcaadd Bugfix: the main target rules did not work unless called from Jamfile.
The used 'CALLER_MODULE' to determine the project where the main target
is to be declared, which did not work if the rule is called from another
module.

Thanks to Zbynek Winkler for the bug report.

* build/project.jam (current): New rule
* test/wrapper.py: New test
* other files: Use 'project.current'.


[SVN r22569]
2004-03-31 06:53:56 +00:00
Vladimir Prus
d97aec24f5 Bugfix: recognize a.so.1.2 as file of type SHARED_LIB.
Thanks to Peter Schoen for bug report.

* new/type.jam
  (type): Accept filename, not just suffix. Improve logic.


[SVN r20036]
2003-09-12 07:13:42 +00:00
Vladimir Prus
81dc7f094b Rename 'xclass' to 'class'.
[SVN r19458]
2003-08-05 05:25:33 +00:00
Vladimir Prus
a8291718dd Rename 'xnew' to just 'new'.
[SVN r19434]
2003-08-04 11:12:30 +00:00
Vladimir Prus
96ba56a2e9 Drop all style classes support.
[SVN r19433]
2003-08-04 10:53:34 +00:00
Vladimir Prus
fe09f7e4fe Move abstract-target hierarchy to new classes.
[SVN r19428]
2003-08-04 09:22:29 +00:00
Vladimir Prus
6338351c15 Make action hierarchy use new style classes.
[SVN r19426]
2003-08-04 09:15:36 +00:00
Vladimir Prus
648087afed Make virtual-target hierarchy use new style classes.
[SVN r19425]
2003-08-04 09:13:22 +00:00
Vladimir Prus
60e89037fb Implement inline main targets.
* new/targets.jam
  (main-target-sources): New rule.
  (abstract-target.rename): New rule
  (project-target.rename-main-target): New rule.


[SVN r18923]
2003-07-03 07:23:26 +00:00
Vladimir Prus
83ed59d79b Fix a couple of fallouts from the default build change.
* new/make.jam
  (make): Pass 'default-build' in the right position.

* new/targets.jam
  (basic-target): Use empty property-set if no default-build is passed.
  (main-target): Use 'raw' to test property-set for emptines. The string
  emptyness test that use to be there does not works for property-sets.


[SVN r18440]
2003-05-19 10:28:02 +00:00
Dave Abrahams
5eb7ea1192 Note: there is currently a circular dependency between type.jam and
virtual-target.jam.

- Added the missing explicit imports, now that we don't dump
  everything into the global module with qualification

- stopped using the feature-space hack for temporary testing states of
  the feature module.  Instead we move its global variable definitions
  to a temporary module.

- the way feature.action was invoking the rule it was being passed was
  evil.  Now you pass (even local) rules without qualification and
  they are invoked in the source module context.

- module __test__ rules are always executed in a separate module, so
  that their import dependencies can be separated from those of the
  module being tested.

- better reporting of circular module-loading dependencies
  implemented.

- minor changes:

    property-set.jam:  moved .empty initialization to avert circular
    load dependency .

    symlink.jam: fixed global variable naming.


[SVN r18407]
2003-05-15 22:22:13 +00:00
Douglas Gregor
3797ec4082 Allow passing in the caller to the make rule, so that other modules
(that aren't user projects) can use it to add targets to their callers


[SVN r18137]
2003-03-30 15:24:57 +00:00
Vladimir Prus
caa491f503 Prevent the 'make' rule perform reduntant builds. Thanks to Kirill Lapshin
for the bug report.

* new/make.jam
    (make-target-class.construct): Pass the result through
    'virtual-target.register'.

* new/virtual-target.jam
    (register): Ignore incidental properties when deciding if targets are
    equivivalent.

* test/make_rule.py: Add new test.


[SVN r17701]
2003-03-03 07:47:14 +00:00
Vladimir Prus
5b56d78725 Allow additional argument for user rule, with "make" main target.
* new/make.jam
    (make): Change name only of the first element in 'generating-rule'

* new/virtual-target.jam
    (action.actualize): Pass only first element of action name to
       toolset.set-target-variables.

* test/make_rule.py: New test.


[SVN r17543]
2003-02-20 07:20:52 +00:00
Vladimir Prus
8e8891b7dd Introduce the 'property-set' class, which is used instead of
plain old lists of properties in most cases where we need property sets.

The changes are too numerous and mostly automatic to comment each one.


[SVN r17305]
2003-02-10 14:40:38 +00:00
Vladimir Prus
b12a902687 Clean ups.
* new/builtin.jam: Made 'toolset' and 'variant'
    features symmentic. Document and fix the 'variant' rule.

* new/virtual-target.jam: Refactoring attempts. Split
   virtual-target into virtual-target and derived from it
   file-target. Eliminate some duplication in setting target
   locations.


[SVN r16437]
2002-11-27 08:37:07 +00:00
Vladimir Prus
cb7c085b33 Cleanup main target alternative creationg.
* new/targets.jam
    (abstract-target.name): New method.
    (abstract-target.project): New method.
    (main-target-alternative): Simplify. Only register
       main target alternative. Don't to fancy processing
       of arguments.
    (main-target-requirements): New rule.
    (main-target-use-requirements): New rule.
    (main-target-default-build): New rule.


[SVN r16249]
2002-11-15 07:20:23 +00:00
Vladimir Prus
e147aa0b32 Make some refactoring.
* new/virtual-target.jam (virtual-target): Eliminate 'subvariant'
   attribute. Use properties of action to for the same
   purpose.

* new/testing.jam: Induced changes.
* new/make.jam: Induced changes.
* new/generators.jam: Induced changes.


[SVN r16128]
2002-11-06 08:13:40 +00:00
Vladimir Prus
ca4653d555 Make the 'make' rule work with locally declared generating rules.
[SVN r16097]
2002-11-04 17:28:46 +00:00
Vladimir Prus
ca18960a9e Implement simple form of use requirements.
* new/virtual-target.jam
        (virtual-target.use-requirements): New rule.
        (virtual-target.set-use-requirements): New rule.

    * new/generators.jam (construct): Use 'use-requirements' of sources.

    * new/targets.jam (basic-target.generate): Store use requirements for
             generated targets.
      (main-target-alternative): Process use requirements.

    * new/project.jam: Support 'use-requirements' project attribute.


[SVN r15821]
2002-10-09 11:33:22 +00:00
Vladimir Prus
4115276dec Sundry improvements:
Bison and lex support.
    unit-test rule
    --version option
    default build really works

    * new/build-system.jam: Bugfixes. Added "--version" option.

    * new/project.jam: If default-build is not specifies, don't stick "debug".

    * new/property.jam (evaluate-conditionals): New rule.

    * new/targets.jam (basic-target.generate): Evalute conditional properties.

    * test/BoostBuild.py (Tester.maybe_do_diff): New method.
        (Tester.run_build_system): Call the above method when
        appropriate.


[SVN r15771]
2002-10-07 13:34:14 +00:00
Vladimir Prus
742e30850e Fix some obscure bugs.
* new/virtual-target.jam (clone-template): Improve interface and logic.

    * new/make.jam (make-target-class.construct): Set type and suffix on
    generated targets.

    * new/generators.jam (construct): Make sure all targets have known
     types.


[SVN r15766]
2002-10-07 13:08:04 +00:00
Vladimir Prus
c3d228af10 Wholesale commit of generators.
[SVN r14924]
2002-08-16 14:13:15 +00:00
Vladimir Prus
32f895a1be Facilitate new main target rules creation.
* new/targets.jam (make-target-alternative): New rule, which handles
        applying project requirements and default build, when needed.
    * new/make.jam (make): Use the above rule.


[SVN r14894]
2002-08-15 16:01:45 +00:00
Vladimir Prus
80c96a8efe Introduce 'incidental' features.
* new/feature.jam: The above change.
    * new/property.jam
      (remove): Renamed & generalized from 'remove-free'.
      (take): Likewise.


[SVN r14752]
2002-08-09 11:37:59 +00:00
Vladimir Prus
38a1af562f Deleted project_test2 and moved the interesting tests from it to project_test4.
[SVN r14404]
2002-07-11 10:01:53 +00:00
Vladimir Prus
8c2434fe71 Work on issue 577833: Finish target paths.
* new/targets.jam (main-target.generate) Add extra path component to
        virtual target which free properties are not equal to project's.
        (basic-target.generate): Pass refined properties to 'construct'.
        (virtual-target.extra-path): New rule.
        (virtual-target.actualize): Make use of extra path.
    * new/property.jam (take-free): New rule.


[SVN r14396]
2002-07-10 16:05:15 +00:00
Vladimir Prus
27268e2ba7 Work on the issue 578618. Moved all the data out of jamfile modules.
* new/project.jam (project-attributes): New class to keep all the
        project related data. (attritutes, attribute): New rules to access
        the project attributes. (target): New rule to access the project
        target for a jamfile module.
        (initialize): Store attribute in project-attributes instance.
        (project): Moved to jamfile module.
        (assign-option): Moved with modifications to project-attributes.get.
    * new/targets.jam, new/project-root.jam, new/make.jam,
      new/build-system.jam: Induced changes.


[SVN r14362]
2002-07-09 07:56:51 +00:00
Vladimir Prus
53150ba4b7 Cleanups.
* new/targets.jam: (main-target.alternatives): Renamed from
      'main-target.variants'. Comment improvements.


[SVN r14342]
2002-07-08 10:38:54 +00:00
Vladimir Prus
082c25530d Beginning of the 'make' rule.
* new/targets.jam: Check for duplicate 'basic-target::generate()' calls.
        Use better logic to tell is source is another main target or file.
        (project-target::has-main-target): New rule.
    * new/project.jam (lookup): Fixes. (find-target): Implemented.
    * new/make.jam: New file, defines the 'make' rule and associated target
        class.
    * new/build-system.jam: Import 'make'. Generate virtual targets and
        actualize them.
    * new/utility.jam: Added "MkDir" rule and actions.
    * test/project_test3.py: New test.


[SVN r14249]
2002-06-27 14:00:30 +00:00