Removed spurious LIBS dependencies
[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 # $Id: make.program.tmpl,v 1.17 1999/05/29 23:43:45 wylie Exp $
8 #
9
10 BUILD_ID= -s $(SUITE_NAME) -v $(RELEASE_NUM)$(BUILD_MARK)$(BUILD_NUM)
11
12 ifndef DEST
13 DEST            = $(TO_CORE)/$(PROGRAM_DEST)
14 endif
15
16 ifndef TARGETS
17 VOUCHER = V_$(TARGET)
18 $(VOUCHER):
19         @echo Updating build voucher information: $(VOUCHER)
20         $(BUILDSTAMP) $(BUILD_ID) $(TARGET)
21         $(MODCC) -c $(VOUCHER).c
22 endif
23
24 OBJS =          $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
25                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
26                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
27                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
28                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
29                 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
30                 $(IGEN_GEN_SRCS:%.C=%.o)
31
32 ifndef UNCOMMON_LINK
33 $(TARGET): $(OBJS)
34         @$(MAKE) $(VOUCHER)
35         $(MODCC) -o $(TARGET) $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
36 endif
37
38 ifndef UNCOMMON_LINK
39 # The user may set APP_PURE_OPTIONS for application-specific purify options
40 pure: $(OBJS)
41         @$(MAKE) $(VOUCHER)
42         purify $(APP_PURE_OPTIONS) -cache-dir=/tmp \
43                 -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) \
44                 $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
45 endif
46
47 ifndef UNCOMMON_LINK
48 quantify: $(OBJS)
49         @$(MAKE) $(VOUCHER)
50         quantify -cache-dir=/tmp \
51                 -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) \
52                 $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
53 endif
54
55 ifndef UNCOMMON_LINK
56 qpt: $(OBJS)
57         @$(MAKE) $(VOUCHER)
58         $(MODCC) -Xlinker -Bstatic -o $(TARGET) \
59                 $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS) \
60                 -Xlinker -Bdynamic -ldl -Xlinker -Bstatic -lintl
61         # qpt's quick profiling may produce incorrect results in programs
62         # executing interprocedural jumps; this includes setjmp/longjmp.
63         # Hence we must use the -s option for paradyn:
64         /unsup/qpt2/bin/qpt2 -s $(TARGET)
65 endif
66
67 VPATH           += ../src:$(TO_CORE)/$(LIBRARY_DEST):$(TO_CORE)/../lib/$(PLATFORM):$(BACKUP_CORE)/../lib/$(PLATFORM)
68
69
70 echo:
71         echo $(VPATH)
72
73 clean:
74         $(RM) *.o *.[hC] $(TARGET) $(TARGETS)
75
76 ifndef UNCOMMON_INSTALL
77 install:  $(DEST)/$(TARGET)
78
79 $(DEST)/$(TARGET): $(TARGET)
80         -$(CP) $(TARGET) $(DEST)
81 endif
82
83 .PHONY : depend
84 depend:
85         $(RM) 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
119 # A few pattern rules for simplicity.  The default lex rule is
120 # redefined, just for the sake of cleanliness.  More important are the
121 # igen rules; they "automatically" pick the correct type of igen to
122 # run.  Actually, we can't do this completely "right" unless igen is
123 # changed to generate different output files for the various type of
124 # interfaces.
125 #
126  
127 %.C: %.y
128         $(YACC) $(YFLAGS) $<
129         $(MV) y.tab.c $@
130
131 %.C: %.l
132         $(LEX) -t $(LFLAGS) $< > $@
133
134 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
135         $(IGEN) -xdr $(ICFLAGS) $<
136
137 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
138         $(IGEN) -thread $(ICFLAGS) $<
139
140 #
141 # include the dependencies.
142 #
143 include DEPENDS