Restructuring of build for greater flexibility and easier control.
[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.12 1998/04/01 02:59:50 wylie 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 endif  # UNCOMMON_LINK
48
49 ifndef DEST
50 DEST            = $(TO_CORE)/$(LIBRARY_DEST)
51 endif
52
53 echo:
54         echo $(OBJS)
55
56 clean:
57         $(RM) *.o *.[hC] *.a $(TARGET) *.so*
58
59 ifndef UNCOMMON_INSTALL
60 install: $(DEST)/$(TARGET)
61
62 $(DEST)/$(TARGET):  $(TARGET)
63         $(CP) $(TARGET) $(DEST)
64         $(RANLIB) $(DEST)/$(TARGET)
65
66 #
67 # definition for secondary library
68 #
69 ifdef TARGET2
70 install: $(DEST)/$(TARGET2)
71
72 $(DEST)/$(TARGET2):  $(TARGET2)
73         $(CP) $(TARGET2) $(DEST)
74         $(RANLIB) $(DEST)/$(TARGET2)
75 endif
76
77 #
78 #  definition for USES_LIBDYNINSTRT_SO
79 #
80 ifdef TARGET3
81 install: $(DEST)/$(TARGET3)
82
83 $(DEST)/$(TARGET3):  $(TARGET3)
84         $(CP) $(TARGET3) $(DEST)
85 endif
86
87 endif      # ifndef UNCOMMON_INSTALL
88
89 #
90 # dependency generation definitions
91 #
92
93 .PHONY : depend
94 depend:
95         $(RM) DEPENDS
96         $(MAKE) DEPENDS
97
98
99 # Define DEPENDS dependencies such that the DEPENDS files depends on
100 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
101 # all the time.  We do need to build the Igen-generated files before
102 # updating DEPENDS, however,
103 #
104 ifdef IGEN_ISRCS
105 ifdef EXPLICIT_DEPENDS
106 DEPENDS:
107 else
108 DEPENDS: $(SRCS) $(IGEN_ISRCS)
109 endif
110         touch DEPENDS
111         $(MAKE) $(IGEN_GEN_SRCS)
112         $(MAKE) $(SRCS)
113         $(MODCC) -MM $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
114 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
115 else
116 ifdef EXPLICIT_DEPENDS
117 DEPENDS:
118 else
119 DEPENDS: $(SRCS)
120 endif
121         touch DEPENDS
122         $(MAKE) $(SRCS)
123 ifeq ($(MODCC),cc)
124         gcc -MM $(MODCFLAGS) $(SRCS) > DEPENDS
125 else
126         $(MODCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
127 endif
128 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
129 endif
130
131
132 #.depend.% %.C:
133 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
134
135 pure:
136
137
138 #
139 # A few pattern rules for simplicity in handling igen-generated files.
140 #
141
142 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
143         $(IGEN) -xdr $(ICFLAGS) $<
144
145 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
146         $(IGEN) -thread $(ICFLAGS) $<
147
148
149 #
150 # include the dependencies.
151 #
152 include DEPENDS