Disabling ppc64 rewriter tests
[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.31 2008/02/19 13:36:45 rchen Exp $
8 #
9
10 BUILD_ID= -s $(SUITE_NAME) -v $(RELEASE_NUM)$(BUILD_MARK)$(BUILD_NUM)
11
12 ifndef DEST
13 DEST            = $(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 $(MODCFLAGS) $(VOUCHER).c
22 endif
23
24 OBJS =          $(filter %.o, $(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 # PREREQUISITES is a list of files to be generated before general
33 # compilation can proceed.  This enables build parallelization.
34 ifdef PREREQUISITES
35 $(OBJS): $(PREREQUISITES)
36 endif
37
38 $(TARGET): $(OBJS)
39         @$(MAKE) $(VOUCHER)
40         $(MODCC) -o $(TARGET) $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
41
42 quantify: $(OBJS)
43         @$(MAKE) $(VOUCHER)
44         quantify -cache-dir=/tmp \
45                 -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) \
46                 $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
47
48 qpt: $(OBJS)
49         @$(MAKE) $(VOUCHER)
50         $(MODCC) -Xlinker -Bstatic -o $(TARGET) \
51                 $(LDFLAGS) $(VOUCHER).o $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS) \
52                 -Xlinker -Bdynamic -ldl -Xlinker -Bstatic -lintl
53         # qpt's quick profiling may produce incorrect results in programs
54         # executing interprocedural jumps; this includes setjmp/longjmp.
55         # Hence we must use the -s option for paradyn:
56         /unsup/qpt2/bin/qpt2 -s $(TARGET)
57
58 VPATH           += ../src:$(LIBRARY_DEST):$(TO_CORE)/../lib/$(PLATFORM):$(BACKUP_CORE)/../lib/$(PLATFORM)
59
60
61 echo:
62         echo $(VPATH)
63
64 # Allow this to be ammended by modules
65 clean::
66         $(RM) *.o *.[hC] .__afs* $(TARGET) $(TARGETS)
67
68 distclean:: clean
69         $(RM) DEPENDS
70
71 install:  $(DEST)/$(TARGET)
72
73 $(DEST)/$(TARGET): $(TARGET)
74         -$(CP) $(TARGET) $(DEST)
75
76 .PHONY : depend
77 depend:
78         $(RM) DEPENDS
79         $(MAKE) DEPENDS
80
81
82 # Define DEPENDS dependencies such that the DEPENDS files depends on
83 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
84 # all the time.  We do need to build the Igen-generated files before
85 # updating DEPENDS, however,
86 #
87 ifndef DEPENDFLAGS
88   DEPENDFLAGS = -MM
89 endif
90 ifdef IGEN_ISRCS
91 ifdef EXPLICIT_DEPENDS
92 DEPENDS:
93 else
94 DEPENDS: $(SRCS) $(IGEN_ISRCS)
95 endif
96         touch DEPENDS
97         $(MAKE) $(IGEN_GEN_SRCS)
98         $(MAKE) $(SRCS)
99         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) $(filter %.C,$(IGEN_GEN_SRCS)) > DEPENDS
100 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
101 else
102 ifdef EXPLICIT_DEPENDS
103 DEPENDS:
104 else
105 DEPENDS: $(SRCS)
106 endif
107         touch DEPENDS
108         $(MAKE) $(SRCS)
109         $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
110
111 ifdef IBM_BPATCH_COMPAT 
112 ifeq (ibm-aix,$(findstring ibm-aix,$(PLATFORM)))
113         cat *.u > DEPENDS
114         rm -f *.u
115 endif
116 endif
117
118 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
119 endif
120
121
122
123 # A few pattern rules for simplicity.  The default lex rule is
124 # redefined, just for the sake of cleanliness.  More important are the
125 # igen rules; they "automatically" pick the correct type of igen to
126 # run.  Actually, we can't do this completely "right" unless igen is
127 # changed to generate different output files for the various type of
128 # interfaces.
129 #
130  
131 %.C: %.y
132         $(YACC) $(YFLAGS) $<
133         $(MV) y.tab.c $@
134
135 %.C: %.l
136         $(LEX) -t $(LFLAGS) $< > $@
137
138 %.mrnet.CLNT.C %.mrnet.CLNT.h %.mrnet.SRVR.C %.mrnet.SRVR.h %.mrnet.h %.mrnet.temp.C: %.I
139         $(IGEN) -mrnet $(ICFLAGS) $<
140
141 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h %.xdr.temp.C: %.I
142         $(IGEN) -xdr $(ICFLAGS) $<
143
144 %.thread.C %.thread.CLNT.h %.thread.CLNT.C %.thread.SRVR.h %.thread.SRVR.C %.thread.h: %.I
145         $(IGEN) -thread $(ICFLAGS) $<
146
147 %.thread.CLNT.C: %.thread.CLNT.h 
148 %.thread.SRVR.C: %.thread.SRVR.h
149 #
150 # include the dependencies.
151 #
152 ifneq ($(MAKECMDGOALS),distclean)
153 include DEPENDS
154 endif
155
156 # platform-specific options
157 include $(TO_CORE)/make.platform.tmpl