are pretty much on your own. However, we will try to provide responses to
your questions on the bacula-devel list, but we can't guarantee anything.
+Directory Structure
+=====================
+The new directory structure is:
+
+ bacula-top Top level directory -- any name
+ bacula Top level Bacula source directory -- any name
+ src
+ win32 Main directory where Windows version is built.
+
+ docs Top level Bacula documentation directory
+
+ depkgs-mingw32 (MinGW32) 3rd Party Dependencies for MinGW32 build
+or
+ depkgs-msvc (MS VC++) 3rd Party Dependencies for Microsoft VC++ build.
+ bin --
+ include |
+ lib |
+ man | Created by script
+ nsis |-- .../bacula/src/win32/build-depkgs-mingw32
+ scons |
+ share |
+ src |
+ ssl --
+ vss
+ inc A copy of the Windows VSS/inc directory
+
+ cross-tools (MinGW32) Cross compilation tools (gcc, g++, mingw32, ...)
+ binutils-mingw32 --
+ gcc-mingw32 | Created by script
+ mingw32 |-- .../bacula/src/win32/build-win32-cross-tools
+ mingw-utils |
+ source --
+
+
One-time Setup
==============
is the version number. The directory must be renamed to docs (ie remove
the leading bacula- and the -version portion of the name).
+Note, a number of packages must be installed to build the cross-tools
+and the depkgs files. Most are rather standard such as gcc, g++,
+make, ... However a few that you may not have are:
+
+ texinfo
+ flex
+ bison
+ patch (Debian)
+ m4
+ postgresql (at least client)
+ mysql (at least client)
+ SQLite3 (from depkgs or as package)
+ readline (readlineN-dev on Debian)
+ ...
+
+NB: On Debian, I had to remove /usr/bin/lorder for
+postresql to build correctly.
+
Once the source is on your system, change to the win32 directory
cd .../bacula/src/win32
In that directory, you should find a make.log, which has the full details
of the compiles, links, and installs done for that package.
+Note, if you are building on a 64 bit machine, please know that
+the build for the depkgs-mingw32/scons puts the python scons libraries
+in depkgs-mingw32/scons/lib64 but when running scons it looks for the
+libs in depkgs-mingw32/scons/lib. So adding symlink from
+depkgs-mingw32/scons/lib64 to depkgs-mingw32/scons/lib will fix the
+problem.
You need the header files from the Microsoft VSS SDK. Unfortunately the SDK
can only be downloaded and installed on a Windows system. You can find it on
wget
texinfo
bison
+ flex
and possibly other packages.
cd .../bacula
make clean
- cvs -q update -d -P
+ svn update
cd src/win32
make
New data variables are exported by adding the macro DLL_IMP_EXP to
the variable declaration in the header file. All exported variables
must be declared in a header file and MUST NOT be declared in a
-source file referencing the variable.
+source file referencing the variable. Example, src/lib/runscript.h:
+
+extern DLL_IMP_EXP bool (*console_command)(JCR *jcr, const char *cmd);
+
+or src/jcr.h
+
+extern int DLL_IMP_EXP num_jobs_run;
+extern DLL_IMP_EXP dlist * last_jobs;
+...
+
Exporting functions is now more or less automated. If you find that
a function name has been added, changed, or an argument modified,
make (to build the .o files, note the link will fail)
./make_def >bacula.def
-This should rebuild the bacula.def file.
+This should rebuild the bacula.def file, but it uses relative paths
+and assumes you have the directory structure noted above. If you
+are using something different, you can set the NM variable at the
+top of the make_def file to use an absolute path to the correct
+directory.
===== manual changing of bacula.def no longer necessary =====
If you want to do it manually, please see below:
As with the bacula.def file above, this is now more or less automated.
When the link dies, simply do the following:
- cd .../bacula/src/win32/cats
+ cd .../bacula/src/win32
make (to build the .o files, note the link will fail)
+ cd cats
./make_def >bacula_cats.def
This should rebuild the bacula_cats.def file. Note, if you have
=== end manual changing of bacula_cats.def ==========
+Running gdb on the Win32 files
+==================================================
+You can use the mingw32 gdb to debug Bacula on Win32 by downloading
+it from Source Forge:
+
+http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=20507
+
+Download one of their .exe versions, which is an installer that you
+can run on Win32 to install gdb. This gdb is built with mingw32 so will
+run independently of any cygwin installation. Note, not all the releases
+come with an installer. I had to go back 3 or 4 versions to find it. Otherwise
+you can download the source and build it. Thanks to Eric Bollengier for
+this tip.
+
+
Structure of the MinGW32 build environment
==========================================