cycle runtime dependency

View: New views
3 Messages — Rating Filter:   Alert me  

cycle runtime dependency

by Anatoly Shirokov :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Good day!

I have the following situation:

The dll1 library loads the dll2 library dynamically via LoadLibrary. On
the other hand the dll2 loads dll1 also dynamically. So there is no
explicit dependency between two modules. But in runtime dll1 cannot work
without dll2 and vise versa.

I want to use <dependency> to illustrate this situation:

lib dll1 : ... : <dependency>dll2 ;

lib dll2 : ... : <dependency>dll1 ;

But bjam fails with cycle detection.

Is there way to describe this situation? Can bjam break a cycle itself?

Thanks in advance,
Anatoly.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Re: cycle runtime dependency

by Steven Watanabe-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

AMDG

Anatoly Shirokov wrote:

> I have the following situation:
>
> The dll1 library loads the dll2 library dynamically via LoadLibrary.
> On the other hand the dll2 loads dll1 also dynamically. So there is no
> explicit dependency between two modules. But in runtime dll1 cannot
> work without dll2 and vise versa.
>
> I want to use <dependency> to illustrate this situation:
>
> lib dll1 : ... : <dependency>dll2 ;
>
> lib dll2 : ... : <dependency>dll1 ;
>
> But bjam fails with cycle detection.
>
> Is there way to describe this situation? Can bjam break a cycle itself?

Why do you need the libraries to depend on each other?
 From Boost.Build's point of view, dll1 depends on dll2
means that if dll2 is rebuilt, dll1 also needs to be rebuilt.
Is that what you want?  If not why do you need to specify
the dependency?

In Christ,
Steven Watanabe

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Re: cycle runtime dependency

by Anatoly Shirokov :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Steven!
> Why do you need the libraries to depend on each other?
I cannot answer because I am not an author of this desing. Anyway if two
modules implement well know abstract interface why not?

> From Boost.Build's point of view, dll1 depends on dll2
> means that if dll2 is rebuilt, dll1 also needs to be rebuilt.
> Is that what you want?  If not why do you need to specify
> the dependency?
>
It needs to install all needed files to prepare an execution
environment. Each module contains typical install procedure:

install module_dist : module
    : <install-dependencies>on <install-type>EXE <install-type>SHARED_LIB
    <variant>release:<location>$(DISTR)/release
    <variant>debug:<location>$(DISTR)/debug
;

Bjam cannot break cycle. So I use the following solution:

# dll1/jamfile
lib dll1 : ... ;

install dll1_dist : dll1
    /my/dll2//dll2
  : ...
;

# dll2/jamfile
lib dll2 : ... ;

install dll2_dist : dll2
    /my/dll1//dll1
  : ...
;

It looks good, but there is the following problem:

lib dll3 : dll3 /my/dll1//dll1 ;

install dll3_dist : ... ;

If I run bjam in the dll3 directory, I cannot find dll2 which is needed
for dll1 in the $(DISTR) directory.

Anatoly.







_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build