2 # Makefile for win32 bacula executables
3 # Using MinGW cross-compiler on GNU/Linux
5 # Written for Bacula by Howard Thomson, April 2006
11 CROSSTOOLS = $(TOPDIR)/cross-tools
12 MINGW = $(CROSSTOOLS)/mingw32
14 DEPKGS = $(TOPDIR)/depkgs-mingw32
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
21 LIB_PTHREADS = -lpthreadGCE
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
37 BIN_DIR = $(MINGW)/bin
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
80 ##########################################################################
82 # Files in src/win32/filed/
85 $(OBJDIR)/authenticate.o \
87 $(OBJDIR)/estimate.o \
89 $(OBJDIR)/filed_conf.o \
90 $(OBJDIR)/heartbeat.o \
95 $(OBJDIR)/verify_vol.o
97 $(OBJDIR)/authenticate.o: ../filed/authenticate.c
100 $(OBJDIR)/backup.o: ../filed/backup.c
103 $(OBJDIR)/estimate.o: ../filed/estimate.c
106 $(OBJDIR)/filed.o: ../filed/filed.c
109 $(OBJDIR)/filed_conf.o: ../filed/filed_conf.c
112 $(OBJDIR)/heartbeat.o: ../filed/heartbeat.c
115 $(OBJDIR)/job.o: ../filed/job.c
118 $(OBJDIR)/restore.o: ../filed/restore.c
121 $(OBJDIR)/status.o: ../filed/status.c
124 $(OBJDIR)/verify.o: ../filed/verify.c
127 $(OBJDIR)/verify_vol.o: ../filed/verify_vol.c
130 ######################################################################
132 # Files in src/win32/compat
142 $(OBJDIR)/compat.o: ./compat/compat.cpp
145 $(OBJDIR)/getopt.o: ./compat/getopt.c
148 $(OBJDIR)/print.o: ./compat/print.cpp
151 $(OBJDIR)/vss.o: ./compat/vss.cpp
154 $(OBJDIR)/vss_xp.o: ./compat/vss_XP.cpp ./compat/vss_generic.cpp
157 $(OBJDIR)/vss_w2k3.o: ./compat/vss_W2K3.cpp ./compat/vss_generic.cpp
160 ######################################################################
162 # Files in src/filed/win32
164 $(OBJDIR)/winabout.o \
165 $(OBJDIR)/winevents.o \
166 $(OBJDIR)/winservice.o \
167 $(OBJDIR)/winstat.o \
168 $(OBJDIR)/wintray.o \
169 $(OBJDIR)/winmain.o \
172 $(OBJDIR)/winabout.o: ../filed/win32/winabout.cpp
175 $(OBJDIR)/winevents.o: ../filed/win32/winevents.cpp
178 $(OBJDIR)/winmain.o: ../filed/win32/winmain.cpp
181 $(OBJDIR)/winservice.o: ../filed/win32/winservice.cpp
184 $(OBJDIR)/winstat.o: ../filed/win32/winstat.cpp
187 $(OBJDIR)/wintray.o: ../filed/win32/wintray.cpp
190 $(OBJDIR)/winres.res: ../filed/win32/winres.rc
191 $(WINDRES) $(INCLUDE_ICONS) -O coff $< -o $@
193 ######################################################################
195 # Files in src/findlib
197 $(OBJDIR)/attribs.o \
199 $(OBJDIR)/create_file.o \
200 $(OBJDIR)/enable_priv.o \
202 $(OBJDIR)/find_one.o \
204 $(OBJDIR)/makepath.o \
208 $(OBJDIR)/attribs.o: ../findlib/attribs.c
211 $(OBJDIR)/bfile.o: ../findlib/bfile.c
214 $(OBJDIR)/create_file.o: ../findlib/create_file.c
217 $(OBJDIR)/enable_priv.o: ../findlib/enable_priv.c
220 $(OBJDIR)/find.o: ../findlib/find.c
223 $(OBJDIR)/find_one.o: ../findlib/find_one.c
226 $(OBJDIR)/fstype.o: ../findlib/fstype.c
229 $(OBJDIR)/makepath.o: ../findlib/makepath.c
232 $(OBJDIR)/match.o: ../findlib/match.c
235 $(OBJDIR)/save-cwd.o: ../findlib/save-cwd.c
239 ######################################################################
241 # Files files in src/lib
245 $(LIBDIR)/address_conf.o \
251 $(LIBDIR)/bget_msg.o \
253 $(LIBDIR)/bnet_server.o \
256 $(LIBDIR)/bsnprintf.o \
259 $(LIBDIR)/btimers.o \
260 $(LIBDIR)/cram-md5.o \
266 $(LIBDIR)/fnmatch.o \
269 $(LIBDIR)/idcache.o \
273 $(LIBDIR)/mem_pool.o \
274 $(LIBDIR)/message.o \
275 $(LIBDIR)/parse_conf.o \
276 $(LIBDIR)/pythonlib.o \
279 $(LIBDIR)/runscript.o \
281 $(LIBDIR)/semlock.o \
285 $(LIBDIR)/smartall.o \
288 $(LIBDIR)/watchdog.o \
296 # Rules for generating from ../lib
299 $(LIBDIR)/address_conf.o: ../lib/address_conf.c
302 $(LIBDIR)/alist.o: ../lib/alist.c
305 $(LIBDIR)/alloc.o: ../lib/alloc.c
308 $(LIBDIR)/attr.o: ../lib/attr.c
311 $(LIBDIR)/base64.o: ../lib/base64.c
314 $(LIBDIR)/berrno.o: ../lib/berrno.c
317 $(LIBDIR)/bget_msg.o: ../lib/bget_msg.c
320 $(LIBDIR)/bnet.o: ../lib/bnet.c
323 $(LIBDIR)/bnet_server.o: ../lib/bnet_server.c
326 $(LIBDIR)/bpipe.o: ../lib/bpipe.c
329 $(LIBDIR)/bregex.o: ../lib/bregex.c
332 $(LIBDIR)/bsnprintf.o: ../lib/bsnprintf.c
335 $(LIBDIR)/bsys.o: ../lib/bsys.c
338 $(LIBDIR)/btime.o: ../lib/btime.c
341 $(LIBDIR)/btimers.o: ../lib/btimers.c
344 $(LIBDIR)/cram-md5.oc: ../lib/cram-md5.c
347 $(LIBDIR)/crc32.o: ../lib/crc32.c
350 $(LIBDIR)/crypto.o: ../lib/crypto.c
353 $(LIBDIR)/daemon.o: ../lib/daemon.c
356 $(LIBDIR)/dlist.o: ../lib/dlist.c
359 $(LIBDIR)/edit.o: ../lib/edit.c
362 $(LIBDIR)/fnmatch.o: ../lib/fnmatch.c
365 $(LIBDIR)/hmac.o: ../lib/hmac.c
368 $(LIBDIR)/htable.o: ../lib/htable.c
371 $(LIBDIR)/idcache.o: ../lib/idcache.c
374 $(LIBDIR)/jcr.o: ../lib/jcr.c
377 $(LIBDIR)/lex.o: ../lib/lex.c
380 $(LIBDIR)/md5.o: ../lib/md5.c
383 $(LIBDIR)/mem_pool.o: ../lib/mem_pool.c
386 $(LIBDIR)/message.o: ../lib/message.c
389 $(LIBDIR)/parse_conf.o: ../lib/parse_conf.c
392 $(LIBDIR)/pythonlib.o: ../lib/pythonlib.c
395 $(LIBDIR)/queue.o: ../lib/queue.c
398 $(LIBDIR)/res.o: ../lib/res.c
401 $(LIBDIR)/runscript.o: ../lib/runscript.c
405 $(LIBDIR)/rwlock.o: ../lib/rwlock.c
408 $(LIBDIR)/scan.o: ../lib/scan.c
411 $(LIBDIR)/semlock.o: ../lib/semlock.c
414 $(LIBDIR)/serial.o: ../lib/serial.c
417 $(LIBDIR)/sha1.o: ../lib/sha1.c
420 $(LIBDIR)/signal.o: ../lib/signal.c
423 $(LIBDIR)/smartall.o: ../lib/smartall.c
426 $(LIBDIR)/tls.o: ../lib/tls.c
429 $(LIBDIR)/tree.o: ../lib/tree.c
432 $(LIBDIR)/util.o: ../lib/util.c
435 $(LIBDIR)/var.o: ../lib/var.c
438 $(LIBDIR)/watchdog.o: ../lib/watchdog.c
441 $(LIBDIR)/winapi.o: ../lib/winapi.c
444 $(LIBDIR)/workq.o: ../lib/workq.c
448 ######################################################################
450 # Files in src/console
452 $(OBJDIR)/cons_authenticate.o \
453 $(OBJDIR)/console.o \
454 $(OBJDIR)/console_conf.o
456 CONS_INC = -I ../console
458 $(OBJDIR)/cons_authenticate.o: ../console/authenticate.c
459 $(CXX) $(CONS_INC) -c $< -o $@
461 $(OBJDIR)/console.o: ../console/console.c
462 $(CXX) $(CONS_INC) -c $< -o $@
464 $(OBJDIR)/console_conf.o: ../console/console_conf.c
465 $(CXX) $(CONS_INC) -c $< -o $@
467 ######################################################################
469 # Files in src/wx-console
471 $(OBJDIR)/wx_authenticate.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
485 WX_INC = -DHAVE_WXCONSOLE -D__CYGWIN__ -D__WINDOWS__ -I ../wx-console $(INCLUDE_WX)
487 $(OBJDIR)/wx_authenticate.o: ../wx-console/authenticate.c
488 $(CXX) $(WX_INC) -c $< -o $@
490 $(OBJDIR)/main.o: ../wx-console/main.cpp
491 $(CXX) $(WX_INC) -c $< -o $@
493 $(OBJDIR)/console_thread.o: ../wx-console/console_thread.cpp
494 $(CXX) $(WX_INC) -c $< -o $@
496 $(OBJDIR)/wx_console_conf.o: ../wx-console/console_conf.c
497 $(CXX) $(WX_INC) -c $< -o $@
499 $(OBJDIR)/wxbrestorepanel.o: ../wx-console/wxbrestorepanel.cpp
500 $(CXX) $(WX_INC) -c $< -o $@
502 $(OBJDIR)/wxbmainframe.o: ../wx-console/wxbmainframe.cpp
503 $(CXX) $(WX_INC) -c $< -o $@
505 $(OBJDIR)/wxbtableparser.o: ../wx-console/wxbtableparser.cpp
506 $(CXX) $(WX_INC) -c $< -o $@
508 $(OBJDIR)/wxbtreectrl.o: ../wx-console/wxbtreectrl.cpp
509 $(CXX) $(WX_INC) -c $< -o $@
511 $(OBJDIR)/wxbutils.o: ../wx-console/wxbutils.cpp
512 $(CXX) $(WX_INC) -c $< -o $@
514 $(OBJDIR)/wxbconfigpanel.o: ../wx-console/wxbconfigpanel.cpp
515 $(CXX) $(WX_INC) -c $< -o $@
517 $(OBJDIR)/wxbconfigfileeditor.o: ../wx-console/wxbconfigfileeditor.cpp
518 $(CXX) $(WX_INC) -c $< -o $@
520 $(OBJDIR)/wxbhistorytextctrl.o: ../wx-console/wxbhistorytextctrl.cpp
521 $(CXX) $(WX_INC) -c $< -o $@
523 $(OBJDIR)/wx-console.res: ../wx-console/wx-console_private.rc
524 $(WINDRES) $(WX_INC) -O coff $< -o $@
527 ######################################################################
531 FD_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WIN) $(OBJS_FINDLIB) $(OBJS_FILED)
545 CONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_CONSOLE)
558 WXCONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WXCONSOLE)
572 all: bacula-fd.exe bconsole.exe
574 #$(LIBDIR)/libbac.a: $(LIB_OBJS)
575 # $(AR) ars $@ $(LIB_OBJS)
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 .
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 .
589 # Link the File daemon executable ...
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 .
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
604 # Fix vss files: check for consistent levels of pointer indirection
605 # bpipe.c: WTERMSIG undefined