removed reference to "dag", an obsolete directory.
[dyninst.git] / Makefile
1 #
2 #
3 # First cut at a topLevel makefile for the paradyn system.
4 #
5 # $Log: Makefile,v $
6 # Revision 1.21  1995/12/15 22:45:39  tamches
7 # removed reference to "dag", an obsolete directory.
8 # Added visiClients/phaseTable
9 #
10 # Revision 1.20  1995/11/04 01:14:56  tamches
11 # added the new table visi (visiClients/tableVisi) to the nightly build
12 #
13 # Revision 1.19  1995/01/30 18:08:12  jcargill
14 # Major build system reorganization
15 #
16 #
17
18 # Standalone is the list of standalone binaries.  These get built
19 # first when we "make world", since they include tools for building
20 # the rest of the system.
21 #
22 # Subsystems is the list of all other pieces which should be built.
23 #
24 buildfirst      = util igen thread visi hist
25 subsystems      = bininst paradyn \
26                   rtinst rthist \
27                   paradynd paradyndSIM paradyndPVM \
28                   visiClients/tclVisi visiClients/barchart visiClients/tableVisi visiClients/phaseTable
29
30 # This rule makes most of the normal recursive stuff.  Just about any
31 # target can be passed down to the lower-level Makefiles by listing it
32 # as a target on the next line:
33
34 # Note that the first item listed in this rule ("all") is what gets
35 # made by default if make is passed no arguments.  Don't add other
36 # target before all!
37
38 all clean install depend:
39         +for subsystem in $(buildfirst) $(subsystems); do       \
40             if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then    \
41                $(MAKE) -C $$subsystem/$(PLATFORM) $@;           \
42             else                                                \
43                 true;                                           \
44             fi                                                  \
45         done
46
47 # This rules passes down the documentation-related stuff to
48 # lower-level Makefiles in the individual "docs" directories.
49
50 docs install-man:
51         +for subsystem in $(buildfirst) $(subsystems); do       \
52             if [ -f $$subsystem/docs/Makefile ]; then           \
53                $(MAKE) -C $$subsystem/docs $@;                  \
54             else                                                \
55                 true;                                           \
56             fi                                                  \
57         done
58
59
60 # The "make world" target is set up to build things in the "correct"
61 # order for a build from scratch.  It builds things in the
62 # "buildfirst" list first, then builds everything, then installs
63 # everything.
64 #
65 # This make target doesn't go first in the Makefile, though, since we
66 # really only want to make "install" when it's specifically requested.
67 # Note that "world" doesn't do a "clean", since it's nice to be able
68 # to restart a compilation that fails without re-doing a lot of
69 # unnecessary work.
70
71 world:
72         +for subsystem in $(buildfirst); do                     \
73             if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then    \
74                $(MAKE) -C $$subsystem/$(PLATFORM) all install;  \
75             else                                                \
76                 true;                                           \
77             fi                                                  \
78         done
79         $(MAKE) all
80         $(MAKE) install
81
82
83 # The "make nightly" target is what should get run automatically every
84 # night.  It uses "make world" to build things in the right order for
85 # a build from scratch.  
86 #
87
88 # Note that "nightly" should only be run on the primary build site,
89 # and does things like building documentation that don't need to be
90 # built for each different architecture.  Other "non-primary" build
91 # sites that run each night should just run "make clean world".
92
93 nightly:
94         $(MAKE) clean
95         $(MAKE) world
96         $(MAKE) docs
97         $(MAKE) install-man
98         chmod 644 /p/paradyn/man/man?/*