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 \
284 $(LIBDIR)/runscript.o \
286 $(LIBDIR)/semlock.o \
290 $(LIBDIR)/smartall.o \
293 $(LIBDIR)/watchdog.o \
301 # Rules for generating from ../lib
304 $(LIBDIR)/address_conf.o: ../lib/address_conf.c
307 $(LIBDIR)/alist.o: ../lib/alist.c
310 $(LIBDIR)/alloc.o: ../lib/alloc.c
313 $(LIBDIR)/attr.o: ../lib/attr.c
316 $(LIBDIR)/base64.o: ../lib/base64.c
319 $(LIBDIR)/berrno.o: ../lib/berrno.c
322 $(LIBDIR)/bget_msg.o: ../lib/bget_msg.c
325 $(LIBDIR)/bnet.o: ../lib/bnet.c
328 $(LIBDIR)/bnet_server.o: ../lib/bnet_server.c
331 $(LIBDIR)/bpipe.o: ../lib/bpipe.c
334 $(LIBDIR)/bregex.o: ../lib/bregex.c
337 $(LIBDIR)/bsys.o: ../lib/bsys.c
340 $(LIBDIR)/btime.o: ../lib/btime.c
343 $(LIBDIR)/btimers.o: ../lib/btimers.c
346 $(LIBDIR)/cram-md5.oc: ../lib/cram-md5.c
349 $(LIBDIR)/crc32.o: ../lib/crc32.c
352 $(LIBDIR)/crypto.o: ../lib/crypto.c
355 $(LIBDIR)/daemon.o: ../lib/daemon.c
358 $(LIBDIR)/dlist.o: ../lib/dlist.c
361 $(LIBDIR)/edit.o: ../lib/edit.c
364 $(LIBDIR)/fnmatch.o: ../lib/fnmatch.c
367 $(LIBDIR)/hmac.o: ../lib/hmac.c
370 $(LIBDIR)/htable.o: ../lib/htable.c
373 $(LIBDIR)/idcache.o: ../lib/idcache.c
376 $(LIBDIR)/jcr.o: ../lib/jcr.c
379 $(LIBDIR)/lex.o: ../lib/lex.c
382 $(LIBDIR)/md5.o: ../lib/md5.c
385 $(LIBDIR)/mem_pool.o: ../lib/mem_pool.c
388 $(LIBDIR)/message.o: ../lib/message.c
391 $(LIBDIR)/parse_conf.o: ../lib/parse_conf.c
394 $(LIBDIR)/pythonlib.o: ../lib/pythonlib.c
397 $(LIBDIR)/queue.o: ../lib/queue.c
400 $(LIBDIR)/res.o: ../lib/res.c
403 $(LIBDIR)/runscript.o: ../lib/runscript.c
407 $(LIBDIR)/rwlock.o: ../lib/rwlock.c
410 $(LIBDIR)/scan.o: ../lib/scan.c
413 $(LIBDIR)/semlock.o: ../lib/semlock.c
416 $(LIBDIR)/serial.o: ../lib/serial.c
419 $(LIBDIR)/sha1.o: ../lib/sha1.c
422 $(LIBDIR)/signal.o: ../lib/signal.c
425 $(LIBDIR)/smartall.o: ../lib/smartall.c
428 $(LIBDIR)/tls.o: ../lib/tls.c
431 $(LIBDIR)/tree.o: ../lib/tree.c
434 $(LIBDIR)/util.o: ../lib/util.c
437 $(LIBDIR)/var.o: ../lib/var.c
440 $(LIBDIR)/watchdog.o: ../lib/watchdog.c
443 $(LIBDIR)/winapi.o: ../lib/winapi.c
446 $(LIBDIR)/workq.o: ../lib/workq.c
450 ######################################################################
452 # Files in src/console
454 $(OBJDIR)/cons_authenticate.o \
455 $(OBJDIR)/console.o \
456 $(OBJDIR)/console_conf.o
458 CONS_INC = -I ../console
460 $(OBJDIR)/cons_authenticate.o: ../console/authenticate.c
461 $(CXX) $(CONS_INC) -c $< -o $@
463 $(OBJDIR)/console.o: ../console/console.c
464 $(CXX) $(CONS_INC) -c $< -o $@
466 $(OBJDIR)/console_conf.o: ../console/console_conf.c
467 $(CXX) $(CONS_INC) -c $< -o $@
469 ######################################################################
471 # Files in src/wx-console
473 $(OBJDIR)/wx_authenticate.o \
475 $(OBJDIR)/console_thread.o \
476 $(OBJDIR)/console_conf.o \
477 $(OBJDIR)/wxbrestorepanel.o \
478 $(OBJDIR)/wxbmainframe.o \
479 $(OBJDIR)/wxbtableparser.o \
480 $(OBJDIR)/wxbtreectrl.o \
481 $(OBJDIR)/wxbutils.o \
482 $(OBJDIR)/wxbconfigpanel.o \
483 $(OBJDIR)/wxbconfigfileeditor.o \
484 $(OBJDIR)/wxbhistorytextctrl.o \
485 $(OBJDIR)/wx-console.res
487 WX_INC = -DHAVE_WXCONSOLE -D__CYGWIN__ -D__WINDOWS__ -I ../wx-console $(INCLUDE_WX)
489 $(OBJDIR)/wx_authenticate.o: ../wx-console/authenticate.c
490 $(CXX) $(WX_INC) -c $< -o $@
492 $(OBJDIR)/main.o: ../wx-console/main.cpp
493 $(CXX) $(WX_INC) -c $< -o $@
495 $(OBJDIR)/console_thread.o: ../wx-console/console_thread.cpp
496 $(CXX) $(WX_INC) -c $< -o $@
498 $(OBJDIR)/wx_console_conf.o: ../wx-console/console_conf.c
499 $(CXX) $(WX_INC) -c $< -o $@
501 $(OBJDIR)/wxbrestorepanel.o: ../wx-console/wxbrestorepanel.cpp
502 $(CXX) $(WX_INC) -c $< -o $@
504 $(OBJDIR)/wxbmainframe.o: ../wx-console/wxbmainframe.cpp
505 $(CXX) $(WX_INC) -c $< -o $@
507 $(OBJDIR)/wxbtableparser.o: ../wx-console/wxbtableparser.cpp
508 $(CXX) $(WX_INC) -c $< -o $@
510 $(OBJDIR)/wxbtreectrl.o: ../wx-console/wxbtreectrl.cpp
511 $(CXX) $(WX_INC) -c $< -o $@
513 $(OBJDIR)/wxbutils.o: ../wx-console/wxbutils.cpp
514 $(CXX) $(WX_INC) -c $< -o $@
516 $(OBJDIR)/wxbconfigpanel.o: ../wx-console/wxbconfigpanel.cpp
517 $(CXX) $(WX_INC) -c $< -o $@
519 $(OBJDIR)/wxbconfigfileeditor.o: ../wx-console/wxbconfigfileeditor.cpp
520 $(CXX) $(WX_INC) -c $< -o $@
522 $(OBJDIR)/wxbhistorytextctrl.o: ../wx-console/wxbhistorytextctrl.cpp
523 $(CXX) $(WX_INC) -c $< -o $@
525 $(OBJDIR)/wx-console.res: ../wx-console/wx-console_private.rc
526 $(WINDRES) $(WX_INC) -O coff $< -o $@
529 ######################################################################
533 FD_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WIN) $(OBJS_FINDLIB) $(OBJS_FILED)
541 $(LIB_MINGW)/libole32.a \
542 $(LIB_MINGW)/liboleaut32.a \
543 $(LIB_MINGW)/libuser32.a \
544 $(LIB_MINGW)/libadvapi32.a \
545 $(LIB_MINGW)/libgdi32.a \
546 $(LIB_MINGW)/libwsock32.a \
547 $(LIB_MINGW)/libshell32.a \
548 $(LIB_MINGW)/libnetapi32.a \
549 $(LIB_MINGW)/libuuid.a
551 CONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_CONSOLE)
558 $(LIB_MINGW)/libole32.a \
559 $(LIB_MINGW)/liboleaut32.a \
560 $(LIB_MINGW)/libuser32.a \
561 $(LIB_MINGW)/libadvapi32.a \
562 $(LIB_MINGW)/libgdi32.a \
563 $(LIB_MINGW)/libwsock32.a \
564 $(LIB_MINGW)/libshell32.a \
565 $(LIB_MINGW)/libnetapi32.a \
566 $(LIB_MINGW)/libuuid.a
568 WXCONS_OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WXCONSOLE)
575 $(LIB_MINGW)/libole32.a \
576 $(LIB_MINGW)/liboleaut32.a \
577 $(LIB_MINGW)/libuser32.a \
578 $(LIB_MINGW)/libadvapi32.a \
579 $(LIB_MINGW)/libgdi32.a \
580 $(LIB_MINGW)/libwsock32.a \
581 $(LIB_MINGW)/libshell32.a \
582 $(LIB_MINGW)/libnetapi32.a \
583 $(LIB_MINGW)/libuuid.a
590 all: bacula-fd.exe bconsole.exe
592 #$(LIBDIR)/libbac.a: $(LIB_OBJS)
593 # $(AR) ars $@ $(LIB_OBJS)
595 # Link the File daemon executable ...
596 bacula-fd.exe: $(FD_OBJS)
597 $(CXX) $(FD_OBJS) $(FD_LIBS) -o $(OBJDIR)/bacula-fd.exe
598 cp -f $(DEPKGS)/pthreads/pthreadGCE.dll .
599 cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
601 # Link the File daemon executable ...
602 bconsole.exe: $(CONS_OBJS)
603 $(CXX) $(CONS_OBJS) $(CONS_LIBS) -o $(OBJDIR)/bconsole.exe
604 cp -f $(DEPKGS)/pthreads/pthreadGCE.dll .
605 cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
607 # Link the File daemon executable ...
609 wx-console.exe: $(WXCONS_OBJS)
610 $(CXX) $(WX_INC) $(WXCONS_OBJS) $(WXCONS_LIBS) -o $(OBJDIR)/wx-console.exe
611 cp -f $(DEPKGS)/pthreads/pthreadGCE.dll .
612 cp -f $(MINGW)/mingw32/bin/mingwm10.dll .
616 rm -f $(OBJDIR)/*.o $(OBJDIR)/bacula-fd.exe $(OBJDIR)/winres.res
617 rm -f $(LIBDIR)/*.o *.a
618 rm -f pthreadGCE.dll $(OBJDIR)/bconsole.exe
622 # Fix vss files: check for consistent levels of pointer indirection
623 # bpipe.c: WTERMSIG undefined