Added support for suppressing implicit dependency generation
[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 # $Log: make.library.tmpl,v $
8 # Revision 1.5  1995/02/27 17:37:04  jcargill
9 # Added support for suppressing implicit dependency generation
10 # (EXPLICIT_DEPENDS) and removed PD_NO_DEPENDS support
11 #
12 # Revision 1.4  1995/02/21  16:34:06  jcargill
13 # Allow module-specific linking and installing where desired
14 #
15 # Revision 1.3  1995/02/17  22:19:21  markc
16 # Added defs to build libutilPVM.a
17 #
18 # Revision 1.2  1995/01/30  21:26:16  jcargill
19 # Better use of TO_CORE for modules below top-level (e.g. visiClients)
20 #
21 # Revision 1.1  1995/01/30  18:08:18  jcargill
22 # Major build system reorganization
23 #
24 #
25
26
27 VPATH           += ../src
28
29 OBJS =          $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
30                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
31                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
32                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
33                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
34                 $(IGEN_GEN_SRCS:%.C=%.o)
35
36 ifndef UNCOMMON_LINK
37 $(TARGET): $(OBJS)
38         @rm -f $(TARGET)
39         ar crv $(TARGET) $(OBJS)
40         $(RANLIB) $(TARGET)
41
42 ifdef TARGET2
43 $(TARGET2): $(OBJS2)
44         @rm -f $(TARGET2)
45         ar crv $(TARGET2) $(OBJS2)
46         $(RANLIB) $(TARGET2)
47 endif  # TARGET2
48 endif  # UNCOMMON_LINK
49
50 ifndef DEST
51 DEST            = $(TO_CORE)/../lib/$(PLATFORM)
52 endif
53
54 echo:
55         echo $(OBJS)
56
57 clean:
58         rm -f *.o *.[hC] *.a $(TARGET)
59
60 ifndef UNCOMMON_INSTALL
61 install: $(DEST)/$(TARGET)
62
63 $(DEST)/$(TARGET):  $(TARGET)
64         cp $(TARGET) $(DEST)
65         $(RANLIB) $(DEST)/$(TARGET)
66
67 #
68 # definition for secondary library
69 #
70 ifdef TARGET2
71 install: $(DEST)/$(TARGET2)
72
73 $(DEST)/$(TARGET2):  $(TARGET2)
74         cp $(TARGET2) $(DEST)
75         $(RANLIB) $(DEST)/$(TARGET2)
76 endif
77 endif      # ifndef UNCOMMON_INSTALL
78
79 #
80 # dependency generation definitions
81 #
82
83 .PHONY : depend
84 depend:
85         rm -f DEPENDS
86         $(MAKE) DEPENDS
87
88
89 # Define DEPENDS dependencies such that the DEPENDS files depends on
90 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
91 # all the time.  We do need to build the Igen-generated files before
92 # updating DEPENDS, however,
93 #
94 ifdef IGEN_ISRCS
95 ifdef EXPLICIT_DEPENDS
96 DEPENDS:
97 else
98 DEPENDS: $(SRCS) $(IGEN_ISRCS)
99 endif
100         touch DEPENDS
101         $(MAKE) $(IGEN_GEN_SRCS)
102         $(MAKE) $(SRCS)
103         $(MODCC) -MM $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
104 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
105 else
106 ifdef EXPLICIT_DEPENDS
107 DEPENDS:
108 else
109 DEPENDS: $(SRCS)
110 endif
111         touch DEPENDS
112         $(MAKE) $(SRCS)
113         $(MODCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
114 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
115 endif
116
117
118 #.depend.% %.C:
119 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
120
121 pure:
122
123
124
125 #
126 # A few pattern rules for simplicity in handling igen-generated files.
127 #
128
129 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
130         igen -xdr $(ICFLAGS) $<
131
132 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
133         igen -thread $(ICFLAGS) $<
134
135
136 #
137 # include the dependencies.
138 #
139 include DEPENDS