2003-08-28 12:34:00 +00:00
# Makefile for libxml2, specific for Windows, BCB6 and Borland make.
#
# Take a look at the beginning and modify the variables to suit your
# environment. Having done that, you can do a
#
# make [all] to build the libxml and the accompanying utilities.
# make clean to remove all compiler output files and return to a
# clean state.
# make rebuild to rebuild everything from scratch. This basically does
# a 'nmake clean' and then a 'nmake all'.
# make install to install the library and its header files.
#
2003-08-29 10:25:39 +00:00
# August 2003, Eric Zurcher <Eric.Zurcher@csiro.au>
2003-08-28 12:34:00 +00:00
# based on the MSVC version of
# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
2003-08-29 10:25:39 +00:00
#
2003-08-28 12:34:00 +00:00
AUTOCONF = .\c onfig.bcb
2003-08-29 10:25:39 +00:00
# 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
2003-08-28 12:34:00 +00:00
# If you cannot run the configuration script, which would take the burden of
# editing this file from your back, then remove the following line...
! i n c l u d e $( 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.
# ----------------------------------------------------------------
! i f ! $ d ( B C B )
BCB = $( MAKEDIR) \. .
! e n d i f
2003-08-29 10:25:39 +00:00
. a u t o d e p e n d
2003-08-28 12:34:00 +00:00
# Names of various input and output components.
XML_NAME = xml2
2003-08-29 10:25:39 +00:00
XML_BASENAME = lib$( XML_NAME)
2003-08-28 12:34:00 +00:00
XML_SO = $( XML_BASENAME) .dll
XML_IMP = $( XML_BASENAME) .lib
XML_DEF = $( XML_BASENAME) .def
XML_A = $( XML_BASENAME) _a.lib
2003-08-29 10:25:39 +00:00
DUMMY = dir.exists
2003-08-28 12:34:00 +00:00
# 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
# The preprocessor and its options.
CPP = cpp32.exe -P- -DWIN32
CPPFLAGS = -I$( XML_SRCDIR) \i nclude
! i f "$(WITH_THREADS)" ! = "no"
CPPFLAGS = $( CPPFLAGS) -D_REENTRANT -D__MT__
! e n d i f
# The compiler and its options.
CC = bcc32.exe
CFLAGS = -q -DWIN32 -D_NO_VCL -D_WINDOWS -D_MBCS -DEILSEQ= 2 -w-
CFLAGS = $( CFLAGS) -I$( XML_SRCDIR) -I$( XML_SRCDIR) \i nclude -I$( INCPREFIX) -I$( INCLUDE)
! i f "$(WITH_THREADS)" ! = "no"
CFLAGS = $( CFLAGS) -D_REENTRANT -tWM
! e n d i f
2003-11-26 20:55:06 +00:00
! i f "$(STATIC_RTL)" ! = "1"
CFLAGS = $( CFLAGS) -D_RTLDLL
! e n d i f
2003-08-28 12:34:00 +00:00
! i f "$(WITH_THREADS)" = = "yes" | | "$(WITH_THREADS)" = = "ctls"
CFLAGS = $( CFLAGS) -DHAVE_WIN32_THREADS -DHAVE_COMPILER_TLS
! e l s e i f "$(WITH_THREADS)" = = "native"
CFLAGS = $( CFLAGS) -DHAVE_WIN32_THREADS
! e l s e i f "$(WITH_THREADS)" = = "posix"
CFLAGS = $( CFLAGS) -DHAVE_PTHREAD_H
! e n d i f
! i f "$(WITH_ZLIB)" = = "1"
CFLAGS = $( CFLAGS) -DHAVE_ZLIB_H
! e n d i f
# The linker and its options.
LD = ilink32.exe
LDFLAGS = -q -U$( LIBXML_MAJOR_VERSION) .$( LIBXML_MINOR_VERSION)
LDFLAGS = $( LDFLAGS) -L$( BINDIR) ; $( LIBPREFIX) ; $( LIB) ; $( BCB) \l ib\P Sdk
LIBS = import32.lib
2003-08-29 10:25:39 +00:00
! i f "$(WITH_THREADS)" ! = "no" & & "$(STATIC_RTL)" = = "1"
LIBS = $( LIBS) cw32mt.lib
! e l i f "$(WITH_THREADS)" ! = "no"
2003-08-28 12:34:00 +00:00
LIBS = $( LIBS) cw32mti.lib
2003-08-29 10:25:39 +00:00
! e l i f "$(STATIC_RTL)" = = "1"
LIBS = $( LIBS) cw32.lib
e l s e
2003-08-28 12:34:00 +00:00
LIBS = $( LIBS) cw32i.lib
! e n d i f
! i f "$(WITH_FTP)" = = "1" | | "$(WITH_HTTP)" = = "1"
LIBS = $( LIBS) wsock32.lib
! e n d i f
! i f "$(WITH_ICONV)" = = "1"
2003-08-29 10:25:39 +00:00
LIBS = $( LIBS) iconvomf.lib
2003-08-28 12:34:00 +00:00
! e n d i f
! i f "$(WITH_ZLIB)" = = "1"
2003-08-29 10:25:39 +00:00
LIBS = $( LIBS) zlibomf.lib
2003-08-28 12:34:00 +00:00
! e n d i f
! i f "$(WITH_THREADS)" = = "posix"
LIBS = $( LIBS) pthreadVC.lib
! e n d i f
# The archiver and its options.
AR = tlib.exe
ARFLAGS = /P64 /0
# Optimisation and debug symbols.
! i f "$(DEBUG)" = = "1"
CFLAGS = $( CFLAGS) -D_DEBUG -Od -v
LDFLAGS = $( LDFLAGS) -v
! e l s e
CFLAGS = $( CFLAGS) -DNDEBUG -O2
LDFLAGS = $( LDFLAGS)
! e n d i f
# Libxml object files.
XML_OBJS = $( XML_INTDIR) \c 14n.obj\
$( XML_INTDIR) \c atalog.obj\
2003-10-21 09:27:57 +00:00
$( XML_INTDIR) \c hvalid.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR) \d ebugXML.obj\
$( XML_INTDIR) \d ict.obj\
$( XML_INTDIR) \D OCBparser.obj\
$( XML_INTDIR) \e ncoding.obj\
$( XML_INTDIR) \e ntities.obj\
$( XML_INTDIR) \e rror.obj\
$( XML_INTDIR) \g lobals.obj\
$( XML_INTDIR) \h ash.obj\
$( XML_INTDIR) \H TMLparser.obj\
$( XML_INTDIR) \H TMLtree.obj\
2003-10-06 08:47:56 +00:00
$( XML_INTDIR) \l egacy.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR) \l ist.obj\
$( XML_INTDIR) \n anoftp.obj\
$( XML_INTDIR) \n anohttp.obj\
$( XML_INTDIR) \p arser.obj\
$( XML_INTDIR) \p arserInternals.obj\
$( XML_INTDIR) \r elaxng.obj\
$( XML_INTDIR) \S AX.obj\
$( XML_INTDIR) \S AX2.obj\
$( XML_INTDIR) \t hreads.obj\
$( XML_INTDIR) \t ree.obj\
$( XML_INTDIR) \u ri.obj\
$( XML_INTDIR) \v alid.obj\
$( XML_INTDIR) \x include.obj\
$( XML_INTDIR) \x link.obj\
$( XML_INTDIR) \x mlIO.obj\
$( XML_INTDIR) \x mlmemory.obj\
$( XML_INTDIR) \x mlreader.obj\
$( XML_INTDIR) \x mlregexp.obj\
$( XML_INTDIR) \x mlschemas.obj\
$( XML_INTDIR) \x mlschemastypes.obj\
$( XML_INTDIR) \x mlunicode.obj\
$( XML_INTDIR) \x path.obj\
$( XML_INTDIR) \x pointer.obj
# Static libxml object files.
XML_OBJS_A = $( XML_INTDIR_A) \c 14n.obj\
$( XML_INTDIR_A) \c atalog.obj\
2003-10-21 09:27:57 +00:00
$( XML_INTDIR_A) \c hvalid.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR_A) \d ebugXML.obj\
$( XML_INTDIR_A) \d ict.obj\
$( XML_INTDIR_A) \D OCBparser.obj\
$( XML_INTDIR_A) \e ncoding.obj\
$( XML_INTDIR_A) \e ntities.obj\
$( XML_INTDIR_A) \e rror.obj\
$( XML_INTDIR_A) \g lobals.obj\
$( XML_INTDIR_A) \h ash.obj\
$( XML_INTDIR_A) \H TMLparser.obj\
$( XML_INTDIR_A) \H TMLtree.obj\
2003-10-06 08:47:56 +00:00
$( XML_INTDIR_A) \l egacy.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR_A) \l ist.obj\
$( XML_INTDIR_A) \n anoftp.obj\
$( XML_INTDIR_A) \n anohttp.obj\
$( XML_INTDIR_A) \p arser.obj\
$( XML_INTDIR_A) \p arserInternals.obj\
$( XML_INTDIR_A) \r elaxng.obj\
$( XML_INTDIR_A) \S AX.obj\
$( XML_INTDIR_A) \S AX2.obj\
$( XML_INTDIR_A) \t hreads.obj\
$( XML_INTDIR_A) \t ree.obj\
$( XML_INTDIR_A) \u ri.obj\
$( XML_INTDIR_A) \v alid.obj\
$( XML_INTDIR_A) \x include.obj\
$( XML_INTDIR_A) \x link.obj\
$( XML_INTDIR_A) \x mlIO.obj\
$( XML_INTDIR_A) \x mlmemory.obj\
$( XML_INTDIR_A) \x mlreader.obj\
$( XML_INTDIR_A) \x mlregexp.obj\
$( XML_INTDIR_A) \x mlschemas.obj\
$( XML_INTDIR_A) \x mlschemastypes.obj\
$( XML_INTDIR_A) \x mlunicode.obj\
$( XML_INTDIR_A) \x path.obj\
$( XML_INTDIR_A) \x pointer.obj
# Xmllint and friends executables.
UTILS = $( BINDIR) \x mllint.exe\
$( BINDIR) \x mlcatalog.exe\
$( BINDIR) \t estAutomata.exe\
$( BINDIR) \t estC14N.exe\
$( BINDIR) \t estDocbook.exe\
$( BINDIR) \t estHTML.exe\
$( BINDIR) \t estReader.exe\
$( BINDIR) \t estRelax.exe\
$( BINDIR) \t estRegexp.exe\
$( BINDIR) \t estSAX.exe\
$( BINDIR) \t estSchemas.exe\
$( BINDIR) \t estURI.exe\
$( BINDIR) \t estXPath.exe
! i f "$(WITH_THREADS)" = = "yes" | | "$(WITH_THREADS)" = = "ctls" | | "$(WITH_THREADS)" = = "native"
UTILS = $( UTILS) $( BINDIR) \t estThreadsWin32.exe
! e l s e i f "$(WITH_THREADS)" = = "posix"
UTILS = $( UTILS) $( BINDIR) \t estThreads.exe
! e n d i f
all : libxml libxmla utils
libxml : $( BINDIR ) \$( XML_SO )
libxmla : $( BINDIR ) \$( XML_A )
utils : $( UTILS )
clean :
if exist $( XML_INTDIR) rmdir /S /Q $( XML_INTDIR)
if exist $( XML_INTDIR_A) rmdir /S /Q $( XML_INTDIR_A)
if exist $( UTILS_INTDIR) rmdir /S /Q $( UTILS_INTDIR)
if exist $( BINDIR) rmdir /S /Q $( BINDIR)
distclean : clean
if exist config.* del config.*
if exist Makefile del Makefile
rebuild : clean all
install : all
if not exist $( INCPREFIX) \l ibxml mkdir $( INCPREFIX) \l ibxml
if not exist $( BINPREFIX) mkdir $( BINPREFIX)
if not exist $( LIBPREFIX) mkdir $( LIBPREFIX)
copy $( XML_SRCDIR) \i nclude\l ibxml\* .h $( INCPREFIX) \l ibxml
copy $( BINDIR) \$ ( XML_SO) $( SOPREFIX)
copy $( BINDIR) \$ ( XML_A) $( LIBPREFIX)
copy $( BINDIR) \$ ( XML_IMP) $( LIBPREFIX)
copy $( BINDIR) \* .exe $( BINPREFIX)
-copy $( BINDIR) \* .pdb $( BINPREFIX)
# This is a target for me, to make a binary distribution. Not for the public use,
# keep your hands off :-)
BDVERSION = $( LIBXML_MAJOR_VERSION) .$( LIBXML_MINOR_VERSION) .$( LIBXML_MICRO_VERSION)
BDPREFIX = $( XML_BASENAME) -$( BDVERSION) .win32
bindist : all
$( MAKE) /nologo PREFIX = $( BDPREFIX) BINPREFIX = $( BDPREFIX) \u til install
cscript //NoLogo configure.js genreadme $( XML_BASENAME) $( BDVERSION) $( BDPREFIX) \r eadme.txt
# Makes the output directory.
2003-08-29 10:25:39 +00:00
$(BINDIR)\$(DUMMY) :
2003-08-28 12:34:00 +00:00
if not exist $( BINDIR) mkdir $( BINDIR)
2003-08-29 10:25:39 +00:00
touch $( BINDIR) \$ ( DUMMY)
2003-08-28 12:34:00 +00:00
# Makes the libxml intermediate directory.
2003-08-29 10:25:39 +00:00
$(XML_INTDIR)\$(DUMMY) :
2003-08-28 12:34:00 +00:00
if not exist $( XML_INTDIR) mkdir $( XML_INTDIR)
2003-08-29 10:25:39 +00:00
touch $( XML_INTDIR) \$ ( DUMMY)
2003-08-28 12:34:00 +00:00
# Makes the static libxml intermediate directory.
2003-08-29 10:25:39 +00:00
$(XML_INTDIR_A)\$(DUMMY) :
2003-08-28 12:34:00 +00:00
if not exist $( XML_INTDIR_A) mkdir $( XML_INTDIR_A)
2003-08-29 10:25:39 +00:00
touch $( XML_INTDIR_A) \$ ( DUMMY)
2003-08-28 12:34:00 +00:00
# An implicit rule for libxml compilation.
{$(XML_SRCDIR)}.c{$(XML_INTDIR)}.obj :
$( CC) $( CFLAGS) -n$( XML_INTDIR) -c $<
# An implicit rule for static libxml compilation.
{$(XML_SRCDIR)}.c{$(XML_INTDIR_A)}.obj :
$( CC) $( CFLAGS) -DLIBXML_STATIC -n$( XML_INTDIR_A) \ -c $<
# Compiles libxml source. Uses the implicit rule for commands.
2003-08-29 10:25:39 +00:00
$(XML_OBJS) : $( XML_INTDIR ) \$( DUMMY )
2003-08-28 12:34:00 +00:00
# Compiles static libxml source. Uses the implicit rule for commands.
2003-08-29 10:25:39 +00:00
$(XML_OBJS_A) : $( XML_INTDIR_A ) \$( DUMMY )
2003-08-28 12:34:00 +00:00
#def4bcb.exe : def4bcb.c
# Creates the export definition file (DEF) for libxml.
2003-08-29 10:25:39 +00:00
#$(XML_INTDIR)\$(XML_DEF) : $(XML_INTDIR)\$(DUMMY) $(XML_DEF).src def4bcb.exe
# $(CPP) $(CPPFLAGS) -o $(XML_INTDIR)\$(XML_DEF).tmp $(XML_DEF).src
# def4bcb -msnames < $(XML_INTDIR)\$(XML_DEF).tmp > $(XML_INTDIR)\$(XML_DEF)
2003-08-28 12:34:00 +00:00
# Creates the libxml shared object.
2003-08-29 10:25:39 +00:00
$(BINDIR)\$(XML_SO) : $( BINDIR ) \$( DUMMY ) $( XML_OBJS )
$( LD) $( LDFLAGS) -Tpd -Gi c0d32.obj $( XML_OBJS) ,$( BINDIR) \$ ( XML_SO) ,,$( LIBS)
#$(BINDIR)\$(XML_SO) : $(BINDIR)\$(DUMMY) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF)
# $(LD) $(LDFLAGS) -Tpd -Gi c0d32.obj $(XML_OBJS),$(BINDIR)\$(XML_SO),,$(LIBS),$(XML_INTDIR)\$(XML_DEF)
2003-08-28 12:34:00 +00:00
# Creates the libxml archive.
2003-08-29 10:25:39 +00:00
$(BINDIR)\$(XML_A) : $( BINDIR ) \$( DUMMY ) $( XML_OBJS_A )
2003-08-28 12:34:00 +00:00
$( AR) $( BINDIR) \$ ( XML_A) $( ARFLAGS) /u $( XML_OBJS_A)
# Makes the utils intermediate directory.
2003-08-29 10:25:39 +00:00
$(UTILS_INTDIR)\$(DUMMY) :
2003-08-28 12:34:00 +00:00
if not exist $( UTILS_INTDIR) mkdir $( UTILS_INTDIR)
2003-08-29 10:25:39 +00:00
touch $( UTILS_INTDIR) \$ ( DUMMY)
2003-08-28 12:34:00 +00:00
# An implicit rule for xmllint and friends.
! i f "$(STATIC)" = = "1"
{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe :
2003-11-26 20:55:06 +00:00
$( CC) -DLIBXML_STATIC -w -tWC $( CFLAGS) -o$( UTILS_INTDIR) \$ & .obj -c $<
2003-08-28 12:34:00 +00:00
$( LD) $( LDFLAGS) c0x32.obj $( UTILS_INTDIR) \$ & .obj,$@ ,,$( LIBS) $( XML_A)
! e l s e
{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe :
2003-11-26 20:55:06 +00:00
$( CC) $( CFLAGS) -tWC -o$( UTILS_INTDIR) \$ & .obj -c $<
2003-08-28 12:34:00 +00:00
$( LD) $( LDFLAGS) c0x32.obj $( UTILS_INTDIR) \$ & .obj $( XML_IMP) ,$@ ,,$( LIBS)
! e n d i f
# Builds xmllint and friends. Uses the implicit rule for commands.
2003-08-29 10:25:39 +00:00
$(UTILS) : $( UTILS_INTDIR ) \$( DUMMY ) $( BINDIR ) \$( DUMMY ) $( BINDIR ) \$( XML_SO ) $( BINDIR ) \$( XML_A )
2003-08-28 12:34:00 +00:00
# Source dependences should be autogenerated somehow here, but how to
# do it? I have no clue.