]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/README.win32
Update win32 build instructions
[bacula/bacula] / bacula / src / win32 / README.win32
1
2 This directory <bacula-src>/src/win32 contains the build
3 environment for building the native Win32 Bacula File daemon,
4 the native Win32 bconsole program and the wx-console GUI console
5 program.
6
7 The directory structure is:
8   bacula/src/win32      Makefiles and scripts
9     baculafd            Visual Studio Files
10       Release           Release objects, and bacula-fd.exe
11        Debug            Debug object, and bacula-fd.exe produced
12                            by VC++
13     console             Build of console program and bconsole.conf
14       Release           Release objects  and bconsole.exe
15       Debug             Debug objects 
16     wx-console          Buld of wx-console program and wx-console-conf
17       Release           Release objects and wx-console.exe
18       Debug             Debug objects.
19     filed               Links to core filed code
20     findlib             Links to core findlib code
21     lib                 Links to core lib code
22
23   docs                  Bacula documentation directory with pre-build
24                         doc files
25
26   depkgs-win32
27     pthreads            The POSIX pthreads library (third party)
28     zlib                The zlib library (third party)
29     wx                  The wxWidgets library (third party)
30
31 depkgs-win32 is released in a separate .tar.gz file that contains the
32 source for the above mentioned libraries needed to build the
33 Win32 Bacula.  It can be found in the Source Forge Bacula project
34 release section.  Docs is released as a separate tar file, which is
35 created from the bacula CVS docs project (module).             
36
37
38 Instructions if you want to build bacula-fd with VSS 
39 (Volume Shadow Copy Service) support. Note, the non-VSS build is
40 no longer supported though you may be able to get it to work by
41 copy the file src/win32/baculafd/baculanovssfd.mak into 
42 src/win32/baculafd/baculafd.mak before running the "make" command
43 below:
44
45 - VSS support works for both WinXP machines and Win 2003 machines.
46 - you need to get the VSS SDK: 
47   http://www.microsoft.com/downloads/details.aspx?FamilyID=0B4F56E4-0CCC-4626-826A-ED2C4C95C871&displaylang=en
48 - copy the 'inc' and 'lib' directories from this SDK to 
49   'bacula/src/win32/compat/vss'. Note, generally these files
50   are installed in c:/Program\ Files/Microsoft/VSSSDK71
51 - you should then have 'bacula/src/win32/compat/vss/inc' and 
52   'bacula/src/win32/compat/vss/lib'
53   both with 'Win2003' and 'WinXP' subdirectories
54 - add 'WIN32_VSS' as preprocessor directive
55 - you should get a single bacula-fd.exe that runs on all platforms and has 
56   VSS support for WinXP and 2003 enabled
57 - Once you have added the VSS SDK files as a subdirectory to the build
58   tree, follow the original instructions for building Bacula given
59   below.
60
61 To build it:
62 - For this version of Bacula, you must have msvcr71.dll
63   installed in c:/windows/system32.  The winbacula.nsi.in
64   and pebuilder Makefile.in files have this hard coded in.
65 - We are using Microsoft Visual Studio .NET 2003.
66 - Make sure nmake is on your PATH.
67 - Make sure your COMSPEC is properly setup (see full dump of
68   my cygwin environment below).
69 - The build is done in an rxvt window under the latest version
70   of cygwin.
71 - You need the Platform SDK installed.
72 - You need Visual Studio installed.
73 - You need to load depkgs-win32, then
74     (make the two patches described below to in Nicolas' notes to wx)
75     cd depkgs-win32
76     make
77     (after building zlib and pthreads, it fails in wx)
78     cd wx
79     ./configure
80     make
81     (if it succeeds skip the next item, otherwise do it) 
82 - You may have to build wx with VC++.
83   After starting VC++, use File->Open Workspace then
84   open wx/src/wxWindows.dsw then use
85   Build->Build All or Build->build wxmsw.lib should work too.
86 - cd bacula
87   ./configure --enable-client-only
88   cd src/win32
89 - ensure that the docs are copied into docs at the bacula
90   directory level.
91   make
92
93 Here is the script that I use under cygwin to build it:
94 ==== build script =========
95 #!/bin/sh
96 cd bacula
97 mkdir -p src/win32/compat/vss
98 cp -a c:/Program\ Files/Microsoft/VSSSDK71/inc src/win32/compat/vss
99 cp -a c:/Program\ Files/Microsoft/VSSSDK71/lib src/win32/compat/vss
100 ./configure \
101   --enable-client-only \
102   --sbindir=/bacula/bin \
103   --sysconfdir=/bacula/bin \
104   --enable-smartalloc \
105   --enable-static-tools \
106   --with-working-dir=/bacula/working \
107   --with-pid-dir=/bacula/working \
108   --with-subsys-dir=/bacula/working
109 rm -rf docs
110 cp -a ../docs .
111 cd src/win32
112 make
113 VERSION=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ../version.h`
114 cp -pf winbacula-$VERSION.exe k:/home/kern/bacula/winbacula-vss-$VERSION.exe
115 if test $? = 0 ; then
116   echo "winbacula-$VERSION.exe copied to k:/home/kern/bacula/winbacula-vss-$VERSION.exe"
117 else
118   echo "Build failed ..."
119 fi
120 ======== end build script ==============
121
122
123 See License.txt for the License.
124
125 The native Win32 interface code was written by:
126
127    Christopher S. Hull, February 2004
128
129
130 For more details of building wx, see depkgs-win32/wx/docs/msw/install.txt
131
132 The easiest way to build this is to have a Visual Studio .NET 2003
133 However, you can use the free Microsoft C++ compiler with a bit
134 of additional work.
135
136 Here are additional pointers on building wx-console supplied by Nicolas
137 Boichat:
138
139
140 Tools I used (I think the 3 first one are included in VStudio) :
141 - VC++ toolkit : http://msdn.microsoft.com/visualc/vctoolkit2003/
142 - Windows Platform SDK :
143    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
144    (Core SDK and Internet Development SDK)
145 - nmake (it got it with .Net Framework SDK)
146 - lib.exe found in the SDK-base/Bin/win64 directory (works fine
147   on a 32 bit Windows).
148
149 Instructions if you want to build wx-console :
150 - wxWidgets 2.4.2 compilation
151   + In include/wx/string.h, replace line 195 by
152       #if defined(__VISUALC__) // && defined(_MT) && !defined(_DLL)
153   + In src/common/string.cpp, replace line 167 by
154       #if defined(__VISUALC__) // && defined(_MT) && !defined(_DLL)
155   + Follow the instructions in docs/msw/install.txt
156      (Visual C++ 6.0 compilation - Using makefiles)
157
158 - Make sure that the environment variables are set as:
159   - PATH includes the directories bin of both the C++ Toolkit and the SDK
160   - INCLUDE includes the directories include of both the C++ Toolkit and the SDK
161   - LIB includes the directories Lib of both the C++ Toolkit and the SDK
162     
163 - Compile bacula depkg-win32 with Visual Studio or try the
164   supplied makefiles as described in the doc. I could not
165   get this to work -- kes.
166
167 - Compile wx-console with nmake -f wx-console.mak in
168   src/win32/wx-console  I could not get this to work
169   kes.
170
171 - Additional information on using the free Micrsosoft C++ see
172   http://sapdb.2scale.net/moin.cgi/MS_20C_2b_2b_20Toolkit
173
174 NOTE! I (Kern) cannot build wxWindows with the Makefile until after
175 I do a ./configure.  I can use VC Studio directly to do so
176 following their instructions. Open VC Studio on the project
177 file depkgs-win32/wx/src/WxWindows.vcproj.  Then build it.
178 Make sure you have selected the Release Unicode version under
179 menu->Build->Configuration Manager.  It will create the file:
180 depkgs-win32/wx/lib/wxmswu.lib. At that point, you have
181 what you need to build wx-console.
182
183 Note, the paths given below have changed now that we switched
184 to Microsoft Visual Studio .NET 2003 (VC++ 7.1).
185
186 Getting all the environment variables setup properly is not always so obvious.
187 Here is what I have when I do a "set" in a rxvt window, in which I build
188 Bacula. Probably what is important are INCLUDE, LIB, PATH, and WXWIN, but note
189 there are a zillion other things set:
190 !::='::\'
191 !C:='C:\cygwin\home\kern'
192 ALLUSERSPROFILE='C:\Documents and Settings\All Users'
193 APPDATA='C:\Documents and Settings\kern\Application Data'
194 BASEMAKE='C:\Program Files\Microsoft SDK\Include\BKOffice.Mak'
195 BASH=/usr/bin/bash
196 BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i686-pc-cygwin")
197 BASH_VERSION='2.05b.0(1)-release'
198 BKOFFICE='C:\Program Files\Microsoft SDK\.'
199 CLIENTNAME=Console
200 COLORFGBG='0;default;15'
201 COLORTERM=rxvt-xpm
202 COLUMNS=70
203 COMMONPROGRAMFILES='C:\Program Files\Common Files'
204 COMPUTERNAME=TIBS
205 COMSPEC='C:\WINDOWS\system32\cmd.exe'
206 CYGWIN=notty
207 DIRSTACK=()
208 DISPLAY=:0
209 EDHELP=/home/kern/bin/ed.hlp
210 EDTRM=/home/kern/bin/ed.trm
211 EUID=1007
212 GROUPS=()
213 HISTFILE=/cygdrive/c/home/kern/.bash_history
214 HISTFILESIZE=500
215 HISTSIZE=500
216 HOME=/cygdrive/c/home/kern
217 HOMEDRIVE=C:
218 HOMEPATH='\Documents and Settings\kern'
219 HOSTNAME=Tibs
220 HOSTTYPE=i686
221 IFS=$' \t\n'
222 INCLUDE='C:\Program Files\Microsoft SDK\Include\.;C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include'
223 INETSDK='C:\Program Files\Microsoft SDK\.'
224 LIB='C:\Program Files\Microsoft SDK\Lib\.;C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib'
225 LINES=65
226 LOGONSERVER='\\TIBS'
227 MACHTYPE=i686-pc-cygwin
228 MAILCHECK=60
229 MAKE_MODE=UNIX
230 MOZILLA_HOME=/home/netscape
231 MSDEVDIR='C:\Program Files\Microsoft Visual Studio\Common\MSDev98'
232 MSSDK='C:\Program Files\Microsoft SDK\.'
233 MSTOOLS='C:\Program Files\Microsoft SDK\.'
234 NUMBER_OF_PROCESSORS=1
235 OLDPWD=/home/kern/bacula
236 OPTERR=1
237 OPTIND=1
238 OS=Windows_NT
239 OSTYPE=cygwin
240 PATH='/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/Bin:/cygdrive/c/Program Files/Microsoft Visual Studio/VC98:/cygdrive/c/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin:/cygdrive/c/Program Files/Microsoft Visual Studio/Common/Tools/WinNT:/cygdrive/c/Program Files/Microsoft Visual Studio/Common/Tools:c:/cygwin/bin:/usr/bin:/home/kern/bin:/sbin:/usr/sbin:'
241 PATHEXT='.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH'
242 PIPESTATUS=([0]="0")
243 PPID=3864
244 PROCESSOR_ARCHITECTURE=x86
245 PROCESSOR_IDENTIFIER='x86 Family 15 Model 2 Stepping 7, GenuineIntel'
246 PROCESSOR_LEVEL=15
247 PROCESSOR_REVISION=0207
248 PROGRAMFILES='C:\Program Files'
249 PROMPT='$P$G'
250 PS1='\e[34m\]\w\[\e[0m\]$\040'
251 PS2='> '
252 PS4='+ '
253 PWD=/home/kern
254 SESSIONNAME=Console
255 SHELL=/bin/bash
256 SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
257 SHLVL=1
258 SYSTEMDRIVE=C:
259 SYSTEMROOT='C:\WINDOWS'
260 TEMP=/cygdrive/c/DOCUME~1/kern/LOCALS~1/Temp
261 TERM=xterm
262 TMP=/cygdrive/c/DOCUME~1/kern/LOCALS~1/Temp
263 UID=1007
264 USERDOMAIN=TIBS
265 USERNAME=kern
266 USERPROFILE='C:\Documents and Settings\kern'
267 WINDIR='C:\WINDOWS'
268 WINDOWID=168050736
269 WXWIN='c:\home\kern\bacula\depkgs-win32\wx'
270 _=set