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