Build libraries first (util and thread), and fix permissions on files
[dyninst.git] / Makefile
1 #
2 #
3 # First cut at a topLevel makefile for the paradyn system.
4 #
5 #
6
7 # Standalone is the list of standalone binaries.  These get built
8 # first when we "make world", since they include tools for building
9 # the rest of the system.
10 #
11 # Subsystems is the list of all other pieces which should be built.
12 #
13 buildfirst      = igen util thread
14 subsystems      = igen bininst util rtinst thread paradyn paradynd paradyndSIM
15
16
17 # This rule makes most of the normal recursive stuff.  Just about any
18 # target can be passed down to the lower-level Makefiles by listing it
19 # as a target on the next line:
20
21 # Note that the first item listed in this rule ("all") is what gets
22 # made by default if make is passed no arguments.  Don't add other
23 # target before all!
24
25 all clean install:
26         +for subsystem in $(subsystems); do                     \
27             if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then    \
28                $(MAKE) -C $$subsystem/$(PLATFORM) $@;           \
29             else                                                \
30                 true;                                           \
31             fi                                                  \
32         done
33
34 # This rules passes down the documentation-related stuff to
35 # lower-level Makefiles in the individual "docs" directories.
36
37 docs install-man:
38         +for subsystem in $(subsystems); do                     \
39             if [ -f $$subsystem/docs/Makefile ]; then   \
40                $(MAKE) -C $$subsystem/docs $@;                  \
41             else                                                \
42                 true;                                           \
43             fi                                                  \
44         done
45
46
47 # The "make world" target is what should get run automatically every
48 # night.  It builds things in the right order for a build from
49 # scratch.  This doesn't go first in the Makefile, though, since we
50 # really only want to make "install" when it's specifically requested.
51 # Note that "world" doesn't do a "clean", since it's nice to be able
52 # to restart a compilation that fails without re-doing a lot of work.
53 # Instead, the nightly build should be a "make clean world".
54
55 world:
56         +for subsystem in $(buildfirst); do                     \
57             if [ -f $$subsystem/$(PLATFORM)/Makefile ]; then    \
58                $(MAKE) -C $$subsystem/$(PLATFORM) all install;  \
59             else                                                \
60                 true;                                           \
61             fi                                                  \
62         done
63         $(MAKE) all
64         $(MAKE) install
65         $(MAKE) docs
66         $(MAKE) install-man
67         chmod 644 /var/home/paradyn/man/man?/*