I have done a commit that fixes the "irpc-trap" bug. This bug occurs
[dyninst.git] / make.library.tmpl
1 #
2 # This file defines the things that should be common to all "libraries"
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 # $Id: make.library.tmpl,v 1.16 1999/08/09 05:36:14 csserra Exp $
8 #
9
10 BUILD_ID= -s $(SUITE_NAME) -v $(RELEASE_NUM)$(BUILD_MARK)$(BUILD_NUM)
11
12 XTARGET = $(basename $(basename $(TARGET)))
13 VOUCHER = V_$(XTARGET)
14
15 $(VOUCHER):
16         @echo Updating build voucher information: $(VOUCHER)
17         $(BUILDSTAMP) $(BUILD_ID) $(XTARGET)
18         $(MODCC) -c $(VOUCHER).c
19
20 VPATH           += ../src
21
22 OBJS =          $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
23                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
24                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
25                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
26                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
27                 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
28                 $(IGEN_GEN_SRCS:%.C=%.o)
29
30 ifndef UNCOMMON_LINK
31 $(TARGET): $(OBJS)
32         @$(RM) $(TARGET)
33         @$(MAKE) $(VOUCHER)
34         $(AR) crv $(TARGET) $(VOUCHER).o $(OBJS)
35         $(RANLIB) $(TARGET)
36
37 ifdef TARGET2
38 XTARGET2= $(basename $(TARGET2))
39 VOUCHER2= V_$(XTARGET2)
40
41 $(TARGET2): $(OBJS2)
42         @$(RM) $(TARGET2)
43         @$(MAKE) $(VOUCHER2)
44         $(AR) crv $(TARGET2) $(VOUCHER2).o $(OBJS2)
45         $(RANLIB) $(TARGET2)
46 endif  # TARGET2
47
48 ifdef TARGET3_SO
49 XTARGET3= $(basename $(basename $(TARGET3_SO)))
50 VOUCHER3= V_$(XTARGET3)
51
52 $(TARGET3_SO): $(OBJS)
53         @$(RM) $(TARGET3_SO)
54         @$(MAKE) $(VOUCHER3)
55         $(LD) $(LDFLAGS) -o $(TARGET3_SO) $(VOUCHER3).o $(OBJS) $(LIBS)
56 endif  # TARGET3_SO
57 endif  # UNCOMMON_LINK
58
59 ifndef DEST
60 DEST            = $(TO_CORE)/$(LIBRARY_DEST)
61 endif
62
63 echo:
64         echo $(OBJS)
65
66 clean:
67         $(RM) *.o *.[hC] *.a *.so* $(TARGET)
68
69 ifndef UNCOMMON_INSTALL
70
71 ifndef TARGET3_SO
72 install: $(DEST)/$(TARGET)
73
74 $(DEST)/$(TARGET):  $(TARGET)
75         -$(CP) $(TARGET) $(DEST)
76         $(RANLIB) $(DEST)/$(TARGET)
77
78 else
79
80 install: $(DEST)/$(TARGET3_SO)
81
82 $(DEST)/$(TARGET3_SO): $(TARGET3_SO)
83         -$(CP) $(TARGET3_SO) $(DEST)
84
85 endif
86
87 #
88 # definition for secondary library
89 #
90 ifdef TARGET2
91 install: $(DEST)/$(TARGET2)
92
93 $(DEST)/$(TARGET2):  $(TARGET2)
94         -$(CP) $(TARGET2) $(DEST)
95         $(RANLIB) $(DEST)/$(TARGET2)
96 endif
97
98 #
99 #  definition for USES_LIBDYNINSTRT_SO
100 #
101 ifdef TARGET3
102 install: $(DEST)/$(TARGET3)
103
104 $(DEST)/$(TARGET3):  $(TARGET3)
105         -$(CP) $(TARGET3) $(DEST)
106 endif
107
108 endif      # ifndef UNCOMMON_INSTALL
109
110 #
111 # dependency generation definitions
112 #
113
114 .PHONY : depend
115 depend:
116         $(RM) DEPENDS
117         $(MAKE) DEPENDS
118
119
120 # Define DEPENDS dependencies such that the DEPENDS files depends on
121 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
122 # all the time.  We do need to build the Igen-generated files before
123 # updating DEPENDS, however,
124 #
125 DEPENDFLAGS = -MM
126 ifdef IGEN_ISRCS
127 ifdef EXPLICIT_DEPENDS
128 DEPENDS:
129 else
130 DEPENDS: $(SRCS) $(IGEN_ISRCS)
131 endif
132         touch DEPENDS
133         $(MAKE) $(IGEN_GEN_SRCS)
134         $(MAKE) $(SRCS)
135         $(MODCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
136 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
137 else
138 ifdef EXPLICIT_DEPENDS
139 DEPENDS:
140 else
141 DEPENDS: $(SRCS)
142 endif
143         touch DEPENDS
144         $(MAKE) $(SRCS)
145 ### TODO: remove this in favor of native compiler support
146 ifeq ($(MODCC),cc)
147         gcc -MM $(MODCFLAGS) $(SRCS) > DEPENDS
148 else
149         $(MODCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
150 endif
151 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
152 endif
153
154
155 #.depend.% %.C:
156 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
157
158 pure:
159
160
161 #
162 # A few pattern rules for simplicity in handling igen-generated files.
163 #
164
165 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
166         $(IGEN) -xdr $(ICFLAGS) $<
167
168 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
169         $(IGEN) -thread $(ICFLAGS) $<
170
171
172 #
173 # include the dependencies.
174 #
175 include DEPENDS
176
177 # platform-specific options
178 include $(TO_CORE)/make.platform.tmpl