2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-17 13:42:14 +00:00
Commit Graph

12 Commits

Author SHA1 Message Date
Vladimir Prus
d2f9daebca Resolve confict between builtin.lib-generator and $(toolset).prebuilt
in favour of the latter (toolset.prebuilt). This cuts down the number
of generator invocations for prebuilt target and is more clear.

Thanks to Mark Evans for pointing this out.


[SVN r32952]
2006-02-16 07:47:09 +00:00
Vladimir Prus
c5ce38757e When building searched libraries, return 'xdll-path' properties for each
'search' property. This makes sure that linking againsts searched library
in custom directory works on gcc, and that proper run-time library search
path is set by 'unit-test' and 'run' rule.


[SVN r32342]
2006-01-17 09:55:16 +00:00
Vladimir Prus
5fab631f5d Further generators simplications.
1. If when generating something, we find more that one suitable generators,
   run them and more then one return something, immediately report ambiguity.
   Don't care if the produced targets are the same. This is better that
   running several generators all the time, performance wise.

2. Remove the notion of 'intermediate' virtual-targets. IIRC, they were used
   to prevent staging of RSP files, and we don't stage them anyway now.


[SVN r29491]
2005-06-09 08:12:21 +00:00
Vladimir Prus
3e45b39bc5 Improve "linking" of libraries into static libraries.
When a library is present in sources of a static library, return it
to dependents via usage requirements, not by adding it to the list
of created targets.


[SVN r29362]
2005-06-02 07:19:11 +00:00
Vladimir Prus
7b2749353b Refactor generators a bit.
* If a generator was given a source it could not handle, it used to return
  that source together with generated targets. This was nice for some use
  cases, but no very nice for others, and this behaviour could not be turned
  off. One use case where it worked bad was:

      lib plugin : plugin.cpp helper ;
      lib helper : helper.cpp ;

  On windows, 'plugin' would link to the 'import library' and pass the DLL
  target though. So, when installing 'plugin', we'd also install 'helper.dll',
  and it was not possible to do anything about it.

* If we asked generators.construct to produce sources of type CPP,
  and the selected generator produced both targets of type CPP, and of
  some other type, we'd try again to convert those other targets to CPP.
  This simply complicated the logic for no good reason.

* Most generator function had 'multiple' parameter, which function
  was long forgotten by anybody.

As a bit of history, I believe some of the above decisions were due to a
certain use case:

          CPP <------- WHL
                          \
                            WD
                          /
          CPP <------- DLP

Here, a source file is converted to two targets with one command, and each
produced file is converted to CPP. Our generators search would notice that
there are two generators for CPP: the WHL->CPP and DPL->CPP
generators. Neither is better that the other so both are tried, and produce
(CPP, DPL) and (CPP, WHL) pairs of targets. To avoid reporting an ambiguity,
we'd try to convert, DLP to CPP and WHL to CPP, do it successfully, notice
that produced targets are the same and decide that there's no ambiguity.

However, this is rather complex logic for a relatively rare case. It can
be handled by writing another WD->CPP generator that would handle
disambiguation itself.

This commit has one user-visible change. The code:

  exe a : a.cpp b ;
  obj b : b.cpp helper;
  lib helper ;

No longer works -- the 'a' target won't link to 'helper'. However, this is
pretty stange code and worked before almost by accident.


[SVN r29361]
2005-06-02 06:43:56 +00:00
Vladimir Prus
ee27fd4ee2 Bugfix: searched library was not found when
exe depended on obj and obj depended on a searched library.

Thanks to Caleb Epstein for the bug report.

* tools/builtin.jam
  (searched-lib-generator.extra-usage-requirements): Remove
  (archive-generator.run): Don't bother passing 'library-path' properties.
  (linking-generator.run): Add propery library-path properties for
    searched libraries.

* tools/unix.jam: Induced changes.

* test/searched_lib.py: New test.


[SVN r26486]
2004-12-10 10:17:56 +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
08bac7ef79 Library improvements:
lib png : z : <name>png ;
  lib z : : <name>z ;

now works: if you link to 'png' you'll also link to 'z'.

  lib png : z : <file>png.a ;
  lib z : : <file>z.a ;

now works too. The 'prebuilt.jam' modules which used to handle <file> for
all target kinds is now removed.


[SVN r25703]
2004-10-13 10:46:53 +00:00
Vladimir Prus
b23ee8e6d3 Record proper order dependencies even for seached libraries, to automatically
compute the right order on the link line.


[SVN r24700]
2004-08-24 08:25:43 +00:00
Vladimir Prus
9acd3462d1 Fix "import" statements.
[SVN r22470]
2004-03-10 07:43:53 +00:00
Vladimir Prus
06b75dbbe3 Property register sun toolset.
[SVN r22300]
2004-02-17 12:03:53 +00:00
Vladimir Prus
0ff664ff63 Move the logic for library ordering to a separate module. Add library
ordering to 'sun' toolset.


[SVN r22284]
2004-02-16 09:12:27 +00:00