172
|
1 |
|
|
2 |
Using a Borland compiler product
|
|
3 |
|
|
4 |
The files in this directory support using both the free Borland command-line
|
|
5 |
compiler tools and the Borland C++ Builder IDE. The project files have been
|
|
6 |
tested with both versions 5 and 6 of the C++ Builder product.
|
|
7 |
|
|
8 |
Using the free BCC32 command line compiler
|
|
9 |
|
|
10 |
After downloading and installing the free C++ Builder commandline version,
|
|
11 |
perform the following steps (assuming it was installed under C:\Borland\BCC55):
|
|
12 |
|
|
13 |
1) Add "C:\Borland\BCC55\BIN" to your path
|
|
14 |
2) Set the environment variable BCB to "C:\Borland\BCC55".
|
|
15 |
3) edit makefile.mak: enable or comment out the appropriate commands under
|
|
16 |
clean & distclean, depending on whether your OS can use deltree /y or
|
|
17 |
del /s/f/q.
|
|
18 |
|
|
19 |
After that, you should simply cd to the bcb5 directory in your Expat directory
|
|
20 |
tree (same structure as CVS) and run "make all" or just "make".
|
|
21 |
|
|
22 |
Naming
|
|
23 |
|
|
24 |
The libraries have the base name "libexpat" followed optionally by an "s"
|
|
25 |
(static) or a "w" (unicode version), then an underscore and optionally
|
|
26 |
"mt" (multi-threaded) and "d" (dynamic RTL).
|
|
27 |
|
|
28 |
To change the name of the library a project file produces, edit the project
|
|
29 |
option source (see step 1 under Unicode below) and change the name contained in
|
|
30 |
the PROJECT tag. In a make file, change the value assigned to the PROJECT
|
|
31 |
variable. Also, the LIBRARY entry in the .def file has to be changed to
|
|
32 |
correspond to the new executable name.
|
|
33 |
|
|
34 |
|
|
35 |
Unicode Considerations
|
|
36 |
|
|
37 |
There are no facilities in the BCB 5 GUI to create a unicode-enabled
|
|
38 |
application. Fortunately, it is not hard to do by hand.
|
|
39 |
|
|
40 |
1. The startup .obj system file must be changed to the unicode version.
|
|
41 |
Go to Project|Edit Option Source, and scroll down to the ALLOBJ tag. Change
|
|
42 |
c0x32.obj to c0x32w.obj. Editing this file can be quirky, but usually the
|
|
43 |
following kludge will make the change stick. Close and save the file
|
|
44 |
(CTRL-F4) then open the options dialog (CTRL-Shift-F11), then click OK on
|
|
45 |
the dialog immediately without changing anything in it. If this doesn't work,
|
|
46 |
you will have to close the project completely and edit the .bpr file by hand.
|
|
47 |
|
|
48 |
If you are using a make file, just change the startup .obj file assigned
|
|
49 |
to the ALLOBJ variable.
|
|
50 |
|
|
51 |
2. Add the macro define XML_UNICODE_WCHAR_T. In the GUI that goes in the options
|
|
52 |
dialog, Directories/Conditionals tab, in the Conditional define box. In a
|
|
53 |
make file, put it in the USERDEFINES variable.
|
|
54 |
|
|
55 |
3. Of course, your code has to be written for unicode. As a start, the "main"
|
|
56 |
function is called "wmain". The tchar macros are an interesting way to
|
|
57 |
write code that can easily switch between unicode and utf-8. If these macros
|
|
58 |
are used, then simply adding the conditional define _UNICODE as well as
|
|
59 |
XML_UNICODE_WCHAR_T will bring in the unicode versions of the tchar macros.
|
|
60 |
Otherwise the utf-8 versions are used. xmlwf uses its own versions of the
|
|
61 |
tchar macros which are switched on and off by the XML_UNICODE macro, which
|
|
62 |
itself is set by the XML_UNICODE_WCHAR_T define.
|
|
63 |
|
|
64 |
Threading
|
|
65 |
|
|
66 |
The libexpat libraries are all built to link with the multi-threaded dynamic RTL's.
|
|
67 |
That means they require CC32xxMT.DLL present on the installation target.
|
|
68 |
To create single-threaded libs, do the following:
|
|
69 |
|
|
70 |
1. The compiler option for multi-threading must be turned off. Following the
|
|
71 |
instructions above to edit the option source, remove the -tWM option from
|
|
72 |
the CFLAG1 tag. In a make file, remove it from the CFLAG1 variable.
|
|
73 |
|
|
74 |
2. The single threaded RTL must be called. change the RTL in the ALLLIB tag or
|
|
75 |
variable (GUI or makefile repectively) to the version without the "mt" in the
|
|
76 |
name. For example, change cw32mti.lib to cw32i.lib.
|
|
77 |
|
|
78 |
Static RTL's
|
|
79 |
|
|
80 |
To build the libs with static RTL's do the following,
|
|
81 |
|
|
82 |
1. For the static expatlibs, in the Tlib tab on the options dialog, uncheck the
|
|
83 |
"Use dynamic RTL" box. For the dynamic expatlibs, in the Linker tab on the
|
|
84 |
options dialog, uncheck "Use dynamic RTL". If you are using a make file,
|
|
85 |
remove the _RTLDLL assignment to the SYSDEFINES variable, and change the RTL
|
|
86 |
to the version without an "i" in the ALLLIB variable. For example,
|
|
87 |
cw32mti.lib would become cw32mt.lib.
|