introduce IA-64 port - - - - - - - - - - - - - - - - - - - - - - - - - -
[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.18 2001/07/17 22:33:07 bernat 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 ifdef USES_LIB_TEXT_HEAP_INTERNAL
53 $(TARGET3_SO): $(OBJS) $(LIB_TEXT_HEAP_OBJ)
54         @$(RM) $(TARGET3_SO)
55         @$(MAKE) $(VOUCHER3)
56         $(LD) $(LDFLAGS) -o $(TARGET3_SO) $(VOUCHER3).o $(OBJS) $(LIBS)
57 else
58 $(TARGET3_SO): $(OBJS)
59         @$(RM) $(TARGET3_SO)
60         @$(MAKE) $(VOUCHER3)
61         $(LD) $(LDFLAGS) -o $(TARGET3_SO) $(VOUCHER3).o $(OBJS) $(LIBS)
62 endif  # USES_LIB_TEXT_HEAP
63 endif  # TARGET3_SO
64 endif  # UNCOMMON_LINK
65
66 ifndef DEST
67 DEST            = $(TO_CORE)/$(LIBRARY_DEST)
68 endif
69
70 echo:
71         echo $(OBJS)
72
73 clean:
74         $(RM) *.o *.[hC] *.a *.so* $(TARGET)
75
76 ifndef UNCOMMON_INSTALL
77
78 ifndef TARGET3_SO
79 install: $(DEST)/$(TARGET)
80
81 $(DEST)/$(TARGET):  $(TARGET)
82         -$(CP) $(TARGET) $(DEST)
83         $(RANLIB) $(DEST)/$(TARGET)
84
85 else
86
87 install: $(DEST)/$(TARGET3_SO)
88
89 $(DEST)/$(TARGET3_SO): $(TARGET3_SO)
90         -$(CP) $(TARGET3_SO) $(DEST)
91
92 endif
93
94 #
95 # definition for secondary library
96 #
97 ifdef TARGET2
98 install: $(DEST)/$(TARGET2)
99
100 $(DEST)/$(TARGET2):  $(TARGET2)
101         -$(CP) $(TARGET2) $(DEST)
102         $(RANLIB) $(DEST)/$(TARGET2)
103 endif
104
105 #
106 #  definition for dlopen()able runtime library
107 #
108 ifdef TARGET3
109 install: $(DEST)/$(TARGET3)
110
111 $(DEST)/$(TARGET3):  $(TARGET3)
112         -$(CP) $(TARGET3) $(DEST)
113 endif
114
115 endif      # ifndef UNCOMMON_INSTALL
116
117 #
118 # dependency generation definitions
119 #
120
121 .PHONY : depend
122 depend:
123         $(RM) DEPENDS
124         $(MAKE) DEPENDS
125
126
127 # Define DEPENDS dependencies such that the DEPENDS files depends on
128 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
129 # all the time.  We do need to build the Igen-generated files before
130 # updating DEPENDS, however,
131 #
132 DEPENDFLAGS = -MM
133 ifdef IGEN_ISRCS
134 ifdef EXPLICIT_DEPENDS
135 DEPENDS:
136 else
137 DEPENDS: $(SRCS) $(IGEN_ISRCS)
138 endif
139         touch DEPENDS
140         $(MAKE) $(IGEN_GEN_SRCS)
141         $(MAKE) $(SRCS)
142         $(MODCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
143 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
144 else
145 ifdef EXPLICIT_DEPENDS
146 DEPENDS:
147 else
148 DEPENDS: $(SRCS)
149 endif
150         touch DEPENDS
151         $(MAKE) $(SRCS)
152 ### TODO: remove this in favor of native compiler support
153 ifeq ($(MODCC),cc)
154         gcc -MM $(MODCFLAGS) $(SRCS) > DEPENDS
155 else
156         $(MODCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
157 endif
158 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
159 endif
160
161
162 #.depend.% %.C:
163 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
164
165 pure:
166
167
168 #
169 # A few pattern rules for simplicity in handling igen-generated files.
170 #
171
172 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
173         $(IGEN) -xdr $(ICFLAGS) $<
174
175 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
176         $(IGEN) -thread $(ICFLAGS) $<
177
178
179 #
180 # include the dependencies.
181 #
182 include DEPENDS
183
184 # platform-specific options
185 include $(TO_CORE)/make.platform.tmpl