Parameterize LIBRARY_DEST, PROGRAM_DEST, etc
[dyninst.git] / nmake.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: nmake.program.tmpl,v 1.2 1998/03/02 00:42:13 wylie Exp $
8 #
9
10 !ifndef UNCOMMON_LINK
11 $(TARGET): $(OBJS)
12         link -out:$(TARGET) -debug $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
13 !endif
14
15 #!ifndef UNCOMMON_LINK
16 # The user may set APP_PURE_OPTIONS for application-specific purify options
17 #pure: $(OBJS) $(LIBS)
18 #       purify $(APP_PURE_OPTIONS) -cache-dir=/tmp -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
19 #!endif
20
21 #!ifndef UNCOMMON_LINK
22 #quantify: $(OBJS) $(LIBS)
23 #       quantify -cache-dir=/tmp -$(MODCC) -collector=$(COLLECTOR) $(MODCC) -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
24 #!endif
25
26 #!ifndef UNCOMMON_LINK
27 #qpt: $(OBJS) $(LIBS)
28 #       $(MODCC) -static -o $(TARGET) $(LDFLAGS) $(OBJS) $(LIBDIR) $(LIBS) $(SYSLIBS)
29 #       # qpt's quick profiling may produce incorrect results in programs
30 #       # executing interprocedural jumps; this includes setjmp/longjmp.
31 #       # Hence we must use the -s option for paradyn:
32 #       qpt2 -s $(TARGET)
33 #!endif
34
35 !ifndef DEST
36 DEST            = $(PROGRAM_DEST)
37 !endif
38
39 VPATH           = $(VPATH) ../src:$(TO_CORE)/../lib/$(PLATFORM):$(BACKUP_CORE)/../lib/$(PLATFORM)
40
41
42 echo:
43         echo $(VPATH)
44
45 clean:
46         $(RM) *.obj  *.ilk *.pdb *.h *.C $(TARGET)
47
48 install:  $(DEST)\$(TARGET)
49
50 $(DEST)\$(TARGET): $(TARGET)
51         @-$(MKDIR) $(DEST)
52         $(CP) $(TARGET) $(DEST)
53
54 #.PHONY : depend
55 #depend:
56 #       $(RM) DEPENDS
57 #       $(MAKE) DEPENDS
58
59
60 # Define DEPENDS dependencies such that the DEPENDS files depends on
61 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
62 # all the time.  We do need to build the Igen-generated files before
63 # updating DEPENDS, however,
64 #
65 #!ifdef IGEN_ISRCS
66 #!ifdef EXPLICIT_DEPENDS
67 #DEPENDS:
68 #!else
69 #DEPENDS: $(SRCS) $(IGEN_ISRCS)
70 #!endif
71 #       touch DEPENDS
72 #       $(MAKE) $(IGEN_GEN_SRCS)
73 #       $(MAKE) $(SRCS)
74 #       $(MODCC) -MM $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
75 ##      makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
76 #!else
77 #!ifdef EXPLICIT_DEPENDS
78 #ADEPENDS:
79 #!else
80 #DEPENDS: $(SRCS)
81 #!endif
82 #       touch DEPENDS
83 #       $(MAKE) $(SRCS)
84 #       $(MODCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
85 ##      makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
86 #!endif
87
88
89
90 # A few pattern rules for simplicity.  The default lex rule is
91 # redefined, just for the sake of cleanliness.  More important are the
92 # igen rules; they "automatically" pick the correct type of igen to
93 # run.  Actually, we can't do this completely "right" unless igen is
94 # changed to generate different output files for the various type of
95 # interfaces.
96 #
97
98 {..\src\}.C.obj:
99         $(CXX) $(CXXFLAGS) -c $<
100
101 .C.obj:
102         $(CXX) $(CXXFLAGS) -c $<
103
104 {..\src\}.y.C:
105         $(YACC) $(YFLAGS) $<
106         $(RM) $@
107         $(MV) y.tab.c $@
108
109 {..\src\}.y.obj:
110         $(YACC) $(YFLAGS) $<
111         $(RM) $@
112         $(MV) y.tab.c $@
113         $(CXX) $(CXXFLAGS) -c $<
114
115
116 #%.C: %.y
117 #       $(YACC) $(YFLAGS) $<
118 #       $(MV) y.tab.c $@
119
120 %.C: %.l
121         $(LEX) -t $(LFLAGS) $< > $@
122
123 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
124         $(IGEN) -xdr $(ICFLAGS) $<
125
126 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
127         $(IGEN) -thread $(ICFLAGS) $<
128
129 #
130 # include the dependencies.
131 #
132 !include DEPENDS