mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2024-12-29 11:21:26 +03:00
b173b724d1
Also use thread-local storage to store globals on POSIX platforms. Most importantly, this makes sure that global variable access can't fail when allocating the global state struct.
327 lines
9.4 KiB
Makefile
327 lines
9.4 KiB
Makefile
# 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.
|
|
#
|
|
# August 2003, Eric Zurcher <Eric.Zurcher@csiro.au>
|
|
# based on the MSVC version of
|
|
# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
|
|
#
|
|
|
|
# There should never be a need to modify anything below this line.
|
|
# ----------------------------------------------------------------
|
|
|
|
AUTOCONF = .\config.bcb
|
|
!include $(AUTOCONF)
|
|
|
|
!if !$d(BCB)
|
|
BCB = $(MAKEDIR)\..
|
|
!endif
|
|
.autodepend
|
|
|
|
# Names of various input and output components.
|
|
XML_NAME = xml2
|
|
XML_BASENAME = lib$(XML_NAME)
|
|
XML_SO = $(XML_BASENAME).dll
|
|
XML_IMP = $(XML_BASENAME).lib
|
|
XML_A = $(XML_BASENAME)_a.lib
|
|
DUMMY = dir.exists
|
|
|
|
# Place where we let the compiler put its intermediate trash.
|
|
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-
|
|
CPPFLAGS = -I"$(XML_SRCDIR)\include" -DNOLIBTOOL
|
|
!if "$(WITH_THREADS)" != "no"
|
|
CPPFLAGS = $(CPPFLAGS) -D_REENTRANT -D__MT__
|
|
!endif
|
|
|
|
# The compiler and its options.
|
|
CC = bcc32.exe
|
|
CFLAGS = -q -D_NO_VCL -D_WINDOWS -D_MBCS -DEILSEQ=2 -DNOLIBTOOL -w-
|
|
CFLAGS = $(CFLAGS) -I"$(XML_SRCDIR)" -I"$(XML_SRCDIR)\include" -I"$(INCPREFIX)" -I"$(INCLUDE)"
|
|
!if "$(WITH_THREADS)" != "no"
|
|
CFLAGS = $(CFLAGS) -D_REENTRANT -tWM
|
|
!endif
|
|
!if "$(DYNRUNTIME)" == "1"
|
|
CFLAGS = $(CFLAGS) -tWR
|
|
!endif
|
|
!if "$(WITH_THREADS)" == "ctls"
|
|
CFLAGS = $(CFLAGS) "-DXML_THREAD_LOCAL=__declspec(thread)"
|
|
!else if "$(WITH_THREADS)" == "posix"
|
|
CFLAGS = $(CFLAGS) -DHAVE_PTHREAD_H
|
|
!endif
|
|
|
|
# The linker and its options.
|
|
LD = ilink32.exe
|
|
LDFLAGS = -q -U$(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION)
|
|
LDFLAGS = $(LDFLAGS) -L"$(BINDIR);$(LIBPREFIX);$(LIB);$(BCB)\lib;$(BCB)\lib\PSdk"
|
|
LIBS = import32.lib
|
|
!if "$(WITH_THREADS)" != "no" && "$(DYNRUNTIME)" == "1"
|
|
LIBS = $(LIBS) cw32mti.lib
|
|
!elif "$(WITH_THREADS)" != "no"
|
|
LIBS = $(LIBS) cw32mt.lib
|
|
!elif "$(DYNRUNTIME)" == "1"
|
|
LIBS = $(LIBS) cw32i.lib
|
|
!else
|
|
LIBS = $(LIBS) cw32.lib
|
|
!endif
|
|
!if "$(WITH_FTP)" == "1" || "$(WITH_HTTP)" == "1"
|
|
LIBS = $(LIBS) wsock32.lib ws2_32.lib
|
|
!endif
|
|
!if "$(WITH_ICONV)" == "1"
|
|
LIBS = $(LIBS) iconvomf.lib
|
|
!endif
|
|
!if "$(WITH_ZLIB)" == "1"
|
|
LIBS = $(LIBS) zlibomf.lib
|
|
!endif
|
|
!if "$(WITH_LZMA)" == "1"
|
|
LIBS = $(LIBS) liblzma.lib
|
|
!endif
|
|
!if "$(WITH_THREADS)" == "posix"
|
|
LIBS = $(LIBS) pthreadVC.lib
|
|
!endif
|
|
!if "$(WITH_MODULES)" == "1"
|
|
LIBS = $(LIBS) kernel32.lib
|
|
!endif
|
|
|
|
# The archiver and its options.
|
|
AR = tlib.exe
|
|
ARFLAGS = /P64 /0
|
|
|
|
# Optimisation and debug symbols.
|
|
!if "$(DEBUG)" == "1"
|
|
CFLAGS = $(CFLAGS) -D_DEBUG -Od -v
|
|
LDFLAGS = $(LDFLAGS) -v
|
|
!else
|
|
CFLAGS = $(CFLAGS) -DNDEBUG -O2
|
|
LDFLAGS = $(LDFLAGS)
|
|
!endif
|
|
|
|
# Libxml object files.
|
|
XML_OBJS = $(XML_INTDIR)\buf.obj\
|
|
$(XML_INTDIR)\c14n.obj\
|
|
$(XML_INTDIR)\catalog.obj\
|
|
$(XML_INTDIR)\chvalid.obj\
|
|
$(XML_INTDIR)\debugXML.obj\
|
|
$(XML_INTDIR)\dict.obj\
|
|
$(XML_INTDIR)\encoding.obj\
|
|
$(XML_INTDIR)\entities.obj\
|
|
$(XML_INTDIR)\error.obj\
|
|
$(XML_INTDIR)\globals.obj\
|
|
$(XML_INTDIR)\hash.obj\
|
|
$(XML_INTDIR)\HTMLparser.obj\
|
|
$(XML_INTDIR)\HTMLtree.obj\
|
|
$(XML_INTDIR)\legacy.obj\
|
|
$(XML_INTDIR)\list.obj\
|
|
$(XML_INTDIR)\nanoftp.obj\
|
|
$(XML_INTDIR)\nanohttp.obj\
|
|
$(XML_INTDIR)\parser.obj\
|
|
$(XML_INTDIR)\parserInternals.obj\
|
|
$(XML_INTDIR)\pattern.obj\
|
|
$(XML_INTDIR)\relaxng.obj\
|
|
$(XML_INTDIR)\SAX.obj\
|
|
$(XML_INTDIR)\SAX2.obj\
|
|
$(XML_INTDIR)\schematron.obj\
|
|
$(XML_INTDIR)\threads.obj\
|
|
$(XML_INTDIR)\tree.obj\
|
|
$(XML_INTDIR)\uri.obj\
|
|
$(XML_INTDIR)\valid.obj\
|
|
$(XML_INTDIR)\xinclude.obj\
|
|
$(XML_INTDIR)\xlink.obj\
|
|
$(XML_INTDIR)\xmlIO.obj\
|
|
$(XML_INTDIR)\xmlmemory.obj\
|
|
$(XML_INTDIR)\xmlreader.obj\
|
|
$(XML_INTDIR)\xmlregexp.obj\
|
|
$(XML_INTDIR)\xmlmodule.obj\
|
|
$(XML_INTDIR)\xmlsave.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\
|
|
$(XML_INTDIR)\xmlstring.obj
|
|
|
|
# Static libxml object files.
|
|
XML_OBJS_A = $(XML_INTDIR_A)\buf.obj\
|
|
$(XML_INTDIR_A)\c14n.obj\
|
|
$(XML_INTDIR_A)\catalog.obj\
|
|
$(XML_INTDIR_A)\chvalid.obj\
|
|
$(XML_INTDIR_A)\debugXML.obj\
|
|
$(XML_INTDIR_A)\dict.obj\
|
|
$(XML_INTDIR_A)\encoding.obj\
|
|
$(XML_INTDIR_A)\entities.obj\
|
|
$(XML_INTDIR_A)\error.obj\
|
|
$(XML_INTDIR_A)\globals.obj\
|
|
$(XML_INTDIR_A)\hash.obj\
|
|
$(XML_INTDIR_A)\HTMLparser.obj\
|
|
$(XML_INTDIR_A)\HTMLtree.obj\
|
|
$(XML_INTDIR_A)\legacy.obj\
|
|
$(XML_INTDIR_A)\list.obj\
|
|
$(XML_INTDIR_A)\nanoftp.obj\
|
|
$(XML_INTDIR_A)\nanohttp.obj\
|
|
$(XML_INTDIR_A)\parser.obj\
|
|
$(XML_INTDIR_A)\parserInternals.obj\
|
|
$(XML_INTDIR_A)\pattern.obj\
|
|
$(XML_INTDIR_A)\relaxng.obj\
|
|
$(XML_INTDIR_A)\SAX.obj\
|
|
$(XML_INTDIR_A)\SAX2.obj\
|
|
$(XML_INTDIR_A)\schematron.obj\
|
|
$(XML_INTDIR_A)\threads.obj\
|
|
$(XML_INTDIR_A)\tree.obj\
|
|
$(XML_INTDIR_A)\uri.obj\
|
|
$(XML_INTDIR_A)\valid.obj\
|
|
$(XML_INTDIR_A)\xinclude.obj\
|
|
$(XML_INTDIR_A)\xlink.obj\
|
|
$(XML_INTDIR_A)\xmlIO.obj\
|
|
$(XML_INTDIR_A)\xmlmemory.obj\
|
|
$(XML_INTDIR_A)\xmlreader.obj\
|
|
$(XML_INTDIR_A)\xmlregexp.obj\
|
|
$(XML_INTDIR_A)\xmlmodule.obj\
|
|
$(XML_INTDIR_A)\xmlsave.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\
|
|
$(XML_INTDIR_A)\xmlstring.obj
|
|
|
|
# Xmllint and friends executables.
|
|
UTILS = $(BINDIR)\xmllint.exe\
|
|
$(BINDIR)\xmlcatalog.exe\
|
|
$(BINDIR)\testModule.exe\
|
|
$(BINDIR)\runtest.exe\
|
|
$(BINDIR)\runsuite.exe\
|
|
$(BINDIR)\testapi.exe\
|
|
$(BINDIR)\testlimits.exe
|
|
|
|
|
|
!if "$(WITH_THREADS)" != "no"
|
|
UTILS = $(UTILS) $(BINDIR)\testThreads.exe
|
|
!endif
|
|
|
|
|
|
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-libs : all
|
|
if not exist "$(INCPREFIX)\libxml2" mkdir "$(INCPREFIX)\libxml2"
|
|
if not exist "$(INCPREFIX)\libxml2\libxml" mkdir "$(INCPREFIX)\libxml2\libxml"
|
|
if not exist "$(BINPREFIX)" mkdir "$(BINPREFIX)"
|
|
if not exist "$(LIBPREFIX)" mkdir "$(LIBPREFIX)"
|
|
copy $(XML_SRCDIR)\include\libxml\*.h "$(INCPREFIX)\libxml2\libxml"
|
|
copy $(BINDIR)\$(XML_SO) "$(SOPREFIX)"
|
|
copy $(BINDIR)\$(XML_A) "$(LIBPREFIX)"
|
|
copy $(BINDIR)\$(XML_IMP) "$(LIBPREFIX)"
|
|
copy $(BINDIR)\*.exe "$(BINPREFIX)"
|
|
|
|
install : install-libs
|
|
copy $(BINDIR)\*.exe "$(BINPREFIX)"
|
|
|
|
install-dist : install-libs
|
|
copy $(BINDIR)\xml*.exe "$(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) SOPREFIX=$(BDPREFIX)\bin install-dist
|
|
cscript //NoLogo configure.js genreadme $(XML_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
|
|
|
|
|
|
# Makes the output directory.
|
|
$(BINDIR)\$(DUMMY) :
|
|
if not exist $(BINDIR) mkdir $(BINDIR)
|
|
touch $(BINDIR)\$(DUMMY)
|
|
|
|
# Makes the libxml intermediate directory.
|
|
$(XML_INTDIR)\$(DUMMY) :
|
|
if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)
|
|
touch $(XML_INTDIR)\$(DUMMY)
|
|
|
|
# Makes the static libxml intermediate directory.
|
|
$(XML_INTDIR_A)\$(DUMMY) :
|
|
if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)
|
|
touch $(XML_INTDIR_A)\$(DUMMY)
|
|
|
|
# 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.
|
|
$(XML_OBJS) : $(XML_INTDIR)\$(DUMMY)
|
|
|
|
# Compiles static libxml source. Uses the implicit rule for commands.
|
|
$(XML_OBJS_A) : $(XML_INTDIR_A)\$(DUMMY)
|
|
|
|
#def4bcb.exe : def4bcb.c
|
|
|
|
# Creates the libxml shared object.
|
|
$(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)
|
|
# $(LD) $(LDFLAGS) -Tpd -Gi c0d32.obj $(XML_OBJS),$(BINDIR)\$(XML_SO),,$(LIBS)
|
|
|
|
# Creates the libxml archive.
|
|
$(BINDIR)\$(XML_A) : $(BINDIR)\$(DUMMY) $(XML_OBJS_A)
|
|
$(AR) $(BINDIR)\$(XML_A) $(ARFLAGS) /u $(XML_OBJS_A)
|
|
|
|
# Makes the utils intermediate directory.
|
|
$(UTILS_INTDIR)\$(DUMMY) :
|
|
if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
|
|
touch $(UTILS_INTDIR)\$(DUMMY)
|
|
|
|
# An implicit rule for xmllint and friends.
|
|
!if "$(STATIC)" == "1"
|
|
{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
|
|
$(CC) -DLIBXML_STATIC -w -tWC $(CFLAGS) -o$(UTILS_INTDIR)\$&.obj -c $<
|
|
$(LD) $(LDFLAGS) c0x32.obj $(UTILS_INTDIR)\$&.obj,$@,,$(LIBS) $(XML_A)
|
|
!else
|
|
{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
|
|
$(CC) $(CFLAGS) -tWC -o$(UTILS_INTDIR)\$&.obj -c $<
|
|
$(LD) $(LDFLAGS) c0x32.obj $(UTILS_INTDIR)\$&.obj $(XML_IMP),$@,,$(LIBS)
|
|
!endif
|
|
|
|
# Builds xmllint and friends. Uses the implicit rule for commands.
|
|
$(UTILS) : $(UTILS_INTDIR)\$(DUMMY) $(BINDIR)\$(DUMMY) $(BINDIR)\$(XML_SO) $(BINDIR)\$(XML_A)
|
|
|
|
# Source dependences should be autogenerated somehow here, but how to
|
|
# do it? I have no clue.
|
|
|