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
13 INCLUDE_MINGW = -I $(MINGW)/mingw32/include
14 INCLUDE_GCC = -I $(MINGW)/lib/gcc/mingw32/3.4.5/include
16 DEPKGS = $(TOPDIR)/depkgs-win32
18 INCLUDE_BACULA = -I .. -I ./compat
19 INCLUDE_PTHREADS = -I$(DEPKGS)/pthreads
20 INCLUDE_ZLIB = -I$(DEPKGS)/zlib
21 INCLUDE_VSS = -I$(CROSSTOOLS)
22 INCLUDE_ICONS = -I ../filed/win32
23 INCLUDE_OPENSSL = -I$(DEPKGS)/openssl/include
24 INCLUDE_WX = -I$(DEPKGS)/wx/include
26 LIB_MINGW = $(MINGW)/mingw32/lib
27 LIB_PTHREADS = $(DEPKGS)/pthreads/pthreadGCE.dll
28 LIB_ZLIB = $(DEPKGS)/zlib/libz.a
29 LIB_SSL = $(DEPKGS)/openssl/libssl.a
30 LIB_CRYPTO = $(DEPKGS)/openssl/libcrypto.a
32 LIBWX = $(DEPKGS)/wx/build-mingw32/lib
33 LIB_WX = $(LIBWX)/libwx_base-2.6.a \
34 $(LIBWX)/libwx_base_net-2.6.a \
35 $(LIBWX)/libwx_base_xml-2.6.a \
36 $(LIBWX)/libwx_msw_core-2.6.a \
37 $(LIBWX)/libwx_msw_adv-2.6.a \
38 $(LIBWX)/libwx_msw_html-2.6.a \
39 $(LIBWX)/libwx_msw_media-2.6.a \
40 $(LIBWX)/libwx_msw_qa-2.6.a \
41 $(LIBWX)/libwx_msw_xrc-2.6.a
43 BIN_DIR = $(MINGW)/bin
74 CC = $(BIN_DIR)/mingw32-g++ $(DEFINES) $(INCLUDES)
75 CXX = $(BIN_DIR)/mingw32-g++ $(DEFINES) $(INCLUDES) 2>&1
76 WINDRES = $(BIN_DIR)/mingw32-windres
77 AR = $(BIN_DIR)/mingw32-ar
78 RANLIB = $(BIN_DIR)/mingw32-ranlib
86 ##########################################################################
88 # Files in src/win32/filed/
91 $(OBJDIR)/authenticate.o \
93 $(OBJDIR)/estimate.o \
95 $(OBJDIR)/filed_conf.o \
96 $(OBJDIR)/heartbeat.o \
101 $(OBJDIR)/verify_vol.o
103 $(OBJDIR)/authenticate.o: ../filed/authenticate.c
106 $(OBJDIR)/backup.o: ../filed/backup.c
109 $(OBJDIR)/estimate.o: ../filed/estimate.c
112 $(OBJDIR)/filed.o: ../filed/filed.c
115 $(OBJDIR)/filed_conf.o: ../filed/filed_conf.c
118 $(OBJDIR)/heartbeat.o: ../filed/heartbeat.c
121 $(OBJDIR)/job.o: ../filed/job.c
124 $(OBJDIR)/restore.o: ../filed/restore.c
127 $(OBJDIR)/status.o: ../filed/status.c
130 $(OBJDIR)/verify.o: ../filed/verify.c
133 $(OBJDIR)/verify_vol.o: ../filed/verify_vol.c
136 ######################################################################
138 # Files in src/win32/compat
148 $(OBJDIR)/compat.o: ./compat/compat.cpp
151 $(OBJDIR)/getopt.o: ./compat/getopt.c
154 $(OBJDIR)/print.o: ./compat/print.cpp
157 $(OBJDIR)/vss.o: ./compat/vss.cpp
160 $(OBJDIR)/vss_xp.o: ./compat/vss_XP.cpp ./compat/vss_generic.cpp
163 $(OBJDIR)/vss_w2k3.o: ./compat/vss_W2K3.cpp ./compat/vss_generic.cpp
166 ######################################################################
168 # Files in src/filed/win32
170 $(OBJDIR)/winabout.o \
171 $(OBJDIR)/winevents.o \
172 $(OBJDIR)/winservice.o \
173 $(OBJDIR)/winstat.o \
174 $(OBJDIR)/wintray.o \
175 $(OBJDIR)/winmain.o \
178 $(OBJDIR)/winabout.o: ../filed/win32/winabout.cpp
181 $(OBJDIR)/winevents.o: ../filed/win32/winevents.cpp
184 $(OBJDIR)/winmain.o: ../filed/win32/winmain.cpp
187 $(OBJDIR)/winservice.o: ../filed/win32/winservice.cpp
190 $(OBJDIR)/winstat.o: ../filed/win32/winstat.cpp
193 $(OBJDIR)/wintray.o: ../filed/win32/wintray.cpp
196 $(OBJDIR)/winres.res: ../filed/win32/winres.rc
197 $(WINDRES) $(INCLUDE_ICONS) -O coff $< -o $@
199 ######################################################################
201 # Files in src/findlib
203 $(OBJDIR)/attribs.o \
205 $(OBJDIR)/create_file.o \
206 $(OBJDIR)/enable_priv.o \
208 $(OBJDIR)/find_one.o \
210 $(OBJDIR)/makepath.o \
214 $(OBJDIR)/attribs.o: ../findlib/attribs.c
217 $(OBJDIR)/bfile.o: ../findlib/bfile.c
220 $(OBJDIR)/create_file.o: ../findlib/create_file.c
223 $(OBJDIR)/enable_priv.o: ../findlib/enable_priv.c
226 $(OBJDIR)/find.o: ../findlib/find.c
229 $(OBJDIR)/find_one.o: ../findlib/find_one.c
232 $(OBJDIR)/fstype.o: ../findlib/fstype.c
235 $(OBJDIR)/makepath.o: ../findlib/makepath.c
238 $(OBJDIR)/match.o: ../findlib/match.c
241 $(OBJDIR)/save-cwd.o: ../findlib/save-cwd.c
245 ######################################################################
247 # Files files in src/lib
251 $(LIBDIR)/address_conf.o \
257 $(LIBDIR)/bget_msg.o \
259 $(LIBDIR)/bnet_server.o \
264 $(LIBDIR)/btimers.o \
265 $(LIBDIR)/cram-md5.o \
271 $(LIBDIR)/fnmatch.o \
274 $(LIBDIR)/idcache.o \
278 $(LIBDIR)/mem_pool.o \
279 $(LIBDIR)/message.o \
280 $(LIBDIR)/parse_conf.o \
281 $(LIBDIR)/pythonlib.o \
285 $(LIBDIR)/semlock.o \
289 $(LIBDIR)/smartall.o \
292 $(LIBDIR)/watchdog.o \
300 # Rules for generating from ../lib
303 $(LIBDIR)/address_conf.o: ../lib/address_conf.c
306 $(LIBDIR)/alist.o: ../lib/alist.c
309 $(LIBDIR)/alloc.o: ../lib/alloc.c
312 $(LIBDIR)/attr.o: ../lib/attr.c
315 $(LIBDIR)/base64.o: ../lib/base64.c
318 $(LIBDIR)/berrno.o: ../lib/berrno.c
321 $(LIBDIR)/bget_msg.o: ../lib/bget_msg.c
324 $(LIBDIR)/bnet.o: ../lib/bnet.c
327 $(LIBDIR)/bnet_server.o: ../lib/bnet_server.c
330 $(LIBDIR)/bpipe.o: ../lib/bpipe.c
333 $(LIBDIR)/bregex.o: ../lib/bregex.c
336 $(LIBDIR)/bsys.o: ../lib/bsys.c
339 $(LIBDIR)/btime.o: ../lib/btime.c
342 $(LIBDIR)/btimers.o: ../lib/btimers.c
345 $(LIBDIR)/cram-md5.oc: ../lib/cram-md5.c
348 $(LIBDIR)/crc32.o: ../lib/crc32.c
351 $(LIBDIR)/crypto.o: ../lib/crypto.c
354 $(LIBDIR)/daemon.o: ../lib/daemon.c
357 $(LIBDIR)/dlist.o: ../lib/dlist.c
360 $(LIBDIR)/edit.o: ../lib/edit.c
363 $(LIBDIR)/fnmatch.o: ../lib/fnmatch.c
366 $(LIBDIR)/hmac.o: ../lib/hmac.c
369 $(LIBDIR)/htable.o: ../lib/htable.c
372 $(LIBDIR)/idcache.o: ../lib/idcache.c
375 $(LIBDIR)/jcr.o: ../lib/jcr.c
378 $(LIBDIR)/lex.o: ../lib/lex.c
381 $(LIBDIR)/md5.o: ../lib/md5.c
384 $(LIBDIR)/mem_pool.o: ../lib/mem_pool.c
387 $(LIBDIR)/message.o: ../lib/message.c
390 $(LIBDIR)/parse_conf.o: ../lib/parse_conf.c
393 $(LIBDIR)/pythonlib.o: ../lib/pythonlib.c
396 $(LIBDIR)/queue.o: ../lib/queue.c
399 $(LIBDIR)/res.o: ../lib/res.c
402 $(LIBDIR)/rwlock.o: ../lib/rwlock.c
405 $(LIBDIR)/scan.o: ../lib/scan.c
408 $(LIBDIR)/semlock.o: ../lib/semlock.c
411 $(LIBDIR)/serial.o: ../lib/serial.c
414 $(LIBDIR)/sha1.o: ../lib/sha1.c
417 $(LIBDIR)/signal.o: ../lib/signal.c
420 $(LIBDIR)/smartall.o: ../lib/smartall.c
423 $(LIBDIR)/tls.o: ../lib/tls.c
426 $(LIBDIR)/tree.o: ../lib/tree.c
429 $(LIBDIR)/util.o: ../lib/util.c
432 $(LIBDIR)/var.o: ../lib/var.c
435 $(LIBDIR)/watchdog.o: ../lib/watchdog.c
438 $(LIBDIR)/winapi.o: ../lib/winapi.c
441 $(LIBDIR)/workq.o: ../lib/workq.c
445 ######################################################################
447 # Files in src/console
449 $(OBJDIR)/cons_authenticate.o \
450 $(OBJDIR)/console.o \
451 $(OBJDIR)/console_conf.o
453 CONS_INC = -I ../console
455 $(OBJDIR)/cons_authenticate.o: ../console/authenticate.c
456 $(CXX) $(CONS_INC) -c $< -o $@
458 $(OBJDIR)/console.o: ../console/console.c
459 $(CXX) $(CONS_INC) -c $< -o $@
461 $(OBJDIR)/console_conf.o: ../console/console_conf.c
462 $(CXX) $(CONS_INC) -c $< -o $@
464 ######################################################################
466 # Files in src/wx-console
468 $(OBJDIR)/wx_authenticate.o \
470 $(OBJDIR)/console_thread.o \
471 $(OBJDIR)/console_conf.o \
472 $(OBJDIR)/wxbrestorepanel.o \
473 $(OBJDIR)/wxbmainframe.o \
474 $(OBJDIR)/wxbtableparser.o \
475 $(OBJDIR)/wxbtreectrl.o \
476 $(OBJDIR)/wxbutils.o \
477 $(OBJDIR)/wxbconfigpanel.o \
478 $(OBJDIR)/wxbconfigfileeditor.o \
479 $(OBJDIR)/wxbhistorytextctrl.o \
480 $(OBJDIR)/wx-console.res
482 WX_INC = -DHAVE_WXCONSOLE -D__CYGWIN__ -D__WINDOWS__ -I ../wx-console $(INCLUDE_WX)
484 $(OBJDIR)/wx_authenticate.o: ../wx-console/authenticate.c
485 $(CXX) $(WX_INC) -c $< -o $@
487 $(OBJDIR)/main.o: ../wx-console/main.cpp
488 $(CXX) $(WX_INC) -c $< -o $@
490 $(OBJDIR)/console_thread.o: ../wx-console/console_thread.cpp
491 $(CXX) $(WX_INC) -c $< -o $@
493 $(OBJDIR)/wx_console_conf.o: ../wx-console/console_conf.c
494 $(CXX) $(WX_INC) -c $< -o $@
496 $(OBJDIR)/wxbrestorepanel.o: ../wx-console/wxbrestorepanel.cpp
497 $(CXX) $(WX_INC) -c $< -o $@
499 $(OBJDIR)/wxbmainframe.o: ../wx-console/wxbmainframe.cpp
500 $(CXX) $(WX_INC) -c $< -o $@
502 $(OBJDIR)/wxbtableparser.o: ../wx-console/wxbtableparser.cpp
503 $(CXX) $(WX_INC) -c $< -o $@
505 $(OBJDIR)/wxbtreectrl.o: ../wx-console/wxbtreectrl.cpp
506 $(CXX) $(WX_INC) -c $< -o $@
508 $(OBJDIR)/wxbutils.o: ../wx-console/wxbutils.cpp
509 $(CXX) $(WX_INC) -c $< -o $@
511 $(OBJDIR)/wxbconfigpanel.o: ../wx-console/wxbconfigpanel.cpp
512 $(CXX) $(WX_INC) -c $< -o $@
514 $(OBJDIR)/wxbconfigfileeditor.o: ../wx-console/wxbconfigfileeditor.cpp
515 $(CXX) $(WX_INC) -c $< -o $@
517 $(OBJDIR)/wxbhistorytextctrl.o: ../wx-console/wxbhistorytextctrl.cpp
518 $(CXX) $(WX_INC) -c $< -o $@
520 $(OBJDIR)/wx-console.res: ../wx-console/wx-console_private.rc
521 $(WINDRES) $(WX_INC) -O coff $< -o $@
524 ######################################################################
528 FD_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WIN) $(OBJS_FINDLIB) $(OBJS_FILED)
536 $(LIB_MINGW)/libole32.a \
537 $(LIB_MINGW)/liboleaut32.a \
538 $(LIB_MINGW)/libuser32.a \
539 $(LIB_MINGW)/libadvapi32.a \
540 $(LIB_MINGW)/libgdi32.a \
541 $(LIB_MINGW)/libwsock32.a \
542 $(LIB_MINGW)/libshell32.a \
543 $(LIB_MINGW)/libnetapi32.a \
544 $(LIB_MINGW)/libuuid.a
546 CONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_CONSOLE)
553 $(LIB_MINGW)/libole32.a \
554 $(LIB_MINGW)/liboleaut32.a \
555 $(LIB_MINGW)/libuser32.a \
556 $(LIB_MINGW)/libadvapi32.a \
557 $(LIB_MINGW)/libgdi32.a \
558 $(LIB_MINGW)/libwsock32.a \
559 $(LIB_MINGW)/libshell32.a \
560 $(LIB_MINGW)/libnetapi32.a \
561 $(LIB_MINGW)/libuuid.a
563 WXCONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WXCONSOLE)
570 $(LIB_MINGW)/libole32.a \
571 $(LIB_MINGW)/liboleaut32.a \
572 $(LIB_MINGW)/libuser32.a \
573 $(LIB_MINGW)/libadvapi32.a \
574 $(LIB_MINGW)/libgdi32.a \
575 $(LIB_MINGW)/libwsock32.a \
576 $(LIB_MINGW)/libshell32.a \
577 $(LIB_MINGW)/libnetapi32.a \
578 $(LIB_MINGW)/libuuid.a
585 all: bacula-fd.exe bconsole.exe
587 #$(LIBDIR)/libbac.a: $(LIB_OBJS)
588 # $(AR) ars $@ $(LIB_OBJS)
590 # Link the File daemon executable ...
591 bacula-fd.exe: $(FD_OBJS)
592 $(CXX) $(FD_OBJS) $(FD_LIBS) -o $(OBJDIR)/bacula-fd.exe
593 cp -f $(DEPKGS)/pthreads/pthreadGCE.dll .
594 cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
596 # Link the File daemon executable ...
597 bconsole.exe: $(CONS_OBJS)
598 $(CXX) $(CONS_OBJS) $(CONS_LIBS) -o $(OBJDIR)/bconsole.exe
599 cp -f $(DEPKGS)/pthreads/pthreadGCE.dll .
600 cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
602 # Link the File daemon executable ...
604 wx-console.exe: $(WXCONS_OBJS)
605 $(CXX) $(WX_INC) $(WXCONS_OBJS) $(WXCONS_LIBS) -o $(OBJDIR)/wx-console.exe
606 cp -f $(DEPKGS)/pthreads/pthreadGCE.dll .
607 cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
611 rm -f $(OBJDIR)/*.o $(OBJDIR)/bacula-fd.exe $(OBJDIR)/winres.res
612 rm -f $(LIBDIR)/*.o *.a
613 rm -f pthreadGCE.dll $(OBJDIR)/bconsole.exe
617 # Fix vss files: check for consistent levels of pointer indirection
618 # bpipe.c: WTERMSIG undefined