added -cache-dir=/tmp option to purify so we don't run out of disk space
[dyninst.git] / make.program.tmpl
1 #
2 # This file defines the things that should be common to all "programs"
3 # in the paradyn build tree.  It depends on things like SRCS and
4 # TARGET being set correctly in the module-specific template and the
5 # architecture-specific Makefile.
6
7 # $Log: make.program.tmpl,v $
8 # Revision 1.8  1995/11/29 00:14:12  tamches
9 # added -cache-dir=/tmp option to purify so we don't run out of disk space
10 # while purify works.  Added quantify; added qpt.
11 #
12 # Revision 1.7  1995/08/29  20:18:17  krisna
13 # removed the "tmp" directory references
14 # changed "cp" BACK TO "mv" for yacc output
15 #
16 # Revision 1.6  1995/08/24 15:00:55  hollings
17 # AIX/SP-2 port (including option for split instruction/data heaps)
18 # Tracing of rexec (correctly spawns a paradynd if needed)
19 # Added rtinst function to read getrusage stats (can now be used in metrics)
20 # Critical Path
21 # Improved Error reporting in MDL sematic checks
22 # Fixed MDL Function call statement
23 # Fixed bugs in TK usage (strings passed where UID expected)
24 #
25 # Revision 1.5  1995/03/15  19:12:13  jcargill
26 # Added real pure rule, and fixed LDFLAGS
27 #
28 # Revision 1.4  1995/02/27  17:37:06  jcargill
29 # Added support for suppressing implicit dependency generation
30 # (EXPLICIT_DEPENDS) and removed PD_NO_DEPENDS support
31 #
32 # Revision 1.3  1995/02/16  07:56:46  markc
33 # Added flag to prevent generation of DEPENDS file if PD_NO_DEPENDS is true
34 # to save time during recompiles.
35 #
36 # Revision 1.2  1995/01/30  21:26:15  jcargill
37 # Better use of TO_CORE for modules below top-level (e.g. visiClients)
38 #
39 # Revision 1.1  1995/01/30  18:08:21  jcargill
40 # Major build system reorganization
41 #
42 #
43
44 OBJS =          $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
45                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
46                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
47                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
48                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
49                 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
50                 $(IGEN_GEN_SRCS:%.C=%.o)
51
52 ifndef UNCOMMON_LINK
53 $(TARGET): $(OBJS) $(LIBS)
54         $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
55 endif
56
57 ifndef UNCOMMON_LINK
58 pure: $(OBJS) $(LIBS)
59         purify -cache-dir=/tmp -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
60 endif
61
62 ifndef UNCOMMON_LINK
63 quantify: $(OBJS) $(LIBS)
64         quantify -cache-dir=/tmp -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
65 endif
66
67 ifndef UNCOMMON_LINK
68 qpt: $(OBJS) $(LIBS)
69         $(MODCC) -static -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
70         qpt2 -s $(TARGET)
71 endif
72
73 ifndef DEST
74 DEST            = $(TO_CORE)/../bin/$(PLATFORM)
75 endif
76
77 VPATH           += ../src:$(TO_CORE)/../lib/$(PLATFORM):/p/paradyn/lib/$(PLATFORM)
78
79
80 echo:
81         echo $(VPATH)
82
83 clean:
84         rm -f *.o *.[hC] $(TARGET)
85
86 install:  $(DEST)/$(TARGET)
87
88 $(DEST)/$(TARGET): $(TARGET)
89         cp $(TARGET) $(DEST)
90
91 .PHONY : depend
92 depend:
93         rm -f DEPENDS
94         $(MAKE) DEPENDS
95
96
97 # Define DEPENDS dependencies such that the DEPENDS files depends on
98 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
99 # all the time.  We do need to build the Igen-generated files before
100 # updating DEPENDS, however,
101 #
102 ifdef IGEN_ISRCS
103 ifdef EXPLICIT_DEPENDS
104 DEPENDS:
105 else
106 DEPENDS: $(SRCS) $(IGEN_ISRCS)
107 endif
108         touch DEPENDS
109         $(MAKE) $(IGEN_GEN_SRCS)
110         $(MAKE) $(SRCS)
111         $(MODCC) -MM $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
112 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
113 else
114 ifdef EXPLICIT_DEPENDS
115 DEPENDS:
116 else
117 DEPENDS: $(SRCS)
118 endif
119         touch DEPENDS
120         $(MAKE) $(SRCS)
121         $(MODCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
122 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
123 endif
124
125
126
127 # A few pattern rules for simplicity.  The default lex rule is
128 # redefined, just for the sake of cleanliness.  More important are the
129 # igen rules; they "automatically" pick the correct type of igen to
130 # run.  Actually, we can't do this completely "right" unless igen is
131 # changed to generate different output files for the various type of
132 # interfaces.
133 #
134
135 %.C: %.y
136         $(YACC) $(YFLAGS) $<
137         mv y.tab.c $@
138
139 %.C: %.l
140         $(LEX) -t $(LFLAGS) $< > $@
141
142 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
143         igen -xdr $(ICFLAGS) $<
144
145 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
146         igen -thread $(ICFLAGS) $<
147
148 #
149 # include the dependencies.
150 #
151 include DEPENDS