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