# # Makefile for win32 bacula executables # Using MinGW cross-compiler on GNU/Linux # # Author: Robert Nelson # Copyright (C), Kern Sibbald 2006-2018 # License: BSD 2-Clause; see file LICENSE-FOSS # # Written by Robert Nelson, June 2006 # # Absolute paths used in place of relative paths # Kern Sibbald, October 2008 # Split Win32 and Win64 objects and binaries. However # the clean is a significant kludge -- hard coded. # The object directories are deleted during make clean, # so don't point them to any source directory. # # Global Configuration ECHO_CMD = @ # Main Bacula source dir MAINDIR := @WIN32MAINDIR@ # # Build dir -- i.e. normally src/win32 BUILDDIR := @WIN32BUILDDIR@ # # Dir above Bacula where we find depkgs TOPDIR := @WIN32TOPDIR@ # # where we find depkgs DEPKGS32 := $(TOPDIR)/@WIN32DEPKGS32@ DOCDIR := $(TOPDIR)/docs MINGW_BASE := @MINGWBASE@ MINGW_BIN := @WIN32BINDIR@ MINGW_INCLUDE := @WIN32INCDIR@ MINGW_DLLDIR := @WIN32DLLDIR@ # Point only to GCC (CC is already used for g++...) # Used to compile libobk for windows (just need simple gcc) GCC = $(MINGW_BIN)$(MINGW_BASE)-gcc CC = $(MINGW_BIN)$(MINGW_BASE)-g++ $(DEFINES) $(INCLUDES) CXX = $(MINGW_BIN)$(MINGW_BASE)-g++ $(DEFINES) $(INCLUDES) AR := $(MINGW_BIN)$(MINGW_BASE)-ar RANLIB := $(MINGW_BIN)$(MINGW_BASE)-ranlib WINDRES := $(MINGW_BIN)$(MINGW_BASE)-windres DLLTOOL := $(MINGW_BIN)$(MINGW_BASE)-dlltool OBJCPY := $(MINGW_BIN)-objcopy STAB2CV := $(DEPKGS32)/tools/bin/stab2cv WIN64=@WIN64@ ifeq ($(WIN64),yes) DEPKGS := $(TOPDIR)/@WIN32DEPKGS@ CFLAGS := -g -Wall -mthreads -O3 -fno-strict-aliasing -DHAVE_VSS64 -Wno-unknown-pragmas -Wno-builtin-macro-redefined LIBS_NETWORK := -lws2_32 WIN_VERSION := 64 BINDIR := $(BUILDDIR)/release64 LIBDIR := $(BUILDDIR)/release64 OBJDIR := obj64 else DEPKGS := $(TOPDIR)/@WIN32DEPKGS32@ # CFLAGS := -g -Wall -mno-cygwin -m32 -mwin32 -mthreads -O3 -fno-strict-aliasing -Wno-unknown-pragmas CFLAGS := -g -Wall -m32 -mwin32 -mthreads -O3 -fno-strict-aliasing -Wno-unknown-pragmas -Wno-builtin-macro-redefined LIBS_NETWORK := -lwsock32 WIN_VERSION := 32 BINDIR := $(BUILDDIR)/release32 LIBDIR := $(BUILDDIR)/release32 OBJDIR := obj32 endif LDFLAGS := -g -Wall ifeq ($(MINGW_BASE),i686-w64-mingw32) CFLAGS += -DHAVE_MINGW_W64 WINDRESFLAGS := -DHAVE_MINGW_W64 LIBS_PTHREADS := $(DEPKGS)/lib/libpthreadGCE2.a else ifeq ($(MINGW_BASE),x86_64-w64-mingw32) CFLAGS += -DHAVE_MINGW_W64 WINDRESFLAGS := -DHAVE_MINGW_W64 LIBS_PTHREADS := $(DEPKGS)/lib/libpthreadGCE2.a else # old mingw LIBS_PTHREADS := $(DEPKGS)/lib/libpthreadGCE.a LDFLAGS += -mno-cygwin -Wl,--disable-auto-import endif bat=@BAT@ ifeq ($(bat),no) BUILD_BAT=no else BUILD_BAT=yes endif OBJDIRS := obj32 obj64 INCLUDE_DDK := -I$(MINGW_INCLUDE)/ddk INCLUDE_BACULA := -I$(MAINDIR)/src -I$(BUILDDIR)/compat INCLUDE_PTHREADS := -I$(DEPKGS)/include/pthreads INCLUDE_ZLIB := -I$(DEPKGS)/include INCLUDE_VSS := -I$(DEPKGS)/vss INCLUDE_ICONS := -I../libwin32 INCLUDE_OPENSSL := -I$(DEPKGS)/include INCLUDE_WX := -I$(DEPKGS)/lib/wx_dll/msw -I$(DEPKGS)/include INCLUDE_MYSQL := -I$(DEPKGS)/include/mysql INCLUDE_RSYNC := -I$(DEPKGS)/include LIBS_DB := \ $(DEPKGS)/lib/libdb.a LIBS_RSYNC := $(DEPKGS)/lib/librsync.a LIBS_ZLIB := \ $(DEPKGS)/lib/libz.a LIBS_LZO := \ $(DEPKGS)/lib/liblzo2.a LIBS_MYSQL := \ $(DEPKGS)/lib/libmysql.a LIBS_POSTGRESQL := \ $(DEPKGS)/lib/libpq.a LIBS_SQLITE := \ $(DEPKGS)/lib/libsqlite3.a LIBS_SSL := \ $(DEPKGS)/lib/libssl.dll.a LIBS_CRYPTO := \ $(DEPKGS)/lib/libcrypto.dll.a LIBS_WX := \ $(DEPKGS)/lib/wx_dll/libwxmsw28_core.a \ $(DEPKGS)/lib/wx_dll/libwxbase28.a LIBS_CATS := \ $(LIBDIR)/libcats.a LIBS_BACULA := \ $(LIBDIR)/libbacula.a HAVES := \ -DHAVE_WIN32 \ -DHAVE_MINGW \ -DHAVE_ZLIB_H \ -DHAVE_LZO \ -DHAVE_LIBZ \ -DHAVE_CRYPTO \ -DHAVE_OPENSSL \ -DHAVE_TLS \ $(HAVES)