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