Fix Windows compiler warnings
[dyninst.git] / make.library.tmpl
1 # -*- makefile -*-
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.31 2008/03/12 20:08:25 legendre 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 VPATH           += ../src
16
17 ifndef NO_STD_OBJS
18
19 OBJS +=         $(filter %.o, $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
20                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
21                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
22                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
23                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
24                 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
25                 $(IGEN_GEN_SRCS:%.C=%.o))
26
27 STATIC_OBJS +=  $(filter %_nopic.o, $(patsubst %.C, %_nopic.o, $(filter %.C,$(notdir $(SRCS)))) \
28                 $(patsubst %.c, %_nopic.o, $(filter %.c,$(notdir $(SRCS)))) \
29                 $(patsubst %.y, %_nopic.o, $(filter %.y,$(notdir $(SRCS)))) \
30                 $(patsubst %.l, %_nopic.o, $(filter %.l,$(notdir $(SRCS)))) \
31                 $(patsubst %.s, %_nopic.o, $(filter %.s,$(notdir $(SRCS)))) \
32                 $(patsubst %.S, %_nopic.o, $(filter %.S,$(notdir $(SRCS)))) \
33                 $(IGEN_GEN_SRCS:%.C=%_nopic.o))
34
35 endif
36
37 XLC_DEPFILES =  $(filter %.u, $(patsubst %.u, %.o, $(filter %.u,$(notdir $(SRCS)))))
38
39 # specify build prerequisite dependencies (for parallel make)
40 ifdef PREREQUISITES
41 $(OBJS): $(PREREQUISITES)
42 endif
43
44 XTARGET= $(basename $(basename $(TARGET)))
45 VOUCHER= V_$(XTARGET)
46
47 ifdef STATIC_COMPS
48 STATIC_LIBRARY = true
49 endif
50
51 $(VOUCHER).c: $(OBJS)
52         @echo Updating build voucher information: $(VOUCHER)
53         $(HIDE_COMP)$(BUILDSTAMP) $(BUILD_ID) $(XTARGET)
54
55 $(VOUCHER).o: $(VOUCHER).c
56         @echo Compiling $@
57         $(HIDE_COMP)$(MODCC) -c $(MODCFLAGS) $(VOUCHER).c
58
59 ifndef OVERRIDE_LINK
60 ifndef STATIC_LIBRARY
61 $(TARGET): $(OBJS) $(EXTRA_LIBS) $(VOUCHER).o
62         $(HIDE_COMP)$(RM) $(TARGET)
63         @echo Linking $@
64         $(HIDE_COMP)$(LD) $(LIBDIR) $(LDFLAGS) -o $(TARGET) $(VOUCHER).o $(OBJS) $(LIBS)
65 else # build a static lib
66 $(TARGET): $(OBJS) $(EXTRA_LIBS) $(VOUCHER).o
67         $(HIDE_COMP)$(RM) $(TARGET)
68         @echo Linking $@
69         $(AR) rcs $(TARGET) $(VOUCHER).o $(OBJS)
70 endif # STATIC_LIBRARY
71
72 ifdef STATIC_TARGET
73
74 # pattern rules for building non-PIC .o's
75 %_nopic.o: ../src/%.c
76         @echo "Compiling $< (noPIC)"
77         $(HIDE_COMP)$(CC) -c -o $*_nopic.o $(CFLAGS) $(CPPFLAGS) ../src/$*.c
78
79 %_nopic.o: ../src/%.C
80         @echo "Compiling $< (noPIC)"
81         $(HIDE_COMP)$(CXX) -c -o $*_nopic.o $(CPPFLAGS) $(CXXFLAGS) ../src/$*.C
82
83 %_nopic.o: ../src/%.S
84         @echo "Compiling $< (noPIC)"
85         $(HIDE_COMP)$(AS) $(ASFLAGS) -o $*_nopic.o ../src/$*.S
86
87 %_nopic.o: ../src/%.s
88         @echo "Compiling $< (noPIC)"
89         $(HIDE_COMP)$(AS) $(ASFLAGS) -o $*_nopic.o ../src/$*.s
90
91 ifdef STATIC_CFLAGS
92 $(STATIC_TARGET): CFLAGS = $(STATIC_CFLAGS)
93 endif
94
95 ifdef STATIC_CPPFLAGS
96 $(STATIC_TARGET): CPPFLAGS = $(STATIC_CPPFLAGS)
97 endif
98
99 ifdef STATIC_CXXCFLAGS
100 $(STATIC_TARGET): CXXFLAGS = $(STATIC_CXXFLAGS)
101 endif
102
103 ifdef STATIC_ASFLAGS
104 $(STATIC_TARGET): ASFLAGS = $(STATIC_ASFLAGS)
105 endif
106
107 $(STATIC_TARGET): $(STATIC_OBJS)
108         @echo Linking $@
109         $(HIDE_COMP)$(RM) $(STATIC_TARGET)
110         $(HIDE_COMP)$(AR) rcs $(STATIC_TARGET) $(STATIC_OBJS)
111
112 endif # STATIC_TARGET
113
114 endif  # OVERRIDE_LINK
115
116 ifdef PUBLIC_H
117 $(INCLUDE_DEST)/%.h: $(TO_INC)/%.h
118         @echo Install $@
119         $(HIDE_COMP)$(INSTALL) $^ $(INCLUDE_DEST)
120
121 public_includes: $(patsubst %,$(INCLUDE_DEST)/%,$(PUBLIC_H))
122 else
123 public_includes:
124 endif 
125
126 ifndef DEST
127 DEST            = $(LIBRARY_DEST)
128 endif
129
130 echo:
131         echo $(OBJS)
132
133 clean:
134         $(RM) *.o *.[hC] *.a *.so* .__afs* $(TARGET) $(STATIC_TARGET)
135
136 distclean: clean
137         $(RM) DEPENDS
138
139 $(DEST)/$(TARGET): $(TARGET)
140         @echo Installing $(TARGET) to $(DEST)/$(TARGET).$(RELEASE_NUM)
141         $(HIDE_COMP)-$(INSTALL) $(TARGET) $(DEST)/$(TARGET).$(RELEASE_NUM)
142         @echo Making symlink $(TARGET).$(RELEASE_NUM) to $(DEST)/$(TARGET)
143         $(HIDE_COMP)-$(LN) -f $(TARGET).$(RELEASE_NUM) $(DEST)/$(TARGET)
144
145 ifdef STATIC_TARGET
146 $(DEST)/$(STATIC_TARGET): $(STATIC_TARGET)
147         @echo Installing $(STATIC_TARGET) to $(DEST)
148         $(HIDE_COMP)-$(INSTALL) $(STATIC_TARGET) $(DEST)
149
150 install_generic: $(DEST)/$(TARGET) public_includes $(DEST)/$(STATIC_TARGET)
151
152 else
153
154 install_generic: $(DEST)/$(TARGET) public_includes
155
156 endif
157
158 # A definition of OVERRIDE_INSTALL will skip this definition, so it shouldn't contain
159 # anything other than "install_generic". 
160 ifndef OVERRIDE_INSTALL
161 install: install_generic
162 endif
163
164 # %.C: %.y
165 #       $(YACC) $(YFLAGS) $<
166 #       $(MV) y.tab.c $@
167
168 # %.C: %.l
169 #       $(LEX) -t $(LFLAGS) $< > $@
170
171 #
172 # dependency generation definitions
173 #
174
175 .PHONY : depend
176 depend:
177         $(RM) DEPENDS
178         $(MAKE) DEPENDS
179
180
181 # Define DEPENDS dependencies such that the DEPENDS files depends on
182 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
183 # all the time.  We do need to build the Igen-generated files before
184 # updating DEPENDS, however,
185 #
186 ifndef DEPENDFLAGS
187   DEPENDFLAGS = -MM
188 endif
189
190 DEPENDS:
191         @echo "Building depends files"
192         @touch DEPENDS
193 #       @$(MAKE) $(SRCS)
194 ifdef XLC_BUILD
195   ifeq ($(DEPCC), xlC)
196         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > /dev/null
197         cat *.u > DEPENDS
198         rm -f *.u
199   else
200         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
201   endif #aix/power platform
202 else
203 ifeq ($(MODCC),cc)
204         $(HIDE_COMP)$(GCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
205 else
206         $(HIDE_COMP)$(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
207 endif #XLC_BUILD
208 endif
209
210
211 #.depend.% %.C:
212 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
213
214
215 #
216 # A few pattern rules for simplicity in handling igen-generated files.
217 #
218
219 %.mrnet.CLNT.C %.mrnet.CLNT.h %.mrnet.SRVR.C %.mrnet.SRVR.h %.mrnet.h %.mrnet.temp.C: %.I
220         $(IGEN) -mrnet $(ICFLAGS) $<
221
222 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h %.xdr.temp.C: %.I
223
224         $(IGEN) -xdr $(ICFLAGS) $<
225
226 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
227         $(IGEN) -thread $(ICFLAGS) $<
228
229 #
230 # include the dependencies.
231 #
232 ifneq ($(MAKECMDGOALS),distclean)
233 include DEPENDS
234 endif
235
236 # platform-specific options
237 include $(TO_CORE)/make.platform.tmpl
238
239 # Let's trying prettyprinting the compile lines...
240
241 %.o : %.c
242         @echo Compiling $<
243         $(HIDE_COMP) $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ 
244
245 %.o : %.C
246         @echo Compiling $<
247         $(HIDE_COMP) $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $< -o $@
248
249 ifdef LIBELF_PLATFORM
250 ifdef USES_LIBELF
251 ifneq (x,x$(strip $(LIBELF_LIB)))
252 LIBELF_LINK_FLAGS += -L$(LIBELF_LIB)
253 endif
254 ifndef LIBELFSTATIC
255 LIBELF_LINK_FLAGS += -lelf
256 endif
257 ifneq (x,x$(strip $(LIBELF_INC)))
258 LIBELF_INC_FLAGS += -I$(LIBELF_INC)
259 endif
260 LIBS += $(LIBELF_LINK_FLAGS)
261 MYFLAGS += $(LIBELF_INC_FLAGS)
262 endif
263 endif
264
265 ifdef LIBDWARF_PLATFORM
266 ifdef USES_DWARF_DEBUG
267 ifneq (x,x$(strip $(LIBDWARF_LIB)))
268 LIBDWARF_LINK_FLAGS += -L$(LIBDWARF_LIB)
269 endif
270 ifndef LIBDWARFSTATIC
271 LIBDWARF_LINK_FLAGS += -ldwarf
272 endif
273 ifneq (x,x$(strip $(LIBDWARF_INC)))
274 LIBDWARF_INC_FLAGS += -I$(LIBDWARF_INC)
275 endif
276 LIBS += $(LIBDWARF_LINK_FLAGS)
277 MYFLAGS += $(LIBDWARF_INC_FLAGS)
278 endif
279 endif
280
281