Introduce rs6000-ibm-aix64 platform.
[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.30 2005/12/19 19:41:36 pack 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 $(MODCFLAGS) $(VOUCHER).c
19
20 VPATH           += ../src
21
22 ifndef NO_STD_OBJS
23 OBJS +=         $(filter %.o, $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
24                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
25                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
26                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
27                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
28                 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
29                 $(IGEN_GEN_SRCS:%.C=%.o))
30 endif
31
32 XLC_DEPFILES =  $(filter %.u, $(patsubst %.u, %.o, $(filter %.u,$(notdir $(SRCS)))))
33
34 # specify build prerequisite dependencies (for parallel make)
35 ifdef PREREQUISITES
36 $(OBJS): $(PREREQUISITES)
37 endif
38
39 XTARGET= $(basename $(basename $(TARGET)))
40 VOUCHER= V_$(XTARGET)
41
42 ifndef OVERRIDE_LINK
43 ifndef STATIC_LIBRARY
44 $(TARGET): $(OBJS) $(EXTRA_LIBS)
45         @$(RM) $(TARGET)
46         @$(MAKE) $(VOUCHER)
47         $(LD) $(LDFLAGS) -o $(TARGET) $(VOUCHER).o $(OBJS) $(LIBS)
48 else # build a static lib
49 $(TARGET): $(OBJS) $(EXTRA_LIBS)
50         @$(RM) $(TARGET)
51         @$(MAKE) $(VOUCHER)
52         $(AR) rcs $(TARGET) $(VOUCHER).o $(OBJS)
53 endif # STATIC_LIBRARY
54 endif  # OVERRIDE_LINK
55
56 ifndef DEST
57 DEST            = $(TO_CORE)/$(LIBRARY_DEST)
58 endif
59
60 echo:
61         echo $(OBJS)
62
63 clean:
64         $(RM) *.o *.[hC] *.a *.so* .__afs* $(TARGET) 
65
66 distclean: clean
67         $(RM) DEPENDS
68
69 install_generic: $(TARGET)
70         -$(CP) $(TARGET) $(DEST)
71
72
73 ifndef OVERRIDE_INSTALL
74 install: install_generic
75 endif
76
77 #
78 # dependency generation definitions
79 #
80
81 .PHONY : depend
82 depend:
83         $(RM) DEPENDS
84         $(MAKE) DEPENDS
85
86
87 # Define DEPENDS dependencies such that the DEPENDS files depends on
88 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
89 # all the time.  We do need to build the Igen-generated files before
90 # updating DEPENDS, however,
91 #
92 ifndef DEPENDFLAGS
93   DEPENDFLAGS = -MM
94 endif
95 ifdef IGEN_ISRCS
96 ifdef EXPLICIT_DEPENDS
97 DEPENDS:
98 else
99 DEPENDS: $(SRCS) $(IGEN_ISRCS)
100 endif
101         touch DEPENDS
102         $(MAKE) $(IGEN_GEN_SRCS)
103         $(MAKE) $(SRCS)
104         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) $(filter %.C,$(IGEN_GEN_SRCS)) > DEPENDS
105 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
106 else
107 ifdef EXPLICIT_DEPENDS
108 DEPENDS:
109 else
110 DEPENDS: $(SRCS)
111 endif
112         touch DEPENDS
113         $(MAKE) $(SRCS)
114 ### TODO: remove this in favor of native compiler support
115 ifeq ($(MODCC),cc)
116         gcc -MM $(MODCFLAGS) $(SRCS) > DEPENDS
117 else
118 ifdef IBM_BPATCH_COMPAT
119   ifeq ($(DEPCC), xlC)
120         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
121         cat *.u > DEPENDS
122         rm -f *.u
123   else
124         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
125   endif #aix/power platform
126 else
127         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
128 endif #IBM_BPATCH_COMPAT
129 endif
130 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
131 endif
132
133
134 #.depend.% %.C:
135 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
136
137 pure:
138
139 %.C: %.y
140         $(YACC) $(YFLAGS) $<
141         $(MV) y.tab.c $@
142
143 %.C: %.l
144         $(LEX) -t $(LFLAGS) $< > $@
145
146 #
147 # A few pattern rules for simplicity in handling igen-generated files.
148 #
149
150 %.mrnet.CLNT.C %.mrnet.CLNT.h %.mrnet.SRVR.C %.mrnet.SRVR.h %.mrnet.h %.mrnet.temp.C: %.I
151         $(IGEN) -mrnet $(ICFLAGS) $<
152
153 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h %.xdr.temp.C: %.I
154
155         $(IGEN) -xdr $(ICFLAGS) $<
156
157 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
158         $(IGEN) -thread $(ICFLAGS) $<
159
160
161 #
162 # include the dependencies.
163 #
164 ifneq ($(MAKECMDGOALS),distclean)
165 include DEPENDS
166 endif
167
168 # platform-specific options
169 include $(TO_CORE)/make.platform.tmpl