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