Commit | Line | Data |
---|---|---|
d60d9f65 SS |
1 | ## -*- text -*- ## |
2 | # Master Makefile for the GNU readline library. | |
3 | # Copyright (C) 1994, 1998 Free Software Foundation, Inc. | |
4 | ||
5 | # This program is free software; you can redistribute it and/or modify | |
6 | # it under the terms of the GNU General Public License as published by | |
7 | # the Free Software Foundation; either version 2, or (at your option) | |
8 | # any later version. | |
9 | ||
10 | # This program is distributed in the hope that it will be useful, | |
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | # GNU General Public License for more details. | |
14 | ||
15 | # You should have received a copy of the GNU General Public License | |
16 | # along with this program; if not, write to the Free Software | |
17 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
18 | RL_LIBRARY_VERSION = @LIBVERSION@ | |
19 | RL_LIBRARY_NAME = readline | |
20 | ||
21 | srcdir = @srcdir@ | |
771578d1 | 22 | VPATH = @srcdir@ |
d60d9f65 SS |
23 | top_srcdir = @top_srcdir@ |
24 | BUILD_DIR = @BUILD_DIR@ | |
25 | ||
26 | INSTALL = @INSTALL@ | |
27 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ | |
28 | INSTALL_DATA = @INSTALL_DATA@ | |
29 | ||
30 | CC = @CC@ | |
d60d9f65 | 31 | RANLIB = @RANLIB@ |
c862e87b JM |
32 | AR = @AR@ |
33 | ARFLAGS = @ARFLAGS@ | |
d60d9f65 SS |
34 | RM = rm -f |
35 | CP = cp | |
36 | MV = mv | |
37 | ||
c862e87b JM |
38 | SHELL = @MAKE_SHELL@ |
39 | ||
d60d9f65 SS |
40 | prefix = @prefix@ |
41 | exec_prefix = @exec_prefix@ | |
42 | ||
43 | bindir = @bindir@ | |
44 | libdir = @libdir@ | |
45 | mandir = @mandir@ | |
46 | includedir = @includedir@ | |
47 | ||
48 | infodir = @infodir@ | |
49 | ||
50 | man3dir = $(mandir)/man3 | |
51 | ||
d60d9f65 SS |
52 | # Programs to make tags files. |
53 | ETAGS = etags -tw | |
54 | CTAGS = ctags -tw | |
55 | ||
56 | CFLAGS = @CFLAGS@ | |
57 | LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' | |
58 | CPPFLAGS = @CPPFLAGS@ | |
d60d9f65 SS |
59 | |
60 | DEFS = @DEFS@ | |
61 | LOCAL_DEFS = @LOCAL_DEFS@ | |
62 | ||
63 | # For libraries which include headers from other libraries. | |
64 | INCLUDES = -I. -I$(srcdir) -I$(includedir) | |
65 | ||
66 | CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) $(INCLUDES) $(LOCAL_CFLAGS) $(CFLAGS) | |
67 | ||
d60d9f65 | 68 | .c.o: |
c862e87b | 69 | ${RM} $@ |
d60d9f65 SS |
70 | $(CC) -c $(CCFLAGS) $< |
71 | ||
d60d9f65 SS |
72 | # The name of the main library target. |
73 | LIBRARY_NAME = libreadline.a | |
74 | STATIC_LIBS = libreadline.a libhistory.a | |
75 | ||
d60d9f65 SS |
76 | # The C code source files for this library. |
77 | CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \ | |
78 | $(srcdir)/vi_mode.c $(srcdir)/parens.c $(srcdir)/rltty.c \ | |
79 | $(srcdir)/complete.c $(srcdir)/bind.c $(srcdir)/isearch.c \ | |
80 | $(srcdir)/display.c $(srcdir)/signals.c $(srcdir)/emacs_keymap.c \ | |
81 | $(srcdir)/vi_keymap.c $(srcdir)/util.c $(srcdir)/kill.c \ | |
82 | $(srcdir)/undo.c $(srcdir)/macro.c $(srcdir)/input.c \ | |
83 | $(srcdir)/callback.c $(srcdir)/terminal.c $(srcdir)/xmalloc.c \ | |
84 | $(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \ | |
85 | $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \ | |
c862e87b | 86 | $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c |
d60d9f65 SS |
87 | |
88 | # The header files for this library. | |
89 | HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ | |
90 | posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \ | |
c862e87b | 91 | ansi_stdlib.h tcap.h rlstdc.h |
d60d9f65 | 92 | |
c862e87b | 93 | HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o |
d60d9f65 SS |
94 | TILDEOBJ = tilde.o |
95 | OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \ | |
96 | rltty.o complete.o bind.o isearch.o display.o signals.o \ | |
97 | util.o kill.o undo.o macro.o input.o callback.o terminal.o \ | |
98 | nls.o xmalloc.o $(HISTOBJ) $(TILDEOBJ) | |
99 | ||
d60d9f65 SS |
100 | # The texinfo files which document this library. |
101 | DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo | |
102 | DOCOBJECT = doc/readline.dvi | |
103 | DOCSUPPORT = doc/Makefile | |
104 | DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT) | |
105 | ||
c862e87b | 106 | CREATED_MAKEFILES = Makefile doc/Makefile examples/Makefile shlib/Makefile |
d60d9f65 SS |
107 | CREATED_CONFIGURE = config.status config.h config.cache config.log \ |
108 | stamp-config stamp-h | |
109 | CREATED_TAGS = TAGS tags | |
110 | ||
c862e87b JM |
111 | INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \ |
112 | rlstdc.h rlconf.h | |
d60d9f65 SS |
113 | |
114 | ########################################################################## | |
115 | ||
116 | all: static | |
117 | ||
118 | static: $(STATIC_LIBS) | |
d60d9f65 SS |
119 | |
120 | libreadline.a: $(OBJECTS) | |
121 | $(RM) $@ | |
c862e87b | 122 | $(AR) $(ARFLAGS) $@ $(OBJECTS) |
d60d9f65 SS |
123 | -test -n "$(RANLIB)" && $(RANLIB) $@ |
124 | ||
125 | libhistory.a: $(HISTOBJ) xmalloc.o | |
126 | $(RM) $@ | |
c862e87b | 127 | $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o |
d60d9f65 SS |
128 | -test -n "$(RANLIB)" && $(RANLIB) $@ |
129 | ||
d60d9f65 SS |
130 | readline: $(OBJECTS) readline.h rldefs.h chardefs.h |
131 | $(CC) $(CCFLAGS) -o $@ ./examples/rl.c ./libreadline.a -ltermcap | |
132 | ||
133 | Makefile makefile: config.status $(srcdir)/Makefile.in | |
134 | CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status | |
135 | ||
136 | Makefiles makefiles: config.status $(srcdir)/Makefile.in | |
137 | @for mf in $(CREATED_MAKEFILES); do \ | |
138 | CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \ | |
139 | done | |
140 | ||
141 | config.status: configure | |
142 | $(SHELL) ./config.status --recheck | |
143 | ||
144 | config.h: stamp-h | |
145 | ||
146 | stamp-h: config.status $(srcdir)/config.h.in | |
147 | CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status | |
148 | echo > $@ | |
149 | ||
150 | # CYGNUS LOCAL: Never run autoconf. | |
151 | #$(srcdir)/configure: $(srcdir)/configure.in Comment-me-out in distribution | |
152 | # cd $(srcdir) && autoconf Comment-me-out in distribution | |
153 | ||
c862e87b JM |
154 | shared: force |
155 | -test -d shlib || mkdir shlib | |
156 | -( cd shlib ; ${MAKE} ${MFLAGS} all ) | |
157 | ||
d60d9f65 SS |
158 | documentation: force |
159 | -test -d doc || mkdir doc | |
160 | -( cd doc && $(MAKE) $(MFLAGS) ) | |
161 | ||
162 | examples: force | |
163 | -test -d examples || mkdir examples | |
164 | -(cd examples && ${MAKE} ${MFLAGS} all ) | |
165 | ||
166 | force: | |
167 | ||
771578d1 SS |
168 | ## CYGNUS LOCAL |
169 | ## Don't mess with people's installed readline's. | |
170 | ## This tries to install this version of readline over whatever | |
171 | ## version is already installed on the system (which could be a | |
172 | ## newer version). There is no real reason for us to install | |
173 | ## readline along with GDB. GDB links statically against readline, | |
174 | ## so it doesn't depend on us installing it on the system. | |
175 | ||
176 | install: | |
177 | ||
178 | #install: installdirs $(STATIC_LIBS) | |
179 | # for f in ${INSTALLED_HEADERS}; do \ | |
180 | # $(INSTALL_DATA) $(srcdir)/$$f $(includedir)/readline ; \ | |
181 | # done | |
182 | # -( if test -f $(libdir)/libreadline.a ; then $(MV) $(libdir)/libreadline.a $(libdir)/libreadline.old; fi ) | |
183 | # $(INSTALL_DATA) libreadline.a $(libdir)/libreadline.a | |
184 | # -test -n "$(RANLIB)" && $(RANLIB) -t $(libdir)/libreadline.a | |
185 | # -( if test -f $(libdir)/libhistory.a; then $(MV) $(libdir)/libhistory.a $(libdir)/libhistory.old; fi ) | |
186 | # $(INSTALL_DATA) libhistory.a $(libdir)/libhistory.a | |
187 | # -test -n "$(RANLIB)" && $(RANLIB) -t $(libdir)/libhistory.a | |
188 | # -( if test -d doc ; then \ | |
189 | # cd doc && \ | |
190 | # ${MAKE} ${MFLAGS} infodir=$(infodir) $@; \ | |
191 | # fi ) | |
d60d9f65 SS |
192 | |
193 | installdirs: $(srcdir)/support/mkdirs | |
194 | -$(SHELL) $(srcdir)/support/mkdirs $(includedir) \ | |
195 | $(includedir)/readline $(libdir) $(infodir) $(man3dir) | |
196 | ||
197 | uninstall: | |
198 | -test -n "$(includedir)" && cd $(includedir)/readline && \ | |
199 | ${RM} ${INSTALLED_HEADERS} | |
200 | -test -n "$(libdir)" && cd $(libdir) && \ | |
201 | ${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS) | |
202 | ||
203 | install-shared: installdirs shared | |
c862e87b | 204 | -( cd shlib ; ${MAKE} ${MFLAGS} install ) |
d60d9f65 SS |
205 | |
206 | uninstall-shared: | |
c862e87b | 207 | -( cd shlib; ${MAKE} ${MFLAGS} uninstall ) |
d60d9f65 SS |
208 | |
209 | TAGS: force | |
210 | $(ETAGS) $(CSOURCES) $(HSOURCES) | |
211 | ||
212 | tags: force | |
213 | $(CTAGS) $(CSOURCES) $(HSOURCES) | |
214 | ||
215 | clean: force | |
216 | $(RM) $(OBJECTS) $(STATIC_LIBS) | |
c862e87b | 217 | -( cd shlib && $(MAKE) $(MFLAGS) $@ ) |
d60d9f65 SS |
218 | -( cd doc && $(MAKE) $(MFLAGS) $@ ) |
219 | -( cd examples && $(MAKE) $(MFLAGS) $@ ) | |
220 | ||
221 | mostlyclean: clean | |
c862e87b | 222 | -( cd shlib && $(MAKE) $(MFLAGS) $@ ) |
d60d9f65 SS |
223 | -( cd doc && $(MAKE) $(MFLAGS) $@ ) |
224 | -( cd examples && $(MAKE) $(MFLAGS) $@ ) | |
225 | ||
226 | distclean maintainer-clean: clean | |
c862e87b | 227 | -( cd shlib && $(MAKE) $(MFLAGS) $@ ) |
d60d9f65 SS |
228 | -( cd doc && $(MAKE) $(MFLAGS) $@ ) |
229 | -( cd examples && $(MAKE) $(MFLAGS) $@ ) | |
230 | $(RM) Makefile | |
231 | $(RM) $(CREATED_CONFIGURE) | |
232 | $(RM) $(CREATED_TAGS) | |
233 | ||
234 | info dvi: | |
235 | -( cd doc && $(MAKE) $(MFLAGS) $@ ) | |
236 | ||
237 | install-info: | |
238 | check: | |
239 | installcheck: | |
240 | ||
241 | dist: force | |
242 | @echo Readline distributions are created using $(srcdir)/support/mkdist. | |
243 | @echo Here is a sample of the necessary commands: | |
244 | @echo bash $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r $(RL_LIBRARY_NAME)-$(RL_LIBRARY_VERSION) | |
245 | @echo tar cf $(RL_LIBRARY_NAME)-${RL_LIBRARY_VERSION}.tar ${RL_LIBRARY_NAME}-$(RL_LIBRARY_VERSION) | |
246 | @echo gzip $(RL_LIBRARY_NAME)-$(RL_LIBRARY_VERSION).tar | |
247 | ||
248 | # Tell versions [3.59,3.63) of GNU make not to export all variables. | |
249 | # Otherwise a system limit (for SysV at least) may be exceeded. | |
250 | .NOEXPORT: | |
251 | ||
252 | # Dependencies | |
253 | bind.o: ansi_stdlib.h posixstat.h | |
254 | bind.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
c862e87b | 255 | bind.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
256 | bind.o: history.h |
257 | callback.o: rlconf.h | |
258 | callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
c862e87b | 259 | callback.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
260 | complete.o: ansi_stdlib.h posixdir.h posixstat.h |
261 | complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
c862e87b | 262 | complete.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
263 | display.o: ansi_stdlib.h posixstat.h |
264 | display.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
265 | display.o: tcap.h | |
266 | display.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 267 | display.o: history.h rlstdc.h |
d60d9f65 | 268 | funmap.o: readline.h keymaps.h chardefs.h tilde.h |
c862e87b | 269 | funmap.o: rlconf.h ansi_stdlib.h rlstdc.h |
d60d9f65 SS |
270 | funmap.o: ${BUILD_DIR}/config.h |
271 | histexpand.o: ansi_stdlib.h | |
c862e87b | 272 | histexpand.o: history.h histlib.h rlstdc.h |
d60d9f65 SS |
273 | histexpand.o: ${BUILD_DIR}/config.h |
274 | histfile.o: ansi_stdlib.h | |
c862e87b | 275 | histfile.o: history.h histlib.h rlstdc.h |
d60d9f65 SS |
276 | histfile.o: ${BUILD_DIR}/config.h |
277 | history.o: ansi_stdlib.h | |
c862e87b | 278 | history.o: history.h histlib.h rlstdc.h |
d60d9f65 SS |
279 | history.o: ${BUILD_DIR}/config.h |
280 | histsearch.o: ansi_stdlib.h | |
c862e87b | 281 | histsearch.o: history.h histlib.h rlstdc.h |
d60d9f65 SS |
282 | histsearch.o: ${BUILD_DIR}/config.h |
283 | input.o: ansi_stdlib.h | |
284 | input.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
c862e87b | 285 | input.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
286 | isearch.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h |
287 | isearch.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 288 | isearch.o: ansi_stdlib.h history.h rlstdc.h |
d60d9f65 SS |
289 | keymaps.o: emacs_keymap.c vi_keymap.c |
290 | keymaps.o: keymaps.h chardefs.h rlconf.h ansi_stdlib.h | |
291 | keymaps.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 292 | keymaps.o: ${BUILD_DIR}/config.h rlstdc.h |
d60d9f65 SS |
293 | kill.o: ansi_stdlib.h |
294 | kill.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
295 | kill.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 296 | kill.o: history.h rlstdc.h |
d60d9f65 SS |
297 | macro.o: ansi_stdlib.h |
298 | macro.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
299 | macro.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 300 | macro.o: history.h rlstdc.h |
d60d9f65 SS |
301 | nls.o: ansi_stdlib.h |
302 | nls.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
303 | parens.o: rlconf.h | |
304 | parens.o: ${BUILD_DIR}/config.h | |
c862e87b | 305 | parens.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
306 | readline.o: readline.h keymaps.h chardefs.h tilde.h |
307 | readline.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
c862e87b | 308 | readline.o: history.h rlstdc.h |
d60d9f65 SS |
309 | readline.o: posixstat.h ansi_stdlib.h posixjmp.h |
310 | rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
311 | rltty.o: rltty.h | |
c862e87b | 312 | rltty.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
313 | search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h |
314 | search.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 315 | search.o: ansi_stdlib.h history.h rlstdc.h |
d60d9f65 SS |
316 | shell.o: ${BUILD_DIR}/config.h |
317 | shell.o: ansi_stdlib.h | |
318 | signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
319 | signals.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 320 | signals.o: history.h rlstdc.h |
d60d9f65 SS |
321 | terminal.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h |
322 | terminal.o: tcap.h | |
323 | terminal.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 324 | terminal.o: history.h rlstdc.h |
d60d9f65 SS |
325 | tilde.o: ansi_stdlib.h |
326 | tilde.o: ${BUILD_DIR}/config.h | |
327 | tilde.o: tilde.h | |
328 | undo.o: ansi_stdlib.h | |
329 | undo.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
330 | undo.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 331 | undo.o: history.h rlstdc.h |
d60d9f65 SS |
332 | util.o: posixjmp.h ansi_stdlib.h |
333 | util.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h | |
c862e87b | 334 | util.o: readline.h keymaps.h chardefs.h tilde.h rlstdc.h |
d60d9f65 SS |
335 | vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h |
336 | vi_mode.o: readline.h keymaps.h chardefs.h tilde.h | |
c862e87b | 337 | vi_mode.o: history.h ansi_stdlib.h rlstdc.h |
d60d9f65 SS |
338 | xmalloc.o: ${BUILD_DIR}/config.h |
339 | xmalloc.o: ansi_stdlib.h | |
340 | ||
341 | readline.o: $(srcdir)/readline.c | |
342 | vi_mode.o: $(srcdir)/vi_mode.c | |
343 | funmap.o: $(srcdir)/funmap.c | |
344 | keymaps.o: $(srcdir)/keymaps.c | |
345 | parens.o: $(srcdir)/parens.c | |
346 | search.o: $(srcdir)/search.c | |
347 | rltty.o: $(srcdir)/rltty.c | |
348 | complete.o: $(srcdir)/complete.c | |
349 | bind.o: $(srcdir)/bind.c | |
350 | isearch.o: $(srcdir)/isearch.c | |
351 | display.o: $(srcdir)/display.c | |
352 | signals.o: $(srcdir)/signals.c | |
353 | util.o: $(srcdir)/util.c | |
354 | kill.o: $(srcdir)/kill.c | |
355 | undo.o: $(srcdir)/undo.c | |
356 | macro.o: $(srcdir)/macro.c | |
357 | input.o: $(srcdir)/input.c | |
358 | callback.o: $(srcdir)/callback.c | |
359 | terminal.o: $(srcdir)/terminal.c | |
360 | nls.o: $(srcdir)/nls.c | |
361 | xmalloc.o: $(srcdir)/xmalloc.c | |
362 | history.o: $(srcdir)/history.c | |
363 | histexpand.o: $(srcdir)/histexpand.c | |
364 | histfile.o: $(srcdir)/histfile.c | |
365 | histsearch.o: $(srcdir)/histsearch.c | |
c862e87b | 366 | savestring.o: $(srcdir)/savestring.c |
d60d9f65 SS |
367 | shell.o: $(srcdir)/shell.c |
368 | tilde.o: $(srcdir)/tilde.c | |
369 | ||
d60d9f65 SS |
370 | readline.o: readline.c |
371 | vi_mode.o: vi_mode.c | |
372 | funmap.o: funmap.c | |
373 | keymaps.o: keymaps.c | |
374 | parens.o: parens.c | |
375 | search.o: search.c | |
376 | rltty.o: rltty.c | |
377 | complete.o: complete.c | |
378 | bind.o: bind.c | |
379 | isearch.o: isearch.c | |
380 | display.o: display.c | |
381 | signals.o: signals.c | |
382 | util.o: util.c | |
383 | kill.o: kill.c | |
384 | undo.o: undo.c | |
385 | macro.o: macro.c | |
386 | input.o: input.c | |
387 | callback.o: callback.c | |
388 | terminal.o: terminal.c | |
389 | nls.o: nls.c | |
390 | xmalloc.o: xmalloc.c | |
391 | history.o: history.c | |
392 | histexpand.o: histexpand.c | |
393 | histfile.o: histfile.c | |
394 | histsearch.o: histsearch.c | |
c862e87b | 395 | savestring.o: savestring.c |
d60d9f65 SS |
396 | shell.o: shell.c |
397 | tilde.o: tilde.c |