]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/Makefile.in
Update win32 README
[bacula/bacula] / bacula / src / win32 / Makefile.in
1 #
2 # Makefile for win32 bacula executables
3 # Using MinGW cross-compiler on GNU/Linux
4 #  
5 #  Written for Bacula by Howard Thomson, April 2006
6
7
8 # Configuration
9
10 TOPDIR = @TOP_DIR@
11 CROSSTOOLS = $(TOPDIR)/cross-tools
12 MINGW = $(CROSSTOOLS)/mingw32
13
14 DEPKGS = $(TOPDIR)/depkgs-mingw32
15
16 INCLUDE_BACULA = -I .. -I ./compat -I$(DEPKGS)/include
17 INCLUDE_PTHREADS = -I$(DEPKGS)/include/pthreads
18 INCLUDE_VSS = -I$(DEPKGS)/vss
19 INCLUDE_ICONS = -I ../filed/win32
20
21 LIB_PTHREADS = -lpthreadGCE
22 LIB_ZLIB = -lz
23 LIB_SSL = -lssl
24 LIB_CRYPTO = -lcrypto
25
26 LIBWX = $(DEPKGS)/lib/wx_dll
27 LIB_WX = $(LIBWX)/libwx_base-2.6.a \
28          $(LIBWX)/libwx_base_net-2.6.a \
29          $(LIBWX)/libwx_base_xml-2.6.a \
30          $(LIBWX)/libwx_msw_core-2.6.a \
31          $(LIBWX)/libwx_msw_adv-2.6.a \
32          $(LIBWX)/libwx_msw_html-2.6.a \
33          $(LIBWX)/libwx_msw_media-2.6.a \
34          $(LIBWX)/libwx_msw_qa-2.6.a \
35          $(LIBWX)/libwx_msw_xrc-2.6.a
36
37 BIN_DIR = $(MINGW)/bin
38
39
40 INCLUDES = \
41         $(INCLUDE_GCC) \
42         $(INCLUDE_MINGW) \
43         $(INCLUDE_PTHREADS) \
44         $(INCLUDE_BACULA) \
45         $(INCLUDE_ZLIB) \
46         $(INCLUDE_VSS) \
47         $(INCLUDE_ICONS)
48
49 #       $(INCLUDE_OPENSSL)
50
51 HAVES = \
52         -DHAVE_MINGW \
53         -DHAVE_ZLIB_H \
54         -DHAVE_LIBZ \
55         -DWIN32_VSS \
56         -DHAVE_WIN32
57
58 #        -DHAVE_OPENSSL \
59 #        -DHAVE_TLS \
60         
61 DEFINES = \
62         -DWIN32 \
63         $(HAVES) \
64         -DCOMPILING_BACULA
65
66
67
68 CC = $(BIN_DIR)/mingw32-g++ $(DEFINES) $(INCLUDES)
69 CXX = $(BIN_DIR)/mingw32-g++ $(DEFINES) $(INCLUDES) 2>&1
70 WINDRES = $(BIN_DIR)/mingw32-windres
71 AR = $(BIN_DIR)/mingw32-ar
72 RANLIB = $(BIN_DIR)/mingw32-ranlib
73
74 first: all
75
76 LIBDIR = ./lib
77 OBJDIR = .
78
79
80 ##########################################################################
81
82 # Files in src/win32/filed/
83
84 OBJS_FILED = \
85         $(OBJDIR)/authenticate.o \
86         $(OBJDIR)/backup.o \
87         $(OBJDIR)/estimate.o \
88         $(OBJDIR)/filed.o \
89         $(OBJDIR)/filed_conf.o \
90         $(OBJDIR)/heartbeat.o \
91         $(OBJDIR)/job.o \
92         $(OBJDIR)/restore.o \
93         $(OBJDIR)/status.o \
94         $(OBJDIR)/verify.o \
95         $(OBJDIR)/verify_vol.o
96
97 $(OBJDIR)/authenticate.o: ../filed/authenticate.c
98         $(CXX) -c $< -o $@              
99
100 $(OBJDIR)/backup.o:       ../filed/backup.c
101         $(CXX) -c $< -o $@              
102
103 $(OBJDIR)/estimate.o:     ../filed/estimate.c
104         $(CXX) -c $< -o $@              
105
106 $(OBJDIR)/filed.o:        ../filed/filed.c
107         $(CXX) -c $< -o $@              
108
109 $(OBJDIR)/filed_conf.o:   ../filed/filed_conf.c
110         $(CXX) -c $< -o $@              
111
112 $(OBJDIR)/heartbeat.o:    ../filed/heartbeat.c
113         $(CXX) -c $< -o $@              
114
115 $(OBJDIR)/job.o:  ../filed/job.c
116         $(CXX) -c $< -o $@              
117
118 $(OBJDIR)/restore.o:      ../filed/restore.c
119         $(CXX) -c $< -o $@              
120
121 $(OBJDIR)/status.o:       ../filed/status.c
122         $(CXX) -c $< -o $@              
123
124 $(OBJDIR)/verify.o:       ../filed/verify.c
125         $(CXX) -c $< -o $@              
126
127 $(OBJDIR)/verify_vol.o:   ../filed/verify_vol.c
128         $(CXX) -c $< -o $@              
129
130 ######################################################################
131
132 # Files in src/win32/compat
133
134 OBJS_COMPAT = \
135         $(OBJDIR)/print.o \
136         $(OBJDIR)/compat.o \
137         $(OBJDIR)/getopt.o \
138         $(OBJDIR)/vss.o \
139         $(OBJDIR)/vss_xp.o \
140         $(OBJDIR)/vss_w2k3.o
141
142 $(OBJDIR)/compat.o:       ./compat/compat.cpp
143         $(CXX) -c $< -o $@              
144
145 $(OBJDIR)/getopt.o:       ./compat/getopt.c
146         $(CXX) -c $< -o $@              
147
148 $(OBJDIR)/print.o:        ./compat/print.cpp
149         $(CXX) -c $< -o $@              
150
151 $(OBJDIR)/vss.o:          ./compat/vss.cpp
152         $(CXX) -c $< -o $@              
153
154 $(OBJDIR)/vss_xp.o:       ./compat/vss_XP.cpp ./compat/vss_generic.cpp
155         $(CXX) -c $< -o $@              
156
157 $(OBJDIR)/vss_w2k3.o:     ./compat/vss_W2K3.cpp ./compat/vss_generic.cpp
158         $(CXX) -c $< -o $@              
159
160 ######################################################################
161
162 # Files in src/filed/win32
163 OBJS_WIN = \
164         $(OBJDIR)/winabout.o \
165         $(OBJDIR)/winevents.o \
166         $(OBJDIR)/winservice.o \
167         $(OBJDIR)/winstat.o \
168         $(OBJDIR)/wintray.o \
169         $(OBJDIR)/winmain.o \
170         $(OBJDIR)/winres.res
171
172 $(OBJDIR)/winabout.o:     ../filed/win32/winabout.cpp
173         $(CXX) -c $< -o $@              
174
175 $(OBJDIR)/winevents.o:    ../filed/win32/winevents.cpp
176         $(CXX) -c $< -o $@              
177
178 $(OBJDIR)/winmain.o:      ../filed/win32/winmain.cpp
179         $(CXX) -c $< -o $@              
180
181 $(OBJDIR)/winservice.o:   ../filed/win32/winservice.cpp
182         $(CXX) -c $< -o $@              
183
184 $(OBJDIR)/winstat.o:      ../filed/win32/winstat.cpp
185         $(CXX) -c $< -o $@              
186
187 $(OBJDIR)/wintray.o:      ../filed/win32/wintray.cpp
188         $(CXX) -c $< -o $@              
189
190 $(OBJDIR)/winres.res:     ../filed/win32/winres.rc
191         $(WINDRES) $(INCLUDE_ICONS) -O coff $< -o $@
192
193 ######################################################################
194
195 # Files in src/findlib
196 OBJS_FINDLIB = \
197         $(OBJDIR)/attribs.o \
198         $(OBJDIR)/bfile.o \
199         $(OBJDIR)/create_file.o \
200         $(OBJDIR)/enable_priv.o \
201         $(OBJDIR)/find.o \
202         $(OBJDIR)/find_one.o \
203         $(OBJDIR)/fstype.o \
204         $(OBJDIR)/makepath.o \
205         $(OBJDIR)/match.o \
206         $(OBJDIR)/save-cwd.o
207
208 $(OBJDIR)/attribs.o:      ../findlib/attribs.c
209         $(CXX) -c $< -o $@              
210
211 $(OBJDIR)/bfile.o:        ../findlib/bfile.c
212         $(CXX) -c $< -o $@              
213
214 $(OBJDIR)/create_file.o:  ../findlib/create_file.c
215         $(CXX) -c $< -o $@              
216
217 $(OBJDIR)/enable_priv.o:  ../findlib/enable_priv.c
218         $(CXX) -c $< -o $@              
219
220 $(OBJDIR)/find.o: ../findlib/find.c
221         $(CXX) -c $< -o $@              
222
223 $(OBJDIR)/find_one.o:     ../findlib/find_one.c
224         $(CXX) -c $< -o $@              
225
226 $(OBJDIR)/fstype.o:       ../findlib/fstype.c
227         $(CXX) -c $< -o $@              
228
229 $(OBJDIR)/makepath.o:     ../findlib/makepath.c
230         $(CXX) -c $< -o $@              
231
232 $(OBJDIR)/match.o:        ../findlib/match.c
233         $(CXX) -c $< -o $@              
234
235 $(OBJDIR)/save-cwd.o:     ../findlib/save-cwd.c
236         $(CXX) -c $< -o $@              
237
238
239 ######################################################################
240
241 # Files files in src/lib
242
243
244 LIB_OBJS = \
245         $(LIBDIR)/address_conf.o \
246         $(LIBDIR)/alist.o \
247         $(LIBDIR)/alloc.o \
248         $(LIBDIR)/attr.o \
249         $(LIBDIR)/base64.o \
250         $(LIBDIR)/berrno.o \
251         $(LIBDIR)/bget_msg.o \
252         $(LIBDIR)/bnet.o \
253         $(LIBDIR)/bnet_server.o \
254         $(LIBDIR)/bpipe.o \
255         $(LIBDIR)/bregex.o \
256         $(LIBDIR)/bsnprintf.o \
257         $(LIBDIR)/bsys.o \
258         $(LIBDIR)/btime.o \
259         $(LIBDIR)/btimers.o \
260         $(LIBDIR)/cram-md5.o \
261         $(LIBDIR)/crc32.o \
262         $(LIBDIR)/crypto.o \
263         $(LIBDIR)/daemon.o \
264         $(LIBDIR)/dlist.o \
265         $(LIBDIR)/edit.o \
266         $(LIBDIR)/fnmatch.o \
267         $(LIBDIR)/hmac.o \
268         $(LIBDIR)/htable.o \
269         $(LIBDIR)/idcache.o \
270         $(LIBDIR)/jcr.o \
271         $(LIBDIR)/lex.o \
272         $(LIBDIR)/md5.o \
273         $(LIBDIR)/mem_pool.o \
274         $(LIBDIR)/message.o \
275         $(LIBDIR)/parse_conf.o \
276         $(LIBDIR)/pythonlib.o \
277         $(LIBDIR)/queue.o \
278         $(LIBDIR)/res.o \
279         $(LIBDIR)/runscript.o \
280         $(LIBDIR)/rwlock.o \
281         $(LIBDIR)/semlock.o \
282         $(LIBDIR)/serial.o \
283         $(LIBDIR)/sha1.o \
284         $(LIBDIR)/signal.o \
285         $(LIBDIR)/smartall.o \
286         $(LIBDIR)/tls.o \
287         $(LIBDIR)/var.o \
288         $(LIBDIR)/watchdog.o \
289         $(LIBDIR)/winapi.o \
290         $(LIBDIR)/workq.o \
291         $(LIBDIR)/scan.o \
292         $(LIBDIR)/tree.o \
293         $(LIBDIR)/util.o
294
295 #
296 # Rules for generating from ../lib
297
298
299 $(LIBDIR)/address_conf.o: ../lib/address_conf.c
300         $(CXX) -c $< -o $@              
301
302 $(LIBDIR)/alist.o:        ../lib/alist.c
303         $(CXX) -c $< -o $@              
304
305 $(LIBDIR)/alloc.o:        ../lib/alloc.c
306         $(CXX) -c $< -o $@              
307
308 $(LIBDIR)/attr.o: ../lib/attr.c
309         $(CXX) -c $< -o $@              
310
311 $(LIBDIR)/base64.o:       ../lib/base64.c
312         $(CXX) -c $< -o $@              
313
314 $(LIBDIR)/berrno.o:       ../lib/berrno.c
315         $(CXX) -c $< -o $@              
316
317 $(LIBDIR)/bget_msg.o:     ../lib/bget_msg.c
318         $(CXX) -c $< -o $@              
319
320 $(LIBDIR)/bnet.o: ../lib/bnet.c
321         $(CXX) -c $< -o $@              
322
323 $(LIBDIR)/bnet_server.o:  ../lib/bnet_server.c
324         $(CXX) -c $< -o $@              
325
326 $(LIBDIR)/bpipe.o:        ../lib/bpipe.c
327         $(CXX) -c $< -o $@              
328
329 $(LIBDIR)/bregex.o:        ../lib/bregex.c
330         $(CXX) -c $< -o $@              
331
332 $(LIBDIR)/bsnprintf.o:     ../lib/bsnprintf.c
333         $(CXX) -c $< -o $@              
334
335 $(LIBDIR)/bsys.o: ../lib/bsys.c
336         $(CXX) -c $< -o $@              
337
338 $(LIBDIR)/btime.o:        ../lib/btime.c
339         $(CXX) -c $< -o $@              
340
341 $(LIBDIR)/btimers.o:      ../lib/btimers.c
342         $(CXX) -c $< -o $@              
343
344 $(LIBDIR)/cram-md5.oc:     ../lib/cram-md5.c
345         $(CXX) -c $< -o $@              
346
347 $(LIBDIR)/crc32.o:        ../lib/crc32.c
348         $(CXX) -c $< -o $@              
349
350 $(LIBDIR)/crypto.o:      ../lib/crypto.c
351         $(CXX) -c $< -o $@              
352
353 $(LIBDIR)/daemon.o:       ../lib/daemon.c
354         $(CXX) -c $< -o $@              
355
356 $(LIBDIR)/dlist.o:        ../lib/dlist.c
357         $(CXX) -c $< -o $@              
358
359 $(LIBDIR)/edit.o:       ../lib/edit.c
360         $(CXX) -c $< -o $@              
361
362 $(LIBDIR)/fnmatch.o:      ../lib/fnmatch.c
363         $(CXX) -c $< -o $@              
364
365 $(LIBDIR)/hmac.o: ../lib/hmac.c
366         $(CXX) -c $< -o $@              
367
368 $(LIBDIR)/htable.o:       ../lib/htable.c
369         $(CXX) -c $< -o $@              
370
371 $(LIBDIR)/idcache.o:      ../lib/idcache.c
372         $(CXX) -c $< -o $@              
373
374 $(LIBDIR)/jcr.o:  ../lib/jcr.c
375         $(CXX) -c $< -o $@              
376
377 $(LIBDIR)/lex.o:  ../lib/lex.c
378         $(CXX) -c $< -o $@              
379
380 $(LIBDIR)/md5.o:  ../lib/md5.c
381         $(CXX) -c $< -o $@              
382
383 $(LIBDIR)/mem_pool.o:     ../lib/mem_pool.c
384         $(CXX) -c $< -o $@              
385
386 $(LIBDIR)/message.o:      ../lib/message.c
387         $(CXX) -c $< -o $@              
388
389 $(LIBDIR)/parse_conf.o:   ../lib/parse_conf.c
390         $(CXX) -c $< -o $@              
391
392 $(LIBDIR)/pythonlib.o:    ../lib/pythonlib.c
393         $(CXX) -c $< -o $@              
394
395 $(LIBDIR)/queue.o:        ../lib/queue.c
396         $(CXX) -c $< -o $@              
397
398 $(LIBDIR)/res.o:  ../lib/res.c
399         $(CXX) -c $< -o $@              
400
401 $(LIBDIR)/runscript.o:  ../lib/runscript.c
402         $(CXX) -c $< -o $@              
403
404
405 $(LIBDIR)/rwlock.o:       ../lib/rwlock.c
406         $(CXX) -c $< -o $@              
407
408 $(LIBDIR)/scan.o: ../lib/scan.c
409         $(CXX) -c $< -o $@              
410
411 $(LIBDIR)/semlock.o:      ../lib/semlock.c
412         $(CXX) -c $< -o $@              
413
414 $(LIBDIR)/serial.o:       ../lib/serial.c
415         $(CXX) -c $< -o $@              
416
417 $(LIBDIR)/sha1.o: ../lib/sha1.c
418         $(CXX) -c $< -o $@              
419
420 $(LIBDIR)/signal.o:       ../lib/signal.c
421         $(CXX) -c $< -o $@              
422
423 $(LIBDIR)/smartall.o:     ../lib/smartall.c
424         $(CXX) -c $< -o $@              
425
426 $(LIBDIR)/tls.o:  ../lib/tls.c
427         $(CXX) -c $< -o $@              
428
429 $(LIBDIR)/tree.o: ../lib/tree.c
430         $(CXX) -c $< -o $@              
431
432 $(LIBDIR)/util.o: ../lib/util.c
433         $(CXX) -c $< -o $@              
434
435 $(LIBDIR)/var.o:  ../lib/var.c
436         $(CXX) -c $< -o $@              
437
438 $(LIBDIR)/watchdog.o:     ../lib/watchdog.c
439         $(CXX) -c $< -o $@              
440
441 $(LIBDIR)/winapi.o:       ../lib/winapi.c
442         $(CXX) -c $< -o $@              
443
444 $(LIBDIR)/workq.o:        ../lib/workq.c
445         $(CXX) -c $< -o $@              
446
447
448 ######################################################################
449
450 # Files in src/console
451 OBJS_CONSOLE = \
452         $(OBJDIR)/cons_authenticate.o \
453         $(OBJDIR)/console.o \
454         $(OBJDIR)/console_conf.o
455
456 CONS_INC = -I ../console
457
458 $(OBJDIR)/cons_authenticate.o:  ../console/authenticate.c
459         $(CXX) $(CONS_INC) -c $< -o $@              
460
461 $(OBJDIR)/console.o:  ../console/console.c
462         $(CXX) $(CONS_INC) -c $< -o $@              
463
464 $(OBJDIR)/console_conf.o:  ../console/console_conf.c
465         $(CXX) $(CONS_INC) -c $< -o $@              
466
467 ######################################################################
468
469 # Files in src/wx-console
470 OBJS_WXCONSOLE = \
471         $(OBJDIR)/wx_authenticate.o \
472         $(OBJDIR)/main.o \
473         $(OBJDIR)/console_thread.o \
474         $(OBJDIR)/console_conf.o \
475         $(OBJDIR)/wxbrestorepanel.o \
476         $(OBJDIR)/wxbmainframe.o \
477         $(OBJDIR)/wxbtableparser.o \
478         $(OBJDIR)/wxbtreectrl.o \
479         $(OBJDIR)/wxbutils.o \
480         $(OBJDIR)/wxbconfigpanel.o \
481         $(OBJDIR)/wxbconfigfileeditor.o \
482         $(OBJDIR)/wxbhistorytextctrl.o \
483         $(OBJDIR)/wx-console.res
484
485 WX_INC = -DHAVE_WXCONSOLE -D__CYGWIN__ -D__WINDOWS__ -I ../wx-console $(INCLUDE_WX)
486
487 $(OBJDIR)/wx_authenticate.o:  ../wx-console/authenticate.c
488         $(CXX) $(WX_INC) -c $< -o $@              
489
490 $(OBJDIR)/main.o:  ../wx-console/main.cpp
491         $(CXX) $(WX_INC) -c $< -o $@              
492
493 $(OBJDIR)/console_thread.o:  ../wx-console/console_thread.cpp
494         $(CXX) $(WX_INC) -c $< -o $@              
495
496 $(OBJDIR)/wx_console_conf.o:  ../wx-console/console_conf.c
497         $(CXX) $(WX_INC) -c $< -o $@              
498
499 $(OBJDIR)/wxbrestorepanel.o:  ../wx-console/wxbrestorepanel.cpp
500         $(CXX) $(WX_INC) -c $< -o $@              
501
502 $(OBJDIR)/wxbmainframe.o:  ../wx-console/wxbmainframe.cpp
503         $(CXX) $(WX_INC) -c $< -o $@              
504
505 $(OBJDIR)/wxbtableparser.o:  ../wx-console/wxbtableparser.cpp
506         $(CXX) $(WX_INC) -c $< -o $@              
507
508 $(OBJDIR)/wxbtreectrl.o:  ../wx-console/wxbtreectrl.cpp
509         $(CXX) $(WX_INC) -c $< -o $@              
510
511 $(OBJDIR)/wxbutils.o:  ../wx-console/wxbutils.cpp
512         $(CXX) $(WX_INC) -c $< -o $@              
513
514 $(OBJDIR)/wxbconfigpanel.o:  ../wx-console/wxbconfigpanel.cpp
515         $(CXX) $(WX_INC) -c $< -o $@              
516
517 $(OBJDIR)/wxbconfigfileeditor.o:  ../wx-console/wxbconfigfileeditor.cpp
518         $(CXX) $(WX_INC) -c $< -o $@              
519
520 $(OBJDIR)/wxbhistorytextctrl.o:  ../wx-console/wxbhistorytextctrl.cpp
521         $(CXX) $(WX_INC) -c $< -o $@              
522
523 $(OBJDIR)/wx-console.res:     ../wx-console/wx-console_private.rc
524         $(WINDRES) $(WX_INC) -O coff $< -o $@
525
526
527 ######################################################################
528
529
530
531 FD_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WIN) $(OBJS_FINDLIB) $(OBJS_FILED)
532
533 FD_LIBS = \
534         -L$(DEPKGS)/lib \
535         $(LIB_PTHREADS) \
536         $(LIB_SSL) \
537         $(LIB_CRYPTO) \
538         $(LIB_ZLIB) \
539         -lgdi32 \
540         -lole32 \
541         -loleaut32 \
542         -lwsock32 \
543         -luuid
544
545 CONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_CONSOLE)
546
547 CONS_LIBS = \
548         -L$(DEPKGS)/lib \
549         $(LIB_PTHREADS) \
550         $(LIB_SSL) \
551         $(LIB_CRYPTO) \
552         -lole32 \
553         -loleaut32 \
554         -lwsock32 \
555         -luuid
556
557
558 WXCONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WXCONSOLE)
559
560 WXCONS_LIBS = \
561         -L$(LIB_MINGW) \
562         $(LIB_PTHREADS) \
563         $(LIB_SSL) \
564         $(LIB_CRYPTO) \
565
566
567
568
569
570 # Targets
571
572 all: bacula-fd.exe bconsole.exe
573
574 #$(LIBDIR)/libbac.a: $(LIB_OBJS)
575 #       $(AR) ars $@ $(LIB_OBJS)
576
577 # Link the File daemon executable ...
578 bacula-fd.exe: $(FD_OBJS)
579         $(CXX) $(FD_OBJS) $(FD_LIBS) -o $(OBJDIR)/bacula-fd.exe
580         cp -f $(DEPKGS)/bin/pthreadGCE.dll .
581         cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
582
583 # Link the File daemon executable ...
584 bconsole.exe: $(CONS_OBJS)
585         $(CXX) $(CONS_OBJS) $(CONS_LIBS) -o $(OBJDIR)/bconsole.exe
586         cp -f $(DEPKGS)/bin/pthreadGCE.dll .
587         cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
588
589 # Link the File daemon executable ...
590 #  Not yet complete
591 wx-console.exe: $(WXCONS_OBJS)
592         $(CXX) $(WX_INC) $(WXCONS_OBJS) $(WXCONS_LIBS) -o $(OBJDIR)/wx-console.exe
593         cp -f $(DEPKGS)/bin/pthreadGCE.dll .
594         cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
595
596
597 clean:
598         rm -f $(OBJDIR)/*.o $(OBJDIR)/bacula-fd.exe $(OBJDIR)/winres.res
599         rm -f $(LIBDIR)/*.o *.a
600         rm -f pthreadGCE.dll $(OBJDIR)/bconsole.exe
601
602
603 # TODO ...
604 # Fix vss files: check for consistent levels of pointer indirection
605 # bpipe.c: WTERMSIG undefined