Home | History | Annotate | Download | only in win32
      1 
      2                              Windows port
      3                              ============
      4 
      5 This directory contains the files required to build this software on the
      6 native Windows platform. This is not a place to look for help if you are
      7 using a POSIX emulator, such as Cygwin. Check the Unix instructions for 
      8 that.
      9 
     10 
     11 
     12 CONTENTS
     13 ========
     14 
     15 1. General
     16    1.1 Building From the Command-Line
     17    1.2 Configuring The Source
     18    1.3 Compiling
     19    1.4 Installing
     20 
     21 2. Compiler Specifics
     22    2.1 Microsoft Visual C/C++
     23    2.1 GNU C/C++, Mingw Edition
     24    2.2 Borland C++ Builder
     25        2.2.1 Building with iconv support
     26 	   2.2.2 Compatability problems with MSVC (and probably CYGWIN)
     27 	   2.2.3 Other caveats
     28 
     29 
     30 
     31 
     32 1. General
     33 ==========
     34 
     35 
     36 1.1 Building From The Command-Line
     37 ----------------------------------
     38 
     39 This is the easiest, preferred and currently supported method. It can
     40 be that a subdirectory of the directory where this file resides 
     41 contains project files for some IDE. If you want to use that, please
     42 refer to the readme file within that subdirectory.
     43 
     44 In order to build from the command-line you need to make sure that
     45 your compiler works from the command line. This is not always the
     46 case, often the required environment variables are missing. If you are
     47 not sure, test if this works first. If it doesn't, you will first have
     48 to configure your compiler suite to run from the command-line - please
     49 refer to your compiler's documentation regarding that.
     50 
     51 The first thing you want to do is configure the source. You can have
     52 the configuration script do this automatically for you. The
     53 configuration script is written in JScript, a Microsoft's
     54 implementation of the ECMA scripting language. Almost every Windows
     55 machine can execute this through the Windows Scripting Host. If your
     56 system lacks the ability to execute JScript for some reason, you must
     57 perform the configuration manually and you are on your own with that.
     58 
     59 The second step is compiling the source and, optionally, installing it
     60 to the location of your choosing.
     61 
     62 
     63 1.2 Configuring The Source
     64 --------------------------
     65 
     66 The configuration script accepts numerous options. Some of these
     67 affect features which will be available in the compiled software,
     68 others affect the way the software is built and installed. To see a
     69 full list of options supported by the configuration script, run
     70 
     71   cscript configure.js help
     72 
     73 from the win32 subdirectory. The configuration script will present you
     74 the options it accepts and give a biref explanation of these. In every
     75 case you will have two sets of options. The first set is specific to
     76 the software you are building and the second one is specific to the
     77 Windows port.
     78 
     79 Once you have decided which options suit you, run the script with that
     80 options. Here is an example:
     81 
     82   cscript configure.js compiler=msvc prefix=c:\opt 
     83     include=c:\opt\include lib=c:\opt\lib debug=yes
     84 
     85 The previous example will configure the process to use the Microsoft's
     86 compiler, install the library in c:\opt, use c:\opt\include and 
     87 c:\opt\lib as additional search paths for the compiler and the linker 
     88 and build executables with debug symbols.
     89 
     90 Note: Please do not use path names which contain spaces. This will
     91 fail. Allowing this would require me to put almost everything in the
     92 Makefile in quotas and that looks quite ugly with my
     93 syntax-highlighting engine. If you absolutely must use spaces in paths
     94 send me an email and tell me why. If there are enough of you out there
     95 who need this, or if a single one has a very good reason, I will
     96 modify the Makefile to allow spaces in paths.
     97 
     98 
     99 1.3 Compiling
    100 -------------
    101 
    102 After the configuration stage has been completed, you want to build
    103 the software. You will have to use the make tool which comes with
    104 your compiler. If you, for example, configured the source to build
    105 with Microsoft's MSVC compiler, you would use the NMAKE utility. If
    106 you configured it to build with GNU C compiler, mingw edition, you
    107 would use the GNU make. Assuming you use MSVC, type
    108 
    109   nmake /f Makefile.msvc
    110 
    111 and if you use MinGW, you would type
    112 
    113   make -f Makefile.mingw
    114 
    115 and if you use Borland's compiler, you would type
    116 
    117   bmake -f Makefile.bcb
    118 
    119 in the win32 subdirectory. When the building completes, you will find
    120 the executable files in win32\bin.* directory, where * stands for the
    121 name of the compiler you have used.
    122 
    123 
    124 1.4 Installing
    125 --------------
    126 
    127 You can install the software into the directory you specified to the
    128 configure script during the configure stage by typing (with MSVC in
    129 this example)
    130 
    131   nmake /f Makefile.msvc install
    132 
    133 That would be it, enjoy.
    134 
    135 
    136 
    137 
    138 
    139 2. Compiler Specifics
    140 =====================
    141 
    142 
    143 2.1 Microsoft Visual C/C++
    144 --------------------------
    145 
    146 If you use the compiler which comes with Visual Studio .NET, note that
    147 it will link to its own C-runtime named msvcr70.dll or msvcr71.dll. This 
    148 file is not available on any machine which doesn't have Visual Studio 
    149 .NET installed.
    150 
    151 
    152 2.2 GNU C/C++, Mingw edition
    153 ----------------------------
    154 
    155 When specifying paths to configure.js, please use slashes instead of 
    156 backslashes for directory separation. Sometimes Mingw needs this. If
    157 this is the case, and you specify backslashes, then the compiler will 
    158 complain about not finding necessary header files.
    159 
    160 
    161 2.2 Borland C++ Builder
    162 -----------------------
    163 
    164 To compile libxml2 with the BCB6 compiler and associated tools, just follow
    165 the basic instructions found in this file file. Be sure to specify 
    166 the "compiler=bcb" option when running the configure script. To compile the
    167 library and test programs, just type
    168 
    169   make -fMakefile.bcb
    170 
    171 That should be all that's required. But there are a few other things to note:
    172 
    173 2.2.1 Building with iconv support
    174 
    175 If you configure libxml2 to include iconv support, you will obviously need to
    176 obtain the iconv library and include files. To get them, just follow the links 
    177 at http://www.gnu.org/software/libiconv/ - there are pre-compiled Win32 
    178 versions available, but note that these where built with MSVC. Hence the 
    179 supplied import library is in COFF format rather than OMF format. You can 
    180 convert this library by using Borland's COFF2OMF utility, or use IMPLIB to 
    181 build a new import library from the DLL. Alternatively, it is possible to
    182 obtain the iconv source, and build the DLL using the Borland compiler.
    183 
    184 There is a minor problem with the header files for iconv - they expect a
    185 macro named "EILSEQ" in errno.h, but this is not defined in the Borland
    186 headers, and its absence can cause problems. To circumvent this problem, I
    187 define EILSEQ=2 in Makefile.bcb. The value "2" is the value for ENOFILE (file
    188 not found). This should not have any disastrous side effects beyond possibly
    189 displaying a misleading error message in certain situations.
    190 
    191 2.2.2 Compatability problems with MSVC (and probably CYGWIN)
    192 
    193 A libxml2 DLL generated by BCB is callable from MSVC programs, but there is a
    194 minor problem with the names of the symbols exported from the library. The
    195 Borland compiler, by default, prepends an underscore character to global 
    196 identifiers (functions and global variables) when generating object files.
    197 Hence the function "xmlAddChild" is added to the DLL with the name
    198 "_xmlAddChild". The MSVC compiler does not have this behaviour, and looks for
    199 the unadorned name. I currently circumvent this problem by writing a .def file
    200 which causes BOTH the adorned and unadorned names to be exported from the DLL.
    201 This behaviour may not be supported in the future.
    202 
    203 An even worse problem is that of generating an import library for the DLL. The
    204 Borland-generated DLL is in OMF format. MSVC expects libraries in COFF format,
    205 but they don't provide a "OMF2COFF" utility, or even the equivalent of
    206 Borland's IMPLIB utility. But it is possible to create an import lib from the
    207 .def file, using the command:
    208   LIB /DEF:libxml2.def
    209 
    210 If you don't have the .def file, it's possible to create one manually. Use
    211 DUMPBIN /EXPORTS /OUT:libxml2.tmp libxml2.dll to get a list of the exported
    212 names, and edit this into .def file format.
    213 
    214 A similar problem is likely with Cygwin.
    215 
    216 2.2.3 Other caveats
    217 
    218 We have tested this only with BCB6, Professional Edition, and BCB 5.5 free
    219 command-line tools.
    220 
    221 
    222 
    223 Authors: Igor Zlatkovic <igor (a] zlatkovic.com>
    224          Eric Zurcher <Eric.Zurcher (a] csiro.au>
    225 
    226 
    227