|
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. |