2 # TopLevel Makefile for the Paradyn system.
4 # $Id: Makefile,v 1.25 1997/12/22 23:27:51 wylie Exp $
7 # "buildFirst" is the list of components which need to be built first
8 # with "make world", since they are used building the rest of the system.
10 # "subSystems" is the list of all other pieces which should be built
13 # "dynInstAPI" is the list of additional API components (optional).
15 buildFirst = util igen thread visi hist
16 subSystems = paradyn rtinst rthist paradynd \
17 visiClients/tclVisi visiClients/barchart \
18 visiClients/tableVisi visiClients/phaseTable \
20 dynInstAPI = dyninstAPI dyninstAPI_RT
23 # "fullSystem" is the complete list of all components
25 fullSystem = $(buildFirst) $(subSystems) $(dynInstAPI)
27 # This rule makes most of the normal recursive stuff. Just about any
28 # target can be passed down to the lower-level Makefiles by listing it
29 # as a target on the first line:
31 # Note that the first item listed in this rule ("all") is what gets
32 # made by default if make is passed no arguments. Don't add other
35 all clean install depend:
36 +for subsystem in $(fullSystem); do \
37 if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then \
38 $(MAKE) -C $$subsystem/$(PLATFORM) $@; \
44 # This rules passes down the documentation-related stuff to
45 # lower-level Makefiles in the individual "docs" directories.
48 +for subsystem in $(fullSystem); do \
49 if [ -f $$subsystem/docs/Makefile ]; then \
50 $(MAKE) -C $$subsystem/docs $@; \
57 # The "make world" target is set up to build things in the "correct"
58 # order for a build from scratch. It builds and installs things in the
59 # "buildFirst" list first, then builds and installs the remaining
60 # Paradyn "subSystems" (excluding the currently optional dynInstAPI).
61 # NB: "make world" currently also builds the dynInstAPI components
62 # since the nightly build doesn't seem to use the "nightly" target.
64 # This make target doesn't go first in the Makefile, though, since we
65 # really only want to make "install" when it's specifically requested.
66 # Note that "world" doesn't do a "clean", since it's nice to be able
67 # to restart a compilation that fails without re-doing a lot of
71 +for subsystem in $(buildFirst); do \
72 if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then \
73 $(MAKE) -C $$subsystem/$(PLATFORM) all install; \
78 +for subsystem in $(dynInstAPI); do \
79 if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then \
80 $(MAKE) -C $$subsystem/$(PLATFORM) all install; \
85 +for subsystem in $(subSystems); do \
86 if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then \
87 $(MAKE) -C $$subsystem/$(PLATFORM) all install; \
93 # Currently optional dynInstAPI build and install
96 +for subsystem in $(dynInstAPI); do \
97 if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then \
98 $(MAKE) -C $$subsystem/$(PLATFORM) all install; \
104 # The "make nightly" target is what should get run automatically every
105 # night. It uses "make world" to build things in the right order for
106 # a build from scratch.
108 # Note that "nightly" should only be run on the primary build site,
109 # and does things like building documentation that don't need to be
110 # built for each different architecture. Other "non-primary" build
111 # sites that run each night should just run "make clean world".
119 chmod 644 /p/paradyn/man/man?/*