Commit 4f928215 authored by Igor Zlatkovic's avatar Igor Zlatkovic
Browse files

modified for compiler coexistence, added xmlwriter, added cruntime option

parent b23de5ad
......@@ -15,52 +15,16 @@
# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
#
AUTOCONF = .\config.bcb
# Extra setting to control whether to use dynamic or static Borland runtime.
# Set to "1" to use static RTL, anything else to use dynamic RTL
STATIC_RTL = 0
# If you cannot run the configuration script, which would take the burden of
# editing this file from your back, then remove the following line...
!include $(AUTOCONF)
# ...and enable the following lines and adapt them to your environment.
#XML_SRCDIR = ..
#UTILS_SRCDIR = ..
#BINDIR = binaries
#LIBXML_MAJOR_VERSION = 0 # set this to the right value.
#LIBXML_MINOR_VERSION = 0 # set this to the right value.
#LIBXML_MICRO_VERSION = 0 # set this to the right value.
#WITH_TRIO = 0
#WITH_THREADS = 0
#WITH_FTP = 1
#WITH_HTTP = 1
#WITH_HTML = 1
#WITH_C14N = 1
#WITH_CATALOG = 1
#WITH_DOCB = 1
#WITH_XPATH = 1
#WITH_XPTR = 1
#WITH_XINCLUDE = 1
#WITH_ICONV = 1
#WITH_ZLIB = 0
#WITH_DEBUG = 1
#WITH_MEM_DEBUG = 0
#WITH_SCHEMAS = 1
#DEBUG = 0
#STATIC = 0
#PREFIX = . # set this to the right value.
#BINPREFIX = $(PREFIX)\bin
#INCPREFIX = $(PREFIX)\include
#LIBPREFIX = $(PREFIX)\lib
#SOPREFIX = $(PREFIX)\lib
#INCLUDE = $(INCLUDE);$(INCPREFIX)
#LIB = $(LIB);$(LIBPREFIX)
# There should never be a need to modify anything below this line.
# ----------------------------------------------------------------
AUTOCONF = .\config.bcb
!include $(AUTOCONF)
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
......@@ -76,9 +40,10 @@ XML_A = $(XML_BASENAME)_a.lib
DUMMY = dir.exists
# Place where we let the compiler put its intermediate trash.
XML_INTDIR = $(XML_BASENAME).int
XML_INTDIR_A = $(XML_BASENAME)_a.int
UTILS_INTDIR = utils.int
BINDIR = bin.bcb
XML_INTDIR = int.bcb
XML_INTDIR_A = int.a.bcb
UTILS_INTDIR = int.utils.bcb
# The preprocessor and its options.
CPP = cpp32.exe -P- -DWIN32
......@@ -184,6 +149,7 @@ XML_OBJS = $(XML_INTDIR)\c14n.obj\
$(XML_INTDIR)\xmlschemas.obj\
$(XML_INTDIR)\xmlschemastypes.obj\
$(XML_INTDIR)\xmlunicode.obj\
$(XML_INTDIR)\xmlwriter.obj\
$(XML_INTDIR)\xpath.obj\
$(XML_INTDIR)\xpointer.obj
......@@ -223,6 +189,7 @@ XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
$(XML_INTDIR_A)\xmlschemas.obj\
$(XML_INTDIR_A)\xmlschemastypes.obj\
$(XML_INTDIR_A)\xmlunicode.obj\
$(XML_INTDIR_A)\xmlwriter.obj\
$(XML_INTDIR_A)\xpath.obj\
$(XML_INTDIR_A)\xpointer.obj
......
......@@ -12,48 +12,11 @@
#
# November 2002, Igor Zlatkovic <igor@zlatkovic.com>
AUTOCONF = .\config.mingw
# If you cannot run the configuration script, which would take the burden of
# editing this file from your back, then remove the following line...
include $(AUTOCONF)
# ...and enable the following lines and adapt them to your environment.
#XML_SRCDIR = ..
#UTILS_SRCDIR = ..
#BINDIR = binaries
#LIBXML_MAJOR_VERSION = 0 # set this to the right value.
#LIBXML_MINOR_VERSION = 0 # set this to the right value.
#LIBXML_MICRO_VERSION = 0 # set this to the right value.
#WITH_TRIO = 0
#WITH_THREADS = 0
#WITH_FTP = 1
#WITH_HTTP = 1
#WITH_HTML = 1
#WITH_C14N = 1
#WITH_CATALOG = 1
#WITH_DOCB = 1
#WITH_XPATH = 1
#WITH_XPTR = 1
#WITH_XINCLUDE = 1
#WITH_ICONV = 1
#WITH_ZLIB = 0
#WITH_DEBUG = 1
#WITH_MEM_DEBUG = 0
#WITH_SCHEMAS = 1
#DEBUG = 0
#STATIC = 0
#PREFIX = . # set this to the right value.
#BINPREFIX = $(PREFIX)\bin
#INCPREFIX = $(PREFIX)\include
#LIBPREFIX = $(PREFIX)\lib
#SOPREFIX = $(PREFIX)\lib
#INCLUDE += ;$(INCPREFIX)
#LIB += ;$(LIBPREFIX)
# There should never be a need to modify anything below this line.
# ----------------------------------------------------------------
AUTOCONF = .\config.mingw
include $(AUTOCONF)
# Names of various input and output components.
XML_NAME = xml2
......@@ -62,10 +25,11 @@ XML_SO = $(XML_BASENAME).dll
XML_IMP = $(XML_BASENAME).lib
XML_A = $(XML_BASENAME).a
# Place where we let the compiler put its intermediate trash.
XML_INTDIR = $(XML_BASENAME).int
XML_INTDIR_A = $(XML_BASENAME)_a.int
UTILS_INTDIR = utils.int
# Place where we let the compiler put its output.
BINDIR = bin.mingw
XML_INTDIR = int.mingw
XML_INTDIR_A = int.a.mingw
UTILS_INTDIR = int.utils.mingw
# The preprocessor and its options.
CPP = gcc.exe -E
......@@ -171,6 +135,7 @@ XML_OBJS = $(XML_INTDIR)/c14n.o\
$(XML_INTDIR)/xmlschemas.o\
$(XML_INTDIR)/xmlschemastypes.o\
$(XML_INTDIR)/xmlunicode.o\
$(XML_INTDIR)/xmlwriter.o\
$(XML_INTDIR)/xpath.o\
$(XML_INTDIR)/xpointer.o
......@@ -212,6 +177,7 @@ XML_OBJS_A = $(XML_INTDIR_A)/c14n.o\
$(XML_INTDIR_A)/xmlschemas.o\
$(XML_INTDIR_A)/xmlschemastypes.o\
$(XML_INTDIR_A)/xmlunicode.o\
$(XML_INTDIR_A)/xmlwriter.o\
$(XML_INTDIR_A)/xpath.o\
$(XML_INTDIR_A)/xpointer.o
......
......@@ -12,48 +12,11 @@
#
# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
AUTOCONF = .\config.msvc
# If you cannot run the configuration script, which would take the burden of
# editing this file from your back, then remove the following line...
!include $(AUTOCONF)
# ...and enable the following lines and adapt them to your environment.
#XML_SRCDIR = ..
#UTILS_SRCDIR = ..
#BINDIR = binaries
#LIBXML_MAJOR_VERSION = 0 # set this to the right value.
#LIBXML_MINOR_VERSION = 0 # set this to the right value.
#LIBXML_MICRO_VERSION = 0 # set this to the right value.
#WITH_TRIO = 0
#WITH_THREADS = 0
#WITH_FTP = 1
#WITH_HTTP = 1
#WITH_HTML = 1
#WITH_C14N = 1
#WITH_CATALOG = 1
#WITH_DOCB = 1
#WITH_XPATH = 1
#WITH_XPTR = 1
#WITH_XINCLUDE = 1
#WITH_ICONV = 1
#WITH_ZLIB = 0
#WITH_DEBUG = 1
#WITH_MEM_DEBUG = 0
#WITH_SCHEMAS = 1
#DEBUG = 0
#STATIC = 0
#PREFIX = . # set this to the right value.
#BINPREFIX = $(PREFIX)\bin
#INCPREFIX = $(PREFIX)\include
#LIBPREFIX = $(PREFIX)\lib
#SOPREFIX = $(PREFIX)\lib
#INCLUDE = $(INCLUDE);$(INCPREFIX)
#LIB = $(LIB);$(LIBPREFIX)
# There should never be a need to modify anything below this line.
# ----------------------------------------------------------------
AUTOCONF = .\config.msvc
!include $(AUTOCONF)
# Names of various input and output components.
XML_NAME = xml2
......@@ -63,10 +26,11 @@ XML_IMP = $(XML_BASENAME).lib
XML_DEF = $(XML_BASENAME).def
XML_A = $(XML_BASENAME)_a.lib
# Place where we let the compiler put its intermediate trash.
XML_INTDIR = $(XML_BASENAME).int
XML_INTDIR_A = $(XML_BASENAME)_a.int
UTILS_INTDIR = utils.int
# Place where we let the compiler put its output.
BINDIR = bin.msvc
XML_INTDIR = int.msvc
XML_INTDIR_A = int.a.msvc
UTILS_INTDIR = int.utils.msvc
# The preprocessor and its options.
CPP = cl.exe /EP
......@@ -77,7 +41,7 @@ CPPFLAGS = $(CPPFLAGS) /D "_REENTRANT"
# The compiler and its options.
CC = cl.exe
CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /W1 /MD
CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /W1 $(CRUNTIME)
CFLAGS = $(CFLAGS) /I$(XML_SRCDIR) /I$(XML_SRCDIR)\include /I$(INCPREFIX)
!if "$(WITH_THREADS)" != "no"
CFLAGS = $(CFLAGS) /D "_REENTRANT"
......@@ -160,6 +124,7 @@ XML_OBJS = $(XML_INTDIR)\c14n.obj\
$(XML_INTDIR)\xmlschemas.obj\
$(XML_INTDIR)\xmlschemastypes.obj\
$(XML_INTDIR)\xmlunicode.obj\
$(XML_INTDIR)\xmlwriter.obj\
$(XML_INTDIR)\xpath.obj\
$(XML_INTDIR)\xpointer.obj
......@@ -199,6 +164,7 @@ XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
$(XML_INTDIR_A)\xmlschemas.obj\
$(XML_INTDIR_A)\xmlschemastypes.obj\
$(XML_INTDIR_A)\xmlunicode.obj\
$(XML_INTDIR_A)\xmlwriter.obj\
$(XML_INTDIR_A)\xpath.obj\
$(XML_INTDIR_A)\xpointer.obj
......
......@@ -79,13 +79,13 @@ Windows port.
Once you have decided which options suit you, run the script with that
options. Here is an example:
cscript configure.js prefix=c:\opt include=c:\opt\include
lib=c:\opt\lib debug=yes
cscript configure.js compiler=msvc prefix=c:\opt
include=c:\opt\include lib=c:\opt\lib debug=yes
The previous example will configure the process to install the library
in c:\opt, use c:\opt\include and c:\opt\lib as additional search
paths for the compiler and the linker and build executables with debug
symbols.
The previous example will configure the process to use the Microsoft's
compiler, install the library in c:\opt, use c:\opt\include and
c:\opt\lib as additional search paths for the compiler and the linker
and build executables with debug symbols.
Note: Please do not use path names which contain spaces. This will
fail. Allowing this would require me to put almost everything in the
......@@ -106,19 +106,29 @@ with Microsoft's MSVC compiler, you would use the NMAKE utility. If
you configured it to build with GNU C compiler, mingw edition, you
would use the GNU make. Assuming you use MSVC, type
nmake
nmake /f Makefile.msvc
and if you use MinGW, you would type
make -f Makefile.mingw
and if you use Borland's compiler, you would type
bmake -f Makefile.bcb
in the win32 subdirectory. When the building completes, you will find
the executable files in win32\binaries directory.
the executable files in win32\bin.* directory, where * stands for the
name of the compiler you have used.
1.4 Installing
--------------
You can install the software into the directory you specified to the
configure script during the configure stage by typing
configure script during the configure stage by typing (with MSVC in
this example)
nmake install
nmake /f Makefile.msvc install
That would be it, enjoy.
......@@ -134,8 +144,9 @@ That would be it, enjoy.
--------------------------
If you use the compiler which comes with Visual Studio .NET, note that
it will link to its own C-runtime named msvcr70.dll. This file is not
available on any machine which doesn't have .NET installed.
it will link to its own C-runtime named msvcr70.dll or msvcr71.dll. This
file is not available on any machine which doesn't have Visual Studio
.NET installed.
2.2 GNU C/C++, Mingw edition
......@@ -143,8 +154,8 @@ available on any machine which doesn't have .NET installed.
When specifying paths to configure.js, please use slashes instead of
backslashes for directory separation. Sometimes Mingw needs this. If
this is the case, then 'make install' won't work correctly and you'll
have to install manually.
this is the case, and you specify backslashes, then the compiler will
complain about not finding necessary header files.
2.2 Borland C++ Builder
......@@ -204,7 +215,8 @@ A similar problem is likely with Cygwin.
2.2.3 Other caveats
I have tested this only with BCB6, Professional Edition.
We have tested this only with BCB6, Professional Edition, and BCB 5.5 free
command-line tools.
......
......@@ -10,8 +10,6 @@
/* The source directory, relative to the one where this file resides. */
var srcDirXml = "..";
var srcDirUtils = "..";
/* The directory where we put the binaries after compilation. */
var binDir = "binaries";
/* Base name of what we are building. */
var baseName = "libxml2";
/* Configure file which contains the version and the output file where
......@@ -59,6 +57,7 @@ var withPython = false;
/* Win32 build options. */
var dirSep = "\\";
var compiler = "msvc";
var cruntime = "/MD";
var buildDebug = 0;
var buildStatic = 0;
var buildPrefix = ".";
......@@ -135,6 +134,7 @@ function usage()
txt += " python: Build Python bindings (" + (withPython? "yes" : "no") + ")\n";
txt += "\nWin32 build options, default value given in parentheses:\n\n";
txt += " compiler: Compiler to be used [msvc|mingw|bcb] (" + compiler + ")\n";
txt += " cruntime: C-runtime compiler option (only msvc) (" + cruntime + ")\n";
txt += " debug: Build unoptimised debug executables (" + (buildDebug? "yes" : "no") + ")\n";
txt += " static: Link xmllint statically to libxml2 (" + (buildStatic? "yes" : "no") + ")\n";
txt += " prefix: Base directory for the installation (" + buildPrefix + ")\n";
......@@ -191,7 +191,6 @@ function discoverVersion()
cf.Close();
vf.WriteLine("XML_SRCDIR=" + srcDirXml);
vf.WriteLine("UTILS_SRCDIR=" + srcDirUtils);
vf.WriteLine("BINDIR=" + binDir);
vf.WriteLine("WITH_TRIO=" + (withTrio? "1" : "0"));
vf.WriteLine("WITH_THREADS=" + withThreads);
vf.WriteLine("WITH_FTP=" + (withFtp? "1" : "0"));
......@@ -230,6 +229,7 @@ function discoverVersion()
if (compiler == "msvc") {
vf.WriteLine("INCLUDE=$(INCLUDE);" + buildInclude);
vf.WriteLine("LIB=$(LIB);" + buildLib);
vf.WriteLine("CRUNTIME=" + cruntime);
} else if (compiler == "mingw") {
vf.WriteLine("INCLUDE+=;" + buildInclude);
vf.WriteLine("LIB+=;" + buildLib);
......@@ -468,6 +468,8 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
withPython = strToBool(arg.substring(opt.length + 1, arg.length));
else if (opt == "compiler")
compiler = arg.substring(opt.length + 1, arg.length);
else if (opt == "cruntime")
cruntime = arg.substring(opt.length + 1, arg.length);
else if (opt == "debug")
buildDebug = strToBool(arg.substring(opt.length + 1, arg.length));
else if (opt == "static")
......@@ -605,6 +607,8 @@ txtOut += "\n";
txtOut += "Win32 build configuration\n";
txtOut += "-------------------------\n";
txtOut += " Compiler: " + compiler + "\n";
if (compiler == "msvc")
txtOut += " C-Runtime option: " + cruntime + "\n";
txtOut += " Debug symbols: " + boolToStr(buildDebug) + "\n";
txtOut += " Static xmllint: " + boolToStr(buildStatic) + "\n";
txtOut += " Install prefix: " + buildPrefix + "\n";
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment