# # Makefile for win32 bacula executables # Using MinGW cross-compiler on GNU/Linux # # Configuration # Version for cross-tools-3.4.2 TOPDIR = @TOP_DIR@ CROSSTOOLS = $(TOPDIR)/cross-tools MINGW = $(CROSSTOOLS)/mingw32 INCLUDE_MINGW = -I $(MINGW)/mingw32/include INCLUDE_GCC = -I $(MINGW)/lib/gcc/mingw32/3.4.5/include DEPKGS = $(TOPDIR)/depkgs-win32 INCLUDE_BACULA = -I .. -I ./compat INCLUDE_PTHREADS = -I$(DEPKGS)/pthreads INCLUDE_ZLIB = -I$(DEPKGS)/zlib INCLUDE_ATL = -I$(CROSSTOOLS)/atlmfc/include INCLUDE_VSS = -I$(CROSSTOOLS) INCLUDE_ICONS = -I ../filed/win32 INCLUDE_OPENSSL = -I$(CROSSTOOLS)/openssl/include LIB_MINGW = $(MINGW)/mingw32/lib LIB_PTHREADS = $(DEPKGS)/pthreads/libpthreadGCE.a #LIB_ZLIB = $(DEPKGS)/libz.a #LIB_SSL = $(DEPKGS)/openssl/libssl.a #LIB_CRYPTO = $(DEPKGS)/openssl/libcrypto.a BIN_DIR = $(MINGW)/bin INCLUDES = \ $(INCLUDE_GCC) \ $(INCLUDE_MINGW) \ $(INCLUDE_PTHREADS) \ $(INCLUDE_BACULA) \ $(INCLUDE_ICONS) # $(INCLUDE_VSS) \ # $(INCLUDE_ATL) \ # $(INCLUDE_OPENSSL) HAVES = \ -DHAVE_MINGW \ -DHAVE_WIN32 # -DWIN32_VSS \ # -DHAVE_ZLIB_H \ # -DHAVE_LIBZ \ # -DHAVE_OPENSSL \ # -DHAVE_TLS \ DEFINES = \ -DWIN32 \ $(HAVES) \ -DCOMPILING_BACULA CC = $(BIN_DIR)/mingw32-g++ $(DEFINES) $(INCLUDES) CXX = $(BIN_DIR)/mingw32-g++ $(DEFINES) $(INCLUDES) 2>&1 WINDRES = $(BIN_DIR)/mingw32-windres first: all OBJDIR = . ########################################################################## # Files in src/win32/filed/ OBJS_FILED = \ $(OBJDIR)/authenticate.o \ $(OBJDIR)/backup.o \ $(OBJDIR)/estimate.o \ $(OBJDIR)/filed.o \ $(OBJDIR)/filed_conf.o \ $(OBJDIR)/heartbeat.o \ $(OBJDIR)/job.o \ $(OBJDIR)/restore.o \ $(OBJDIR)/status.o \ $(OBJDIR)/verify.o \ $(OBJDIR)/verify_vol.o \ authenticate.o: ../filed/authenticate.c $(CXX) -c ../filed/authenticate.c -o $(OBJDIR)/authenticate.o backup.o: ../filed/backup.c $(CXX) -c ../filed/backup.c -o $(OBJDIR)/backup.o estimate.o: ../filed/estimate.c $(CXX) -c ../filed/estimate.c -o $(OBJDIR)/estimate.o filed.o: ../filed/filed.c $(CXX) -c ../filed/filed.c -o $(OBJDIR)/filed.o filed_conf.o: ../filed/filed_conf.c $(CXX) -c ../filed/filed_conf.c -o $(OBJDIR)/filed_conf.o heartbeat.o: ../filed/heartbeat.c $(CXX) -c ../filed/heartbeat.c -o $(OBJDIR)/heartbeat.o job.o: ../filed/job.c $(CXX) -c ../filed/job.c -o $(OBJDIR)/job.o restore.o: ../filed/restore.c $(CXX) -c ../filed/restore.c -o $(OBJDIR)/restore.o status.o: ../filed/status.c $(CXX) -c ../filed/status.c -o $(OBJDIR)/status.o verify.o: ../filed/verify.c $(CXX) -c ../filed/verify.c -o $(OBJDIR)/verify.o verify_vol.o: ../filed/verify_vol.c $(CXX) -c ../filed/verify_vol.c -o $(OBJDIR)/verify_vol.o ###################################################################### # Files in win32/compat OBJS_COMPAT = \ $(OBJDIR)/print.o \ $(OBJDIR)/compat.o \ $(OBJDIR)/getopt.o \ $(OBJDIR)/vss.o \ $(OBJDIR)/vss_xp.o \ $(OBJDIR)/vss_w2k3.o \ compat.o: ./compat/compat.cpp $(CXX) -c ./compat/compat.cpp -o $(OBJDIR)/compat.o getopt.o: ./compat/getopt.c $(CXX) -c ./compat/getopt.c -o $(OBJDIR)/getopt.o print.o: ./compat/print.cpp $(CXX) -c ./compat/print.cpp -o $(OBJDIR)/print.o vss.o: ./compat/vss.cpp $(CXX) -c ./compat/vss.cpp -o $(OBJDIR)/vss.o vss_xp.o: ./compat/vss_XP.cpp $(CXX) -c ./compat/vss_XP.cpp -o $(OBJDIR)/vss_xp.o vss_w2k3.o: ./compat/vss_W2K3.cpp $(CXX) -c ./compat/vss_W2K3.cpp -o $(OBJDIR)/vss_w2k3.o ###################################################################### # Files in src/filed/win32 OBJS_WIN = \ $(OBJDIR)/winabout.o \ $(OBJDIR)/winevents.o \ $(OBJDIR)/winservice.o \ $(OBJDIR)/winstat.o \ $(OBJDIR)/wintray.o \ $(OBJDIR)/winmain.o \ $(OBJDIR)/winres.res winabout.o: ../filed/win32/winabout.cpp $(CXX) -c ../filed/win32/winabout.cpp -o $(OBJDIR)/winabout.o winevents.o: ../filed/win32/winevents.cpp $(CXX) -c ../filed/win32/winevents.cpp -o $(OBJDIR)/winevents.o winmain.o: ../filed/win32/winmain.cpp $(CXX) -c ../filed/win32/winmain.cpp -o $(OBJDIR)/winmain.o winservice.o: ../filed/win32/winservice.cpp $(CXX) -c ../filed/win32/winservice.cpp -o $(OBJDIR)/winservice.o winstat.o: ../filed/win32/winstat.cpp $(CXX) -c ../filed/win32/winstat.cpp -o $(OBJDIR)/winstat.o wintray.o: ../filed/win32/wintray.cpp $(CXX) -c ../filed/win32/wintray.cpp -o $(OBJDIR)/wintray.o winres.res: ../filed/win32/winres.rc $(WINDRES) $(INCLUDE_ICONS) -o coff ../filed/win32/winres.rc -o $(OBJDIR)/winres.res # $(WINDRES) --help # mingw32-nm winres.res ###################################################################### # Files in src/findlib OBJS_FINDLIB = \ $(OBJDIR)/attribs.o \ $(OBJDIR)/bfile.o \ $(OBJDIR)/create_file.o \ $(OBJDIR)/enable_priv.o \ $(OBJDIR)/find.o \ $(OBJDIR)/find_one.o \ $(OBJDIR)/fstype.o \ $(OBJDIR)/makepath.o \ $(OBJDIR)/match.o \ $(OBJDIR)/save-cwd.o attribs.o: ../findlib/attribs.c $(CXX) -c ../findlib/attribs.c -o $(OBJDIR)/attribs.o bfile.o: ../findlib/bfile.c $(CXX) -c ../findlib/bfile.c -o $(OBJDIR)/bfile.o create_file.o: ../findlib/create_file.c $(CXX) -c ../findlib/create_file.c -o $(OBJDIR)/create_file.o enable_priv.o: ../findlib/enable_priv.c $(CXX) -c ../findlib/enable_priv.c -o $(OBJDIR)/enable_priv.o find.o: ../findlib/find.c $(CXX) -c ../findlib/find.c -o $(OBJDIR)/find.o find_one.o: ../findlib/find_one.c $(CXX) -c ../findlib/find_one.c -o $(OBJDIR)/find_one.o fstype.o: ../findlib/fstype.c $(CXX) -c ../findlib/fstype.c -o $(OBJDIR)/fstype.o makepath.o: ../findlib/makepath.c $(CXX) -c ../findlib/makepath.c -o $(OBJDIR)/makepath.o match.o: ../findlib/match.c $(CXX) -c ../findlib/match.c -o $(OBJDIR)/match.o save-cwd.o: ../findlib/save-cwd.c $(CXX) -c ../findlib/save-cwd.c -o $(OBJDIR)/save-cwd.o ###################################################################### # Files in src/win32/lib, based on files in src/lib LIB_OBJS = \ $(OBJDIR)/address_conf.o \ $(OBJDIR)/alist.o \ $(OBJDIR)/alloc.o \ $(OBJDIR)/attr.o \ $(OBJDIR)/base64.o \ $(OBJDIR)/berrno.o \ $(OBJDIR)/bget_msg.o \ $(OBJDIR)/bnet.o \ $(OBJDIR)/bnet_server.o \ $(OBJDIR)/bpipe.o \ $(OBJDIR)/bregex.o \ $(OBJDIR)/bshm.o \ $(OBJDIR)/bsys.o \ $(OBJDIR)/btime.o \ $(OBJDIR)/btimers.o \ $(OBJDIR)/cram-md5.o \ $(OBJDIR)/crc32.o \ $(OBJDIR)/daemon.o \ $(OBJDIR)/dlist.o \ $(OBJDIR)/edit.o \ $(OBJDIR)/fnmatch.o \ $(OBJDIR)/hmac.o \ $(OBJDIR)/htable.o \ $(OBJDIR)/idcache.o \ $(OBJDIR)/jcr.o \ $(OBJDIR)/lex.o \ $(OBJDIR)/md5.o \ $(OBJDIR)/mem_pool.o \ $(OBJDIR)/message.o \ $(OBJDIR)/parse_conf.o \ $(OBJDIR)/pythonlib.o \ $(OBJDIR)/queue.o \ $(OBJDIR)/res.o \ $(OBJDIR)/rwlock.o \ $(OBJDIR)/semlock.o \ $(OBJDIR)/serial.o \ $(OBJDIR)/sha1.o \ $(OBJDIR)/signal.o \ $(OBJDIR)/smartall.o \ $(OBJDIR)/tls.o \ $(OBJDIR)/var.o \ $(OBJDIR)/watchdog.o \ $(OBJDIR)/winapi.o \ $(OBJDIR)/workq.o \ $(OBJDIR)/scan.o \ $(OBJDIR)/tree.o \ $(OBJDIR)/util.o \ OBJS = $(LIB_OBJS) $(OBJS_COMPAT) $(OBJS_WIN) $(OBJS_FINDLIB) $(OBJS_FILED) LIBS = \ -L$(LIB_MINGW) \ $(LIB_PTHREADS) \ $(LIB_SSL) \ $(LIB_CRYPTO) \ $(LIB_ZLIB) \ $(LIB_MINGW)/libole32.a \ $(LIB_MINGW)/liboleaut32.a \ $(LIB_MINGW)/libuser32.a \ $(LIB_MINGW)/libadvapi32.a \ $(LIB_MINGW)/libgdi32.a \ $(LIB_MINGW)/libwsock32.a \ $(LIB_MINGW)/libshell32.a \ $(LIB_MINGW)/libnetapi32.a \ $(LIB_MINGW)/libuuid.a # # Rules for generating from ../lib # address_conf.o: ../lib/address_conf.c $(CXX) -c ../lib/address_conf.c -o $(OBJDIR)/address_conf.o alist.o: ../lib/alist.c $(CXX) -c ../lib/alist.c -o $(OBJDIR)/alist.o alloc.o: ../lib/alloc.c $(CXX) -c ../lib/alloc.c -o $(OBJDIR)/alloc.o attr.o: ../lib/attr.c $(CXX) -c ../lib/attr.c -o $(OBJDIR)/attr.o base64.o: ../lib/base64.c $(CXX) -c ../lib/base64.c -o $(OBJDIR)/base64.o berrno.o: ../lib/berrno.c $(CXX) -c ../lib/berrno.c -o $(OBJDIR)/berrno.o bget_msg.o: ../lib/bget_msg.c $(CXX) -c ../lib/bget_msg.c -o $(OBJDIR)/bget_msg.o bnet.o: ../lib/bnet.c $(CXX) -c ../lib/bnet.c -o $(OBJDIR)/bnet.o bnet_server.o: ../lib/bnet_server.c $(CXX) -c ../lib/bnet_server.c -o $(OBJDIR)/bnet_server.o bpipe.o: ../lib/bpipe.c $(CXX) -c ../lib/bpipe.c -o $(OBJDIR)/bpipe.o bregex.o: ../lib/bregex.c $(CXX) -c ../lib/bregex.c -o $(OBJDIR)/bregex.o bshm.o: ../lib/bshm.c $(CXX) -c ../lib/bshm.c -o $(OBJDIR)/bshm.o bsys.o: ../lib/bsys.c $(CXX) -c ../lib/bsys.c -o $(OBJDIR)/bsys.o btime.o: ../lib/btime.c $(CXX) -c ../lib/btime.c -o $(OBJDIR)/btime.o btimers.o: ../lib/btimers.c $(CXX) -c ../lib/btimers.c -o $(OBJDIR)/btimers.o cram-md5.o: ../lib/cram-md5.c $(CXX) -c ../lib/cram-md5.c -o $(OBJDIR)/cram-md5.o crc32.o: ../lib/crc32.c $(CXX) -c ../lib/crc32.c -o $(OBJDIR)/crc32.o daemon.o: ../lib/daemon.c $(CXX) -c ../lib/daemon.c -o $(OBJDIR)/daemon.o dlist.o: ../lib/dlist.c $(CXX) -c ../lib/dlist.c -o $(OBJDIR)/dlist.o edit.o: ../lib/edit.c $(CXX) -c ../lib/edit.c -o $(OBJDIR)/edit.o fnmatch.o: ../lib/fnmatch.c $(CXX) -c ../lib/fnmatch.c -o $(OBJDIR)/fnmatch.o hmac.o: ../lib/hmac.c $(CXX) -c ../lib/hmac.c -o $(OBJDIR)/hmac.o htable.o: ../lib/htable.c $(CXX) -c ../lib/htable.c -o $(OBJDIR)/htable.o idcache.o: ../lib/idcache.c $(CXX) -c ../lib/idcache.c -o $(OBJDIR)/idcache.o jcr.o: ../lib/jcr.c $(CXX) -c ../lib/jcr.c -o $(OBJDIR)/jcr.o lex.o: ../lib/lex.c $(CXX) -c ../lib/lex.c -o $(OBJDIR)/lex.o md5.o: ../lib/md5.c $(CXX) -c ../lib/md5.c -o $(OBJDIR)/md5.o mem_pool.o: ../lib/mem_pool.c $(CXX) -c ../lib/mem_pool.c -o $(OBJDIR)/mem_pool.o message.o: ../lib/message.c $(CXX) -c ../lib/message.c -o $(OBJDIR)/message.o parse_conf.o: ../lib/parse_conf.c $(CXX) -c ../lib/parse_conf.c -o $(OBJDIR)/parse_conf.o pythonlib.o: ../lib/pythonlib.c $(CXX) -c ../lib/pythonlib.c -o $(OBJDIR)/pythonlib.o queue.o: ../lib/queue.c $(CXX) -c ../lib/queue.c -o $(OBJDIR)/queue.o res.o: ../lib/res.c $(CXX) -c ../lib/res.c -o $(OBJDIR)/res.o rwlock.o: ../lib/rwlock.c $(CXX) -c ../lib/rwlock.c -o $(OBJDIR)/rwlock.o scan.o: ../lib/scan.c $(CXX) -c ../lib/scan.c -o $(OBJDIR)/scan.o semlock.o: ../lib/semlock.c $(CXX) -c ../lib/semlock.c -o $(OBJDIR)/semlock.o serial.o: ../lib/serial.c $(CXX) -c ../lib/serial.c -o $(OBJDIR)/serial.o sha1.o: ../lib/sha1.c $(CXX) -c ../lib/sha1.c -o $(OBJDIR)/sha1.o signal.o: ../lib/signal.c $(CXX) -c ../lib/signal.c -o $(OBJDIR)/signal.o smartall.o: ../lib/smartall.c $(CXX) -c ../lib/smartall.c -o $(OBJDIR)/smartall.o tls.o: ../lib/tls.c $(CXX) -c ../lib/tls.c -o $(OBJDIR)/tls.o tree.o: ../lib/tree.c $(CXX) -c ../lib/tree.c -o $(OBJDIR)/tree.o util.o: ../lib/util.c $(CXX) -c ../lib/util.c -o $(OBJDIR)/util.o var.o: ../lib/var.c $(CXX) -c ../lib/var.c -o $(OBJDIR)/var.o watchdog.o: ../lib/watchdog.c $(CXX) -c ../lib/watchdog.c -o $(OBJDIR)/watchdog.o winapi.o: ../lib/winapi.c $(CXX) -c ../lib/winapi.c -o $(OBJDIR)/winapi.o workq.o: ../lib/workq.c $(CXX) -c ../lib/workq.c -o $(OBJDIR)/workq.o # Targets all: bacula-fd.exe clean: rm -f $(OBJDIR)/*.o $(OBJDIR)/bacula-fd.exe $(OBJDIR)/winres.res # Link the executable ... bacula-fd.exe: $(OBJS) $(CXX) $(OBJS) $(LIBS) -o $(OBJDIR)/bacula-fd.exe # TODO ... # Fix vss files: check for consistent levels of pointer indirection # vss_generic.c: VSS_TIMEOUT defined as empty/null # bpipe.c: WTERMSIG undefined