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

47 Commits

Author SHA1 Message Date
Steven Watanabe
ee613a6a28 Implement feature relevance.
* New feature <relevant> which is automatically deduced in most cases.
* Features which are not relevant do not affect target paths and
  do not prevent merging of virtual targets.
* generators.jam: generator.run always returns usage-requirements
  to allow usage-requirements in non-top-level generators.  This
  is necessary because we're using usage-requirements to track
  relevance from flags.
* New rule toolset.uses-features to specify features that the rule
  checks manually, instead of using toolset.flags.  In the future,
  we should consider restricting the properties actually passed,
  to detect errors.
* Adjust tests to handle the new paths (verified by inspection).
* Add temporary option --ignore-relevance to consider all features relevant
  to aid migration.
* New rule property.evaluate-conditional-relevance which helps tracking
  relevance in <conditional>.
* Widely scattered changes to use the new interfaces.
2018-01-13 09:13:49 -07:00
Jurko Gospodnetić
f4fad1a46f Boost Build cleanup - minor stylistic changes (copyright comment updates, removed redundant imports, split module imports to separate lines, used cleaner targets.jam module helper rules for constructing main target alternatives, allowed notfile generators to take more than 9 constructor parameters, lines wrapped to 80 characters).
[SVN r80510]
2012-09-13 05:38:21 +00:00
Vladimir Prus
8c1bd79f33 Reset everyting back to revision 56032.
My partial reverts of things appear to be creating bigger mess.


[SVN r56042]
2009-09-05 12:44:28 +00:00
Vladimir Prus
5368d5d44f Revert revision 48644.
It contains so many formatting changes to as make porting things to
Python impossible. I'll cherry-pick the todo and non-formatting changes
soonish.


[SVN r56034]
2009-09-05 12:01:30 +00:00
Jurko Gospodnetić
92aea5bb39 Minor stylistic changes throughout several Boost Build modules. Added several todo comments.
[SVN r48644]
2008-09-07 06:10:32 +00:00
Jurko Gospodnetić
daa64c7e46 Minor stylistic changes made to the Boost Build tools/make.jam module.
[SVN r48626]
2008-09-06 02:46:14 +00:00
Jurko Gospodnetić
e388457ddd Minor stylistic Boost Build Jam script cleanup.
[SVN r46040]
2008-06-02 08:12:47 +00:00
Jurko Gospodnetić
c36072398f Boost Build comment typo corrections and minor stylistic changes.
[SVN r44975]
2008-05-01 15:09:58 +00:00
Rene Rivera
9ef6242538 Add/update copyrights+license (with help of a shell script).
[SVN r35851]
2006-11-05 07:13:39 +00:00
Rene Rivera
c87fb70582 Add usage requirements for make targets.
[SVN r34884]
2006-08-15 05:55:22 +00:00
Vladimir Prus
d66d2676d6 Make it possible to specify rule name with '@' prefix to the 'make' rule,
just like for 'notfile' rule. Using rule name without '@' still works
for backward compatibility.


[SVN r33632]
2006-04-10 11:26:04 +00:00
Vladimir Prus
d5b890b16e Allow unqualified rule names for calls to the 'make' main target rule.
[SVN r30974]
2005-09-14 09:54:14 +00:00
Vladimir Prus
ef5f1c05a0 Prevent auto-adding of suffixes to targets.
[SVN r26838]
2005-01-24 15:46:17 +00:00
Vladimir Prus
9836220c83 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
aabded2811 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
40a504ed4f 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
3f783b7b2e 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
12d08a7b73 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
a5af22b33e 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
286825f9d5 Rename 'xclass' to 'class'.
[SVN r19458]
2003-08-05 05:25:33 +00:00
Vladimir Prus
a9cb673c30 Rename 'xnew' to just 'new'.
[SVN r19434]
2003-08-04 11:12:30 +00:00
Vladimir Prus
7fceeb4bc7 Drop all style classes support.
[SVN r19433]
2003-08-04 10:53:34 +00:00
Vladimir Prus
bd38c04d0e Move abstract-target hierarchy to new classes.
[SVN r19428]
2003-08-04 09:22:29 +00:00
Vladimir Prus
c661419db3 Make action hierarchy use new style classes.
[SVN r19426]
2003-08-04 09:15:36 +00:00
Vladimir Prus
26da990bc6 Make virtual-target hierarchy use new style classes.
[SVN r19425]
2003-08-04 09:13:22 +00:00
Vladimir Prus
d2ad8e70c5 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
51d8568b7c 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
6ebded3459 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
f17b4f4e95 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
b054db5911 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
e44c37b94f 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
2969557432 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
3a37820a0a 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
5c18848ccd 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
23f0acca9e 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
472f3005c9 Make the 'make' rule work with locally declared generating rules.
[SVN r16097]
2002-11-04 17:28:46 +00:00
Vladimir Prus
b55dc66bf3 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
12518b72c2 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
b2ed2fe8f5 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
a1adab49a1 Wholesale commit of generators.
[SVN r14924]
2002-08-16 14:13:15 +00:00
Vladimir Prus
a8cb8b2437 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
4c32eba667 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
8e64eb262d 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
8c70c8b287 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
9384457f08 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
0e7be98dea 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
50137dcc10 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