Major build system reorganization
[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.1  1995/01/30 18:08:21  jcargill
9 # Major build system reorganization
10 #
11 #
12
13 OBJS =          $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
14                 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
15                 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
16                 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
17                 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
18                 $(IGEN_GEN_SRCS:%.C=%.o)
19
20 ifndef UNCOMMON_LINK
21 $(TARGET): $(OBJS) $(LIBS)
22         $(MODCC) -o $(TARGET) $(MODCFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
23 endif
24
25 ifndef DEST
26 DEST            = ../../../bin/$(PLATFORM)
27 endif
28
29 VPATH           += ../src:../../../lib/$(PLATFORM):/p/paradyn/lib/$(PLATFORM)
30
31
32 echo:
33         echo $(VPATH)
34
35 clean:
36         rm -f *.o *.[hC] $(TARGET)
37
38 install:  $(DEST)/$(TARGET)
39
40 $(DEST)/$(TARGET): $(TARGET)
41         cp $(TARGET) $(DEST)
42
43 depend: DEPENDS
44
45
46 # Define DEPENDS dependencies such that the DEPENDS files depends on
47 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
48 # all the time.  We do need to build the Igen-generated files before
49 # updating DEPENDS, however,
50 #
51 ifdef IGEN_ISRCS
52 DEPENDS: $(SRCS) $(IGEN_ISRCS)
53         touch DEPENDS
54         $(MAKE) $(IGEN_GEN_SRCS)
55         $(MODCC) -MM $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
56 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
57 else
58 DEPENDS: $(SRCS)
59         touch DEPENDS
60         $(MODCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
61 #       makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
62 endif
63
64 pure:
65
66
67 # A few pattern rules for simplicity.  The default lex rule is
68 # redefined, just for the sake of cleanliness.  More important are the
69 # igen rules; they "automatically" pick the correct type of igen to
70 # run.  Actually, we can't do this completely "right" unless igen is
71 # changed to generate different output files for the various type of
72 # interfaces.
73 #
74
75 %.C: %.y
76         $(YACC) $(YFLAGS) $<
77         mv y.tab.c $@
78
79 %.C: %.l
80         $(LEX) -t $(LFLAGS) $< > $@
81
82 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
83         igen -xdr $(ICFLAGS) $<
84
85 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
86         igen -thread $(ICFLAGS) $<
87
88 #
89 # include the dependencies.
90 #
91 include DEPENDS