]>
Commit | Line | Data |
---|---|---|
5e9f2524 VS |
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 with the multi-threaded dynamic RTL's. | |
67 | To create single-threaded libs, do the following: | |
68 | ||
69 | 1. The compiler option for multi-threading must be turned off. Following the | |
70 | instructions above to edit the option source, remove the -tWM option from | |
71 | the CFLAG1 tag. In a make file, remove it from the CFLAG1 variable. | |
72 | ||
73 | 2. The single threaded RTL must be called. change the RTL in the ALLLIB tag or | |
74 | variable (GUI or makefile repectively) to the version without the "mt" in the | |
75 | name. For example, change cw32mti.lib to cw32i.lib. | |
76 | ||
77 | Static RTL's | |
78 | ||
79 | To build the libs with static RTL's do the following, | |
80 | ||
81 | 1. For the static expatlibs, in the Tlib tab on the options dialog, uncheck the | |
82 | "Use dynamic RTL" box. For the dynamic expatlibs, in the Linker tab on the | |
83 | options dialog, uncheck "Use dynamic RTL". If you are using a make file, | |
84 | remove the _RTLDLL assignment to the SYSDEFINES variable, and change the RTL | |
85 | to the version without an "i" in the ALLLIB variable. For example, | |
86 | cw32mti.lib would become cw32mt.lib. |