On Tue, 5 May 2009 17:33:59 -0400 Lee, Sang wrote:
> Hi Mr. Fowler,
>
> Thank you for the explanation.
> The nmake documentation
> http://www.research.att.com/~gsf/nmake/nmake.html state that :NMAKE:
> operator determines the build order for all subdirectories for recursive
> nmake build.
> How nmake determines subdirectory build order include library
> dependency.

first, Mr. Fowler is my dad

thanks, I forgot to mention inter-makefile library dependencies
that is done by :MAKE: operator
it scans makefiles in the directory hierarchy under the current makefile
for -l* prerequisites
if any -l* prerequisite is a target in a makefile in the hierarchy
then it is added to a partial ordering of all library/makefile prerequisites 
pairs
after all makefiles have been scanned the partial order is used to determine
the makefile order, including those that can run concurrently

if the ordering determined by :MAKE: is incorrect
1) send a note to this list because it may be a bug
2) you can workaround by this assertion near the top of the makefile
        :PACKAGE: foo:force
   this will force the "foo" makefile to be built before the current makefile

follow these naming conventions to avoid mis-ordering:
        src/cmd/*               # commands
        src/cmd/*lib/*          # plugins
        src/lib/*               # libraries

the ast-open Makefiles use :force in only two places:

cmd/nmake/Makefile::PACKAGE: ast cpp:force --clobber=!(nmake)
        a command::command dependency (nmake requires cpp)
        these are not detected by the :MAKE: scan
lib/libtk/Makefile::PACKAGE: - X11 tcl:install ast libtksh:force
        -ltk requires headers installed as a side effect of installing -ltksh
        also not detected by the :MAKE: scan

-- Glenn

_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to