6 * This is the standard rule for compiling system calls
8 #define library_sysobj_rule() @@\
10 $(CPP) -E -DPROF $*.c | $(AS) -o $*.o -Mx @@\
11 -$(LD) -X -r -o profiled/$*.o $*.o @@\
12 $(CPP) -E $*.c | $(AS) -o $*.o -Mx @@\
13 -$(LD) -x -r -o a.out $*.o @@\
18 * ... and for other objects in libraries
20 #define library_obj_rule() @@\
22 $(CPP) $(DEFINES) -E -DPROF $*.s \ @@\
23 | $(AS) $(AFLAGS) -68020 -o $*.o -Mx @@\
24 -$(LD) -X -r -o profiled/$*.o $*.o @@\
25 $(CPP) $(DEFINES) -E $*.s | $(AS) $(AFLAGS) -68020 -o $*.o -Mx @@\
26 -$(LD) -x -r -o a.out $*.o @@\
30 $(CC) -p -c $(CFLAGS) $*.c @@\
31 -$(LD) -X -r -o profiled/$*.o $*.o @@\
32 $(CC) -c $(CFLAGS) $*.c @@\
33 -$(LD) -x -r -o a.out $*.o @@\
38 * These two are used by things like csh...
40 #define cxstr_obj_target(target) @@\
44 mv -f xs.o target.o @@\
47 #define cxstr_obj_rule() @@\
49 ${CC} -E ${CFLAGS} $*.c | ${XSTR} -c - @@\
50 ${CC} -c ${CFLAGS} x.c @@\
56 * Special library rules for generating files from the UTek library
58 #define tools_library_obj_rule() @@\
60 $(CPP) $(DEFINES) -E $*.s | $(AS) $(AFLAGS) -68020 -o $*.o -Mx @@\
61 -$(LD) -x -r -o a.out $*.o @@\
65 $(CC) -c $(CFLAGS) $*.c @@\
66 -$(LD) -x -r -o a.out $*.o @@\
69 #define library_target(libname) @@\
70 all: lib/**/libname lib/**/libname/**/_p @@\
71 lib/**/libname: $(OBJS) @@\
72 ar cruf $@ $(OBJS) @@\
73 lib/**/libname/**/_p: $(OBJS) @@\
74 cd profiled; ar cruf ../$@ $(OBJS)
76 #define tools_library_target(libname) @@\
77 all: lib/**/libname @@\
78 lib/**/libname: $(OBJS) @@\
82 * Note that '/*' plays havoc with cpp. So we use the equivalent '/?*'.
84 #define multiple_library_target(libname,dirlist) @@\
85 all: lib/**/libname lib/**/libname/**/_p @@\
87 lib/**/libname: dirlist @@\
89 for i in dirlist; do \ @@\
90 (cd tmp; ar x ../$$i/lib$${i}); done @@\
91 ar crf $@ `ls tmp/?*.o` @@\
93 lib/**/libname/**/_p: dirlist @@\
95 for i in dirlist; do \ @@\
96 (cd tmp; ar x ../$$i/lib$${i}_p); done @@\
97 ar crf $@ `ls tmp/?*.o` @@\
101 cd $@; $(IMAKE) $(MFLAGS) all @@\
106 * This is a basic program target
108 #define program_target(program, objlist) @@\
109 program: objlist $(SYSOBJECTS) @@\
110 $(CC) -o $@ objlist $(LDFLAGS) @@\
115 * This target can be called by all programs that are contained in
116 * a single c source file.
118 #define simple_program_target(program,dest) @@\
119 OBJS = program.$O @@\
122 complex_program_target(program,dest)
126 * This target is like simple_program_target() except that the dependency
127 * list is long (it must be provided in the Imakefile.
129 #define complex_program_target(program,dest) @@\
130 program: $(OBJS) $(SYSOBJECTS) @@\
131 $(CC) -o $@ $(OBJS) $(LDFLAGS) @@\
134 install_program(program,dest) @@\
139 * Compile an assembler module that is kept in a .c file (like the
140 * system call library).
142 #define casm_obj_target(basename) @@\
143 basename.$O: basename.c @@\
144 ${CC} -E basename.c | ${AS} -o basename.$O
147 * Install a non-executable file.
149 #define install_non_exec(file,dest) @@\
151 install68 -c -m 0664 file $(DEST)/dest
155 * Install a shell program. Must be named 'program'.sh.
157 #define install_shell(program,dest) @@\
158 install:: program.sh @@\
159 install68 -c program.sh $(DEST)/dest/program
161 #define install_program(program,dest) @@\
162 install:: program @@\
163 install68 -c program $(DEST)/dest
165 #define install_multiple(list,dest) @@\
167 @for i in list; do \ @@\
168 (set -x; install68 -c $$i $(DEST)/dest); \ @@\
171 #define install_library(libname,dest) @@\
172 install:: lib/**/libname lib/**/libname/**/_p @@\
173 install68 -c -r -x lib/**/libname \ @@\
174 $(DEST)/dest/lib/**/libname.a @@\
175 install68 -c -r -x lib/**/libname/**/_p \ @@\
176 $(DEST)/dest/lib/**/libname/**/_p.a @@\
178 install_vax_library(libname,lib68)
180 #define install_vax_library(libname,dest) @@\
181 install:: lib/**/libname lib/**/libname/**/_p @@\
182 install68 -c -r lib/**/libname \ @@\
183 $(TOOLSDEST)/dest/lib/**/libname.a @@\
184 install68 -c -r lib/**/libname/**/_p \ @@\
185 $(TOOLSDEST)/dest/lib/**/libname/**/_p.a @@\
187 #define install_tools_library(libname,dest) @@\
188 install:: lib/**/libname @@\
189 install68 -c -r lib/**/libname \ @@\
190 $(DEST)/dest/lib/**/libname.a @@\
193 * Do an imake on multiple sub-directories.
195 #define imake_multiple() @@\
197 @-for dir in `ls -F | egrep /`; do \ @@\
198 (set -x; cd $$dir; $(IMAKE)); \ @@\
201 imake_multiple_install()
204 #define imake_multiple_install() @@\
206 @-for dir in `ls -F | egrep /`; do \ @@\
207 (set -x; cd $$dir; $(IMAKE) install); \ @@\
211 * This makes the depend target given OBJS.
213 #define DependComment '# define Dependencies for $(MACHINE)'
214 #define depend_target() @@\
216 echo DependComment > $(MACHINE).depend @@\
217 makedepend -s DependComment \ @@\
218 -f $(MACHINE).depend \ @@\
219 $(DEPEND_INCLUDES) \ @@\
220 $(DEPEND_DEFINES) \ @@\