Added real pure rule, and fixed LDFLAGS
[dyninst.git] / make.program.tmpl
1 #
2 # This file defines the things that should be common to all "programs"
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.program.tmpl,v $
8 # Revision 1.5  1995/03/15 19:12:13  jcargill
9 # Added real pure rule, and fixed LDFLAGS
10 #
11 # Revision 1.4  1995/02/27  17:37:06  jcargill
12 # Added support for suppressing implicit dependency generation
13 # (EXPLICIT_DEPENDS) and removed PD_NO_DEPENDS support
14 #
15 # Revision 1.3  1995/02/16  07:56:46  markc
16 # Added flag to prevent generation of DEPENDS file if PD_NO_DEPENDS is true
17 # to save time during recompiles.
18 #
19 # Revision 1.2  1995/01/30  21:26:15  jcargill
20 # Better use of TO_CORE for modules below top-level (e.g. visiClients)
21 #
22 # Revision 1.1  1995/01/30  18:08:21  jcargill
23 # Major build system reorganization
24 #
25 #
26
27 OBJS =          $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
28                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
29                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
30                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
31                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
32                 $(IGEN_GEN_SRCS:%.C=%.o)
33
34 ifndef UNCOMMON_LINK
35 $(TARGET): $(OBJS) $(LIBS)
36         $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
37 endif
38
39 ifndef UNCOMMON_LINK
40 pure: $(OBJS) $(LIBS)
41         purify -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
42 endif
43
44
45 ifndef DEST
46 DEST            = $(TO_CORE)/../bin/$(PLATFORM)
47 endif
48
49 VPATH           += ../src:$(TO_CORE)/../lib/$(PLATFORM):/p/paradyn/lib/$(PLATFORM)
50
51
52 echo:
53         echo $(VPATH)
54
55 clean:
56         rm -f *.o *.[hC] $(TARGET)
57
58 install:  $(DEST)/$(TARGET)
59
60 $(DEST)/$(TARGET): $(TARGET)
61         cp $(TARGET) $(DEST)
62
63 .PHONY : depend
64 depend:
65         rm -f DEPENDS
66         $(MAKE) DEPENDS
67
68
69 # Define DEPENDS dependencies such that the DEPENDS files depends on
70 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
71 # all the time.  We do need to build the Igen-generated files before
72 # updating DEPENDS, however,
73 #
74 ifdef IGEN_ISRCS
75 ifdef EXPLICIT_DEPENDS
76 DEPENDS:
77 else
78 DEPENDS: $(SRCS) $(IGEN_ISRCS)
79 endif
80         touch DEPENDS
81         $(MAKE) $(IGEN_GEN_SRCS)
82         $(MAKE) $(SRCS)
83         $(MODCC) -MM $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
84 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
85 else
86 ifdef EXPLICIT_DEPENDS
87 DEPENDS:
88 else
89 DEPENDS: $(SRCS)
90 endif
91         touch DEPENDS
92         $(MAKE) $(SRCS)
93         $(MODCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
94 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
95 endif
96
97
98
99 # A few pattern rules for simplicity.  The default lex rule is
100 # redefined, just for the sake of cleanliness.  More important are the
101 # igen rules; they "automatically" pick the correct type of igen to
102 # run.  Actually, we can't do this completely "right" unless igen is
103 # changed to generate different output files for the various type of
104 # interfaces.
105 #
106
107 %.C: %.y
108         $(YACC) $(YFLAGS) $<
109         mv y.tab.c $@
110
111 %.C: %.l
112         $(LEX) -t $(LFLAGS) $< > $@
113
114 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
115         igen -xdr $(ICFLAGS) $<
116
117 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
118         igen -thread $(ICFLAGS) $<
119
120 #
121 # include the dependencies.
122 #
123 include DEPENDS