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