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
# There should never be a need to modify anything below this line.
# ----------------------------------------------------------------
2003-11-27 18:39:01 +00:00
AUTOCONF = .\c onfig.bcb
! i n c l u d e $( AUTOCONF )
2003-08-28 12:34:00 +00:00
! 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.
2003-11-27 18:39:01 +00:00
BINDIR = bin.bcb
XML_INTDIR = int.bcb
XML_INTDIR_A = int.a.bcb
UTILS_INTDIR = int.utils.bcb
2003-08-28 12:34:00 +00:00
# The preprocessor and its options.
CPP = cpp32.exe -P- -DWIN32
2004-03-25 09:35:49 +00:00
CPPFLAGS = -I" $( XML_SRCDIR) \include "
2003-08-28 12:34:00 +00:00
! 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-
2004-03-25 09:35:49 +00:00
CFLAGS = $( CFLAGS) -I" $( XML_SRCDIR) " -I" $( XML_SRCDIR) \include " -I" $( INCPREFIX) " -I" $( INCLUDE) "
2003-08-28 12:34:00 +00:00
! i f "$(WITH_THREADS)" ! = "no"
CFLAGS = $( CFLAGS) -D_REENTRANT -tWM
! e n d i f
2003-12-01 11:33:27 +00:00
! i f "$(DYNRUNTIME)" = = "1"
CFLAGS = $( CFLAGS) -tWR
2003-11-26 20:55:06 +00:00
! 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)
2004-03-25 09:35:49 +00:00
LDFLAGS = $( LDFLAGS) -L" $( BINDIR) ; $( LIBPREFIX) ; $( LIB) ; $( BCB) \lib\PSdk "
2003-08-28 12:34:00 +00:00
LIBS = import32.lib
2003-12-01 11:33:27 +00:00
! i f "$(WITH_THREADS)" ! = "no" & & "$(DYNRUNTIME)" = = "1"
2003-08-28 12:34:00 +00:00
LIBS = $( LIBS) cw32mti.lib
2003-12-01 11:33:27 +00:00
! e l i f "$(WITH_THREADS)" ! = "no"
LIBS = $( LIBS) cw32mt.lib
! e l i f "$(DYNRUNTIME)" = = "1"
2003-08-28 12:34:00 +00:00
LIBS = $( LIBS) cw32i.lib
2003-12-01 11:33:27 +00:00
! e l s e
LIBS = $( LIBS) cw32.lib
2003-08-28 12:34:00 +00:00
! 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\
2003-12-11 13:56:54 +00:00
$( XML_INTDIR) \p attern.obj\
2003-08-28 12:34:00 +00:00
$( 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\
2004-03-09 10:53:42 +00:00
$( XML_INTDIR) \x mlsave.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR) \x mlschemas.obj\
$( XML_INTDIR) \x mlschemastypes.obj\
$( XML_INTDIR) \x mlunicode.obj\
2003-11-27 18:39:01 +00:00
$( XML_INTDIR) \x mlwriter.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR) \x path.obj\
2004-01-07 23:38:02 +00:00
$( XML_INTDIR) \x pointer.obj\
$( XML_INTDIR) \x mlstring.obj
2003-08-28 12:34:00 +00:00
# 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\
2003-12-11 13:56:54 +00:00
$( XML_INTDIR_A) \p attern.obj\
2003-08-28 12:34:00 +00:00
$( 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\
2004-03-09 10:53:42 +00:00
$( XML_INTDIR_A) \x mlsave.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR_A) \x mlschemas.obj\
$( XML_INTDIR_A) \x mlschemastypes.obj\
$( XML_INTDIR_A) \x mlunicode.obj\
2003-11-27 18:39:01 +00:00
$( XML_INTDIR_A) \x mlwriter.obj\
2003-08-28 12:34:00 +00:00
$( XML_INTDIR_A) \x path.obj\
2004-01-07 23:38:02 +00:00
$( XML_INTDIR_A) \x pointer.obj\
$( XML_INTDIR_A) \x mlstring.obj
2003-08-28 12:34:00 +00:00
# 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
2004-03-25 09:35:49 +00:00
if not exist " $( INCPREFIX) \libxml " mkdir " $( INCPREFIX) \libxml "
if not exist " $( BINPREFIX) " mkdir " $( BINPREFIX) "
if not exist " $( LIBPREFIX) " mkdir " $( LIBPREFIX) "
copy $( XML_SRCDIR) \i nclude\l ibxml\* .h " $( INCPREFIX) \libxml "
copy $( BINDIR) \$ ( XML_SO) " $( SOPREFIX) "
copy $( BINDIR) \$ ( XML_A) " $( LIBPREFIX) "
copy $( BINDIR) \$ ( XML_IMP) " $( LIBPREFIX) "
copy $( BINDIR) \* .exe " $( BINPREFIX) "
2003-08-28 12:34:00 +00:00
# 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.