2002-03-24 21:00:26 +00:00
# Makefile for libxml2, specific for Windows, MSVC and NMAKE.
#
# Take a look at the beginning and modify the variables to suit your
# environment. Having done that, you can do a
#
# nmake [all] to build the libxml and the accompanying utilities.
# nmake clean to remove all compiler output files and return to a
# clean state.
# nmake rebuild to rebuild everything from scratch. This basically does
# a 'nmake clean' and then a 'nmake all'.
# nmake install to install the library and its header files.
#
2002-12-18 14:53:54 +00:00
# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
2002-03-24 21:00:26 +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.msvc
! i n c l u d e $( AUTOCONF )
2002-03-24 21:00:26 +00:00
# Names of various input and output components.
XML_NAME = xml2
XML_BASENAME = lib$( XML_NAME)
XML_SO = $( XML_BASENAME) .dll
2017-11-27 15:08:00 +01:00
XML_RES = $( XML_BASENAME) .res
2002-03-24 21:00:26 +00:00
XML_IMP = $( XML_BASENAME) .lib
XML_DEF = $( XML_BASENAME) .def
XML_A = $( XML_BASENAME) _a.lib
2007-06-08 19:47:37 +00:00
XML_A_DLL = $( XML_BASENAME) _a_dll.lib
2002-03-24 21:00:26 +00:00
2003-11-27 18:39:01 +00:00
# Place where we let the compiler put its output.
BINDIR = bin.msvc
XML_INTDIR = int.msvc
XML_INTDIR_A = int.a.msvc
2007-06-08 19:47:37 +00:00
XML_INTDIR_A_DLL = int.a.dll.msvc
2003-11-27 18:39:01 +00:00
UTILS_INTDIR = int.utils.msvc
2002-03-24 21:00:26 +00:00
# The preprocessor and its options.
CPP = cl.exe /EP
2017-08-28 17:45:47 +02:00
CPPFLAGS = /nologo /I$( XML_SRCDIR) \i nclude /D "NOLIBTOOL"
2002-10-31 16:00:22 +00:00
! i f "$(WITH_THREADS)" ! = "no"
2002-04-10 21:57:11 +00:00
CPPFLAGS = $( CPPFLAGS) /D "_REENTRANT"
! e n d i f
2002-03-24 21:00:26 +00:00
# The compiler and its options.
CC = cl.exe
2017-10-09 02:39:16 +02:00
CFLAGS = /nologo /D "_WINDOWS" /D "_MBCS" /D "NOLIBTOOL" /W3 /wd4244 /wd4267 $( CRUNTIME)
2002-08-20 14:42:07 +00:00
CFLAGS = $( CFLAGS) /I$( XML_SRCDIR) /I$( XML_SRCDIR) \i nclude /I$( INCPREFIX)
2002-10-31 16:00:22 +00:00
! i f "$(WITH_THREADS)" ! = "no"
2002-03-24 21:00:26 +00:00
CFLAGS = $( CFLAGS) /D "_REENTRANT"
! e n d i f
2002-10-31 16:00:22 +00:00
! i f "$(WITH_THREADS)" = = "yes" | | "$(WITH_THREADS)" = = "ctls"
2022-09-04 01:49:41 +02:00
CFLAGS = $( CFLAGS) /D "HAVE_COMPILER_TLS"
2002-10-31 16:00:22 +00:00
! e l s e i f "$(WITH_THREADS)" = = "posix"
CFLAGS = $( CFLAGS) /D "HAVE_PTHREAD_H"
! e n d i f
2007-06-08 19:47:37 +00:00
CFLAGS = $( CFLAGS) /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE
2002-03-24 21:00:26 +00:00
# The linker and its options.
LD = link.exe
2017-08-28 17:45:47 +02:00
LDFLAGS = /nologo /VERSION:$( LIBXML_MAJOR_VERSION) .$( LIBXML_MINOR_VERSION)
LDFLAGS = $( LDFLAGS) /LIBPATH:$( BINDIR) /LIBPATH:$( LIBPREFIX)
2004-06-09 14:32:47 +00:00
LIBS =
2002-03-24 21:00:26 +00:00
! i f "$(WITH_FTP)" = = "1" | | "$(WITH_HTTP)" = = "1"
2008-01-25 19:03:37 +00:00
LIBS = $( LIBS) wsock32.lib ws2_32.lib
2002-03-24 21:00:26 +00:00
! e n d i f
! i f "$(WITH_ICONV)" = = "1"
LIBS = $( LIBS) iconv.lib
! e n d i f
2010-11-10 10:13:51 -05:00
! i f "$(WITH_ICU)" = = "1"
2017-11-27 18:17:38 +01:00
! i f "$(STATIC)" = = "1"
LIBS = $( LIBS) advapi32.lib sicuuc.lib sicuin.lib sicudt.lib
! e l s e
LIBS = $( LIBS) icuuc.lib icuin.lib icudt.lib
! e n d i f
2010-11-10 10:13:51 -05:00
! e n d i f
2002-09-20 16:40:17 +00:00
! i f "$(WITH_ZLIB)" = = "1"
2011-09-14 16:00:28 +08:00
# could be named differently zdll or zlib
# LIBS = $(LIBS) zdll.lib
LIBS = $( LIBS) zlib.lib
2002-09-20 16:40:17 +00:00
! e n d i f
2012-03-21 10:37:06 -04:00
! i f "$(WITH_LZMA)" = = "1"
LIBS = $( LIBS) liblzma.lib
! e n d i f
2002-10-31 16:00:22 +00:00
! i f "$(WITH_THREADS)" = = "posix"
LIBS = $( LIBS) pthreadVC.lib
! e n d i f
2005-01-04 15:10:22 +00:00
! i f "$(WITH_MODULES)" = = "1"
LIBS = $( LIBS) kernel32.lib
! e n d i f
2002-03-24 21:00:26 +00:00
# The archiver and its options.
AR = lib.exe
ARFLAGS = /nologo
# Optimisation and debug symbols.
! i f "$(DEBUG)" = = "1"
CFLAGS = $( CFLAGS) /D "_DEBUG" /Od /Z7
LDFLAGS = $( LDFLAGS) /DEBUG
! e l s e
CFLAGS = $( CFLAGS) /D "NDEBUG" /O2
2010-11-17 14:10:39 +01:00
# commented out as this break VC10 c.f. 634846
# LDFLAGS = $(LDFLAGS) /OPT:NOWIN98
LDFLAGS = $( LDFLAGS)
2002-03-24 21:00:26 +00:00
! e n d i f
2020-04-10 19:22:07 +02:00
# append CFLAGS etc. passed on command line
CPPFLAGS = $( CPPFLAGS) $( EXTRA_CPPFLAGS)
CFLAGS = $( CFLAGS) $( EXTRA_CFLAGS)
LDFLAGS = $( LDFLAGS) $( EXTRA_LDFLAGS)
2002-03-24 21:00:26 +00:00
# Libxml object files.
2012-08-15 13:52:09 +08:00
XML_OBJS = $( XML_INTDIR) \b uf.obj\
$( XML_INTDIR) \c 14n.obj\
2002-03-24 21:00:26 +00:00
$( XML_INTDIR) \c atalog.obj\
2003-10-21 09:27:57 +00:00
$( XML_INTDIR) \c hvalid.obj\
2002-03-24 21:00:26 +00:00
$( XML_INTDIR) \d ebugXML.obj\
2003-08-25 09:05:12 +00:00
$( XML_INTDIR) \d ict.obj\
2002-03-24 21:00:26 +00:00
$( 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\
2002-03-24 21:00:26 +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-02-08 17:53:46 +00:00
$( XML_INTDIR) \r elaxng.obj\
2003-08-25 09:05:12 +00:00
$( XML_INTDIR) \S AX2.obj\
2002-03-24 21:00:26 +00:00
$( XML_INTDIR) \S AX.obj\
2005-07-31 14:05:18 +00:00
$( XML_INTDIR) \s chematron.obj\
2002-03-24 21:00:26 +00:00
$( 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\
2002-12-16 18:45:29 +00:00
$( XML_INTDIR) \x mlreader.obj\
2002-04-16 17:57:17 +00:00
$( XML_INTDIR) \x mlregexp.obj\
2005-01-04 15:10:22 +00:00
$( XML_INTDIR) \x mlmodule.obj\
2004-03-09 10:53:42 +00:00
$( XML_INTDIR) \x mlsave.obj\
2002-04-16 17:57:17 +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\
2002-03-24 21:00:26 +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
2002-03-24 21:00:26 +00:00
2002-09-29 17:54:00 +00:00
# Static libxml object files.
2012-08-15 13:52:09 +08:00
XML_OBJS_A = $( XML_INTDIR_A) \b uf.obj\
$( XML_INTDIR_A) \c 14n.obj\
2002-09-29 17:54:00 +00:00
$( XML_INTDIR_A) \c atalog.obj\
2003-10-21 09:27:57 +00:00
$( XML_INTDIR_A) \c hvalid.obj\
2002-09-29 17:54:00 +00:00
$( XML_INTDIR_A) \d ebugXML.obj\
2003-08-25 09:05:12 +00:00
$( XML_INTDIR_A) \d ict.obj\
2002-09-29 17:54:00 +00:00
$( 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\
2002-09-29 17:54: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-02-08 17:53:46 +00:00
$( XML_INTDIR_A) \r elaxng.obj\
2003-08-25 09:05:12 +00:00
$( XML_INTDIR_A) \S AX2.obj\
2002-09-29 17:54:00 +00:00
$( XML_INTDIR_A) \S AX.obj\
2005-07-31 14:05:18 +00:00
$( XML_INTDIR_A) \s chematron.obj\
2002-09-29 17:54:00 +00:00
$( 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\
2002-12-16 18:45:29 +00:00
$( XML_INTDIR_A) \x mlreader.obj\
2002-09-29 17:54:00 +00:00
$( XML_INTDIR_A) \x mlregexp.obj\
2005-01-04 15:10:22 +00:00
$( XML_INTDIR_A) \x mlmodule.obj\
2004-03-09 10:53:42 +00:00
$( XML_INTDIR_A) \x mlsave.obj\
2002-09-29 17:54: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\
2002-09-29 17:54: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
2002-09-29 17:54:00 +00:00
2007-06-08 19:47:37 +00:00
# Static libxml object files.
2012-08-15 13:52:09 +08:00
XML_OBJS_A_DLL = $( XML_INTDIR_A_DLL) \b uf.obj\
$( XML_INTDIR_A_DLL) \c 14n.obj\
2007-06-08 19:47:37 +00:00
$( XML_INTDIR_A_DLL) \c atalog.obj\
$( XML_INTDIR_A_DLL) \c hvalid.obj\
$( XML_INTDIR_A_DLL) \d ebugXML.obj\
$( XML_INTDIR_A_DLL) \d ict.obj\
$( XML_INTDIR_A_DLL) \e ncoding.obj\
$( XML_INTDIR_A_DLL) \e ntities.obj\
$( XML_INTDIR_A_DLL) \e rror.obj\
$( XML_INTDIR_A_DLL) \g lobals.obj\
$( XML_INTDIR_A_DLL) \h ash.obj\
$( XML_INTDIR_A_DLL) \H TMLparser.obj\
$( XML_INTDIR_A_DLL) \H TMLtree.obj\
$( XML_INTDIR_A_DLL) \l egacy.obj\
$( XML_INTDIR_A_DLL) \l ist.obj\
$( XML_INTDIR_A_DLL) \n anoftp.obj\
$( XML_INTDIR_A_DLL) \n anohttp.obj\
$( XML_INTDIR_A_DLL) \p arser.obj\
$( XML_INTDIR_A_DLL) \p arserInternals.obj\
$( XML_INTDIR_A_DLL) \p attern.obj\
$( XML_INTDIR_A_DLL) \r elaxng.obj\
$( XML_INTDIR_A_DLL) \S AX2.obj\
$( XML_INTDIR_A_DLL) \S AX.obj\
$( XML_INTDIR_A_DLL) \s chematron.obj\
$( XML_INTDIR_A_DLL) \t hreads.obj\
$( XML_INTDIR_A_DLL) \t ree.obj\
$( XML_INTDIR_A_DLL) \u ri.obj\
$( XML_INTDIR_A_DLL) \v alid.obj\
$( XML_INTDIR_A_DLL) \x include.obj\
$( XML_INTDIR_A_DLL) \x link.obj\
$( XML_INTDIR_A_DLL) \x mlIO.obj\
$( XML_INTDIR_A_DLL) \x mlmemory.obj\
$( XML_INTDIR_A_DLL) \x mlreader.obj\
$( XML_INTDIR_A_DLL) \x mlregexp.obj\
$( XML_INTDIR_A_DLL) \x mlmodule.obj\
$( XML_INTDIR_A_DLL) \x mlsave.obj\
$( XML_INTDIR_A_DLL) \x mlschemas.obj\
$( XML_INTDIR_A_DLL) \x mlschemastypes.obj\
$( XML_INTDIR_A_DLL) \x mlunicode.obj\
$( XML_INTDIR_A_DLL) \x mlwriter.obj\
$( XML_INTDIR_A_DLL) \x path.obj\
$( XML_INTDIR_A_DLL) \x pointer.obj\
$( XML_INTDIR_A_DLL) \x mlstring.obj
2018-11-06 10:17:35 +01:00
! i f "$(WITH_LZMA)" = = "1"
XML_OBJS = $( XML_OBJS) $( XML_INTDIR) \x zlib.obj
XML_OBJS_A = $( XML_OBJS_A) $( XML_INTDIR_A) \x zlib.obj
XML_OBJS_A_DLL = $( XML_OBJS_A_DLL) $( XML_INTDIR_A_DLL) \x zlib.obj
! e n d i f
2002-03-24 21:00:26 +00:00
# Xmllint and friends executables.
UTILS = $( BINDIR) \x mllint.exe\
$( BINDIR) \x mlcatalog.exe\
2005-01-04 15:10:22 +00:00
$( BINDIR) \t estModule.exe\
2005-07-06 19:44:03 +00:00
$( BINDIR) \r untest.exe\
2006-02-01 11:28:14 +00:00
$( BINDIR) \r unsuite.exe\
2017-11-27 18:23:58 +01:00
$( BINDIR) \r unxmlconf.exe\
2012-08-15 16:30:10 +10:00
$( BINDIR) \t estapi.exe\
2017-11-27 18:23:58 +01:00
$( BINDIR) \t estchar.exe\
$( BINDIR) \t estdict.exe\
2012-09-18 11:15:06 +08:00
$( BINDIR) \t estlimits.exe\
$( BINDIR) \t estrecurse.exe
2005-07-06 20:12:11 +00:00
2018-01-23 17:33:42 +01:00
! i f "$(WITH_THREADS)" ! = "no"
2002-10-31 16:00:22 +00:00
UTILS = $( UTILS) $( BINDIR) \t estThreads.exe
! e n d i f
2002-03-24 21:00:26 +00:00
2008-02-15 07:43:00 +00:00
! i f "$(VCMANIFEST)" = = "1"
_VC_MANIFEST_EMBED_EXE = if exist $@ .manifest mt.exe -nologo -manifest $@ .manifest -outputresource:$@ ; 1
_VC_MANIFEST_EMBED_DLL = if exist $@ .manifest mt.exe -nologo -manifest $@ .manifest -outputresource:$@ ; 2
! e l s e
_VC_MANIFEST_EMBED_EXE =
_VC_MANIFEST_EMBED_DLL =
2007-06-08 19:47:37 +00:00
! e n d i f
all : libxml libxmla libxmladll utils
2002-03-24 21:00:26 +00:00
2002-09-29 17:54:00 +00:00
libxml : $( BINDIR ) \$( XML_SO )
libxmla : $( BINDIR ) \$( XML_A )
2002-03-24 21:00:26 +00:00
2007-06-08 19:47:37 +00:00
libxmladll : $( BINDIR ) \$( XML_A_DLL )
2002-03-24 21:00:26 +00:00
utils : $( UTILS )
clean :
if exist $( XML_INTDIR) rmdir /S /Q $( XML_INTDIR)
2002-09-29 17:54:00 +00:00
if exist $( XML_INTDIR_A) rmdir /S /Q $( XML_INTDIR_A)
2007-06-08 19:47:37 +00:00
if exist $( XML_INTDIR_A_DLL) rmdir /S /Q $( XML_INTDIR_A_DLL)
2002-03-24 21:00:26 +00:00
if exist $( UTILS_INTDIR) rmdir /S /Q $( UTILS_INTDIR)
if exist $( BINDIR) rmdir /S /Q $( BINDIR)
2002-11-14 17:43:24 +00:00
distclean : clean
if exist config.* del config.*
if exist Makefile del Makefile
2002-03-24 21:00:26 +00:00
rebuild : clean all
2005-04-06 21:14:06 +00:00
install-libs : all
Various "make distcheck" and portability fixups
Makefile.am:
* Don't use @VAR@, use $(VAR). Autoconf's AC_SUBST provides us the Make
variable, it allows overriding the value at the command line, and
(notably) it avoids a Make parse error in the libxml2_la_LDFLAGS
assignment when @MODULE_PLATFORM_LIBS@ is empty
* Changed how the THREADS_W32 mechanism switches the build between
testThreads.c and testThreadsWin32.c as appropriate; using AM_CONDITIONAL
allows this to work cleanly and plays well with dependencies
* testapi.c should be specified as BUILT_SOURCES
* Create symlinks to the test/ and result/ subdirs so that the runtests
target is usable in out-of-source-tree builds
* Don't do MAKEFLAGS+=--silent as this is not portable to non-GNU Makes
* Fixed incorrect find(1) syntax in the "cleanup" rule, and doing "rm -f"
instead of just "rm" is good form
* (DIST)CLEANFILES needed a bit more coverage to allow "make distcheck" to
pass
configure.in:
* Need AC_PROG_LN_S to create test/ and result/ symlinks in Makefile.am
* AC_LIBTOOL_WIN32_DLL and AM_PROG_LIBTOOL are obsolete; these have been
superceded by LT_INIT
* Don't rebuild docs by default, as this requires GNU Make (as
implemented)
* Check for uint32_t as some platforms don't provide it
* Check for some more functions, and undefine HAVE_MMAP if we don't also
HAVE_MUNMAP (one system I tested on actually needed this)
* Changed THREADS_W32 from a filename insert into an Automake conditional
* The "Copyright" file will not be in the current directory if builddir !=
srcdir
doc/Makefile.am:
* EXTRA_DIST cannot use wildcards when they refer to generated files; this
breaks dependencies. What I did was define EXTRA_DIST_wc, which uses GNU
Make $(wildcard) directives to build up a list of files, and EXTRA_DIST,
as a literal expansion of EXTRA_DIST_wc. I also added a new rule,
"check-extra-dist", to simplify checking that the two variables are
equivalent. (Note that this works only when builddir == srcdir)
(I can implement this differently if desired; this is just one way of
doing it)
* Don't define an "all" target; this steps on Automake's toes
* Fixed up the "libxml2-api.xml ..." rule by using $(wildcard) for
dependencies (as Make doesn't process the wildcards otherwise) and
qualifying appropriate files with $(srcdir)
(Note that $(srcdir) is not needed in the dependencies, thanks to VPATH,
which we can count on as this is GNU-Make-only code anyway)
doc/devhelp/Makefile.am:
* Qualified appropriate files with $(srcdir)
* Added an "uninstall-local" rule so that "make distcheck" passes
doc/examples/Makefile.am:
* Rather than use a wildcard that doesn't work, use a substitution that
most Make programs can handle
doc/examples/index.py:
* Do the same here
include/libxml/nanoftp.h:
* Some platforms (e.g. MSVC 6) already #define INVALID_SOCKET:
user@host:/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/\
Include$ grep -R INVALID_SOCKET .
./WINSOCK.H:#define INVALID_SOCKET (SOCKET)(~0)
./WINSOCK2.H:#define INVALID_SOCKET (SOCKET)(~0)
include/libxml/xmlversion.h.in:
* Support ancient GCCs (I was actually able to build the library with 2.5
but for this bit)
python/Makefile.am:
* Expanded CLEANFILES to allow "make distcheck" to pass
python/tests/Makefile.am:
* Define CLEANFILES instead of a "clean" rule, and added tmp.xml to allow
"make distcheck" to pass
testRelax.c:
* Use HAVE_MMAP instead of the less explicit HAVE_SYS_MMAN_H (as some
systems have the header but not the function)
testSchemas.c:
* Use HAVE_MMAP instead of the less explicit HAVE_SYS_MMAN_H
testapi.c:
* Don't use putenv() if it's not available
threads.c:
* This fixes the following build error on Solaris 8:
libtool: compile: cc -DHAVE_CONFIG_H -I. -I./include -I./include \
-D_REENTRANT -D__EXTENSIONS__ -D_REENTRANT -Dsparc -Xa -mt -v \
-xarch=v9 -xcrossfile -xO5 -c threads.c -KPIC -DPIC -o threads.o
"threads.c", line 442: controlling expressions must have scalar type
"threads.c", line 512: controlling expressions must have scalar type
cc: acomp failed for threads.c
*** Error code 1
trio.c:
* Define isascii() if the system doesn't provide it
trio.h:
* The trio library's HAVE_CONFIG_H header is not the same as LibXML2's
HAVE_CONFIG_H header; this change is needed to avoid a double-inclusion
win32/configure.js:
* Added support for the LZMA compression option
win32/Makefile.{bcb,mingw,msvc}:
* Added appropriate bits to support WITH_LZMA=1
* Install the header files under $(INCPREFIX)\libxml2\libxml instead of
$(INCPREFIX)\libxml, to mirror the install location on Unix+Autotools
xml2-config.in:
* @MODULE_PLATFORM_LIBS@ (usually "-ldl") needs to be in there in order for
`xml2-config --libs` to provide a complete set of dependencies
xmllint.c:
* Use HAVE_MMAP instead of the less-explicit HAVE_SYS_MMAN_H
2012-08-06 11:32:54 +08:00
if not exist $( INCPREFIX) \l ibxml2 mkdir $( INCPREFIX) \l ibxml2
if not exist $( INCPREFIX) \l ibxml2\l ibxml mkdir $( INCPREFIX) \l ibxml2\l ibxml
2002-03-24 21:00:26 +00:00
if not exist $( BINPREFIX) mkdir $( BINPREFIX)
if not exist $( LIBPREFIX) mkdir $( LIBPREFIX)
2004-06-09 14:32:47 +00:00
if not exist $( SOPREFIX) mkdir $( SOPREFIX)
Various "make distcheck" and portability fixups
Makefile.am:
* Don't use @VAR@, use $(VAR). Autoconf's AC_SUBST provides us the Make
variable, it allows overriding the value at the command line, and
(notably) it avoids a Make parse error in the libxml2_la_LDFLAGS
assignment when @MODULE_PLATFORM_LIBS@ is empty
* Changed how the THREADS_W32 mechanism switches the build between
testThreads.c and testThreadsWin32.c as appropriate; using AM_CONDITIONAL
allows this to work cleanly and plays well with dependencies
* testapi.c should be specified as BUILT_SOURCES
* Create symlinks to the test/ and result/ subdirs so that the runtests
target is usable in out-of-source-tree builds
* Don't do MAKEFLAGS+=--silent as this is not portable to non-GNU Makes
* Fixed incorrect find(1) syntax in the "cleanup" rule, and doing "rm -f"
instead of just "rm" is good form
* (DIST)CLEANFILES needed a bit more coverage to allow "make distcheck" to
pass
configure.in:
* Need AC_PROG_LN_S to create test/ and result/ symlinks in Makefile.am
* AC_LIBTOOL_WIN32_DLL and AM_PROG_LIBTOOL are obsolete; these have been
superceded by LT_INIT
* Don't rebuild docs by default, as this requires GNU Make (as
implemented)
* Check for uint32_t as some platforms don't provide it
* Check for some more functions, and undefine HAVE_MMAP if we don't also
HAVE_MUNMAP (one system I tested on actually needed this)
* Changed THREADS_W32 from a filename insert into an Automake conditional
* The "Copyright" file will not be in the current directory if builddir !=
srcdir
doc/Makefile.am:
* EXTRA_DIST cannot use wildcards when they refer to generated files; this
breaks dependencies. What I did was define EXTRA_DIST_wc, which uses GNU
Make $(wildcard) directives to build up a list of files, and EXTRA_DIST,
as a literal expansion of EXTRA_DIST_wc. I also added a new rule,
"check-extra-dist", to simplify checking that the two variables are
equivalent. (Note that this works only when builddir == srcdir)
(I can implement this differently if desired; this is just one way of
doing it)
* Don't define an "all" target; this steps on Automake's toes
* Fixed up the "libxml2-api.xml ..." rule by using $(wildcard) for
dependencies (as Make doesn't process the wildcards otherwise) and
qualifying appropriate files with $(srcdir)
(Note that $(srcdir) is not needed in the dependencies, thanks to VPATH,
which we can count on as this is GNU-Make-only code anyway)
doc/devhelp/Makefile.am:
* Qualified appropriate files with $(srcdir)
* Added an "uninstall-local" rule so that "make distcheck" passes
doc/examples/Makefile.am:
* Rather than use a wildcard that doesn't work, use a substitution that
most Make programs can handle
doc/examples/index.py:
* Do the same here
include/libxml/nanoftp.h:
* Some platforms (e.g. MSVC 6) already #define INVALID_SOCKET:
user@host:/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/\
Include$ grep -R INVALID_SOCKET .
./WINSOCK.H:#define INVALID_SOCKET (SOCKET)(~0)
./WINSOCK2.H:#define INVALID_SOCKET (SOCKET)(~0)
include/libxml/xmlversion.h.in:
* Support ancient GCCs (I was actually able to build the library with 2.5
but for this bit)
python/Makefile.am:
* Expanded CLEANFILES to allow "make distcheck" to pass
python/tests/Makefile.am:
* Define CLEANFILES instead of a "clean" rule, and added tmp.xml to allow
"make distcheck" to pass
testRelax.c:
* Use HAVE_MMAP instead of the less explicit HAVE_SYS_MMAN_H (as some
systems have the header but not the function)
testSchemas.c:
* Use HAVE_MMAP instead of the less explicit HAVE_SYS_MMAN_H
testapi.c:
* Don't use putenv() if it's not available
threads.c:
* This fixes the following build error on Solaris 8:
libtool: compile: cc -DHAVE_CONFIG_H -I. -I./include -I./include \
-D_REENTRANT -D__EXTENSIONS__ -D_REENTRANT -Dsparc -Xa -mt -v \
-xarch=v9 -xcrossfile -xO5 -c threads.c -KPIC -DPIC -o threads.o
"threads.c", line 442: controlling expressions must have scalar type
"threads.c", line 512: controlling expressions must have scalar type
cc: acomp failed for threads.c
*** Error code 1
trio.c:
* Define isascii() if the system doesn't provide it
trio.h:
* The trio library's HAVE_CONFIG_H header is not the same as LibXML2's
HAVE_CONFIG_H header; this change is needed to avoid a double-inclusion
win32/configure.js:
* Added support for the LZMA compression option
win32/Makefile.{bcb,mingw,msvc}:
* Added appropriate bits to support WITH_LZMA=1
* Install the header files under $(INCPREFIX)\libxml2\libxml instead of
$(INCPREFIX)\libxml, to mirror the install location on Unix+Autotools
xml2-config.in:
* @MODULE_PLATFORM_LIBS@ (usually "-ldl") needs to be in there in order for
`xml2-config --libs` to provide a complete set of dependencies
xmllint.c:
* Use HAVE_MMAP instead of the less-explicit HAVE_SYS_MMAN_H
2012-08-06 11:32:54 +08:00
copy $( XML_SRCDIR) \i nclude\l ibxml\* .h $( INCPREFIX) \l ibxml2\l ibxml
2002-03-24 21:00:26 +00:00
copy $( BINDIR) \$ ( XML_SO) $( SOPREFIX)
copy $( BINDIR) \$ ( XML_A) $( LIBPREFIX)
2007-06-08 19:47:37 +00:00
copy $( BINDIR) \$ ( XML_A_DLL) $( LIBPREFIX)
2002-03-24 21:00:26 +00:00
copy $( BINDIR) \$ ( XML_IMP) $( LIBPREFIX)
2005-04-06 21:14:06 +00:00
install : install -libs
2002-03-24 21:00:26 +00:00
copy $( BINDIR) \* .exe $( BINPREFIX)
2002-07-10 19:22:22 +00:00
-copy $( BINDIR) \* .pdb $( BINPREFIX)
2002-03-24 21:00:26 +00:00
2005-04-06 21:14:06 +00:00
install-dist : install -libs
2004-06-09 14:32:47 +00:00
copy $( BINDIR) \x ml*.exe $( BINPREFIX)
2005-04-06 21:14:06 +00:00
-copy $( BINDIR) \x ml*.pdb $( BINPREFIX)
2004-06-09 14:32:47 +00:00
2002-03-24 21:00:26 +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
2005-04-06 21:14:06 +00:00
$( MAKE) /nologo PREFIX = $( BDPREFIX) SOPREFIX = $( BDPREFIX) \b in install-dist
2002-03-24 21:00:26 +00:00
cscript //NoLogo configure.js genreadme $( XML_BASENAME) $( BDVERSION) $( BDPREFIX) \r eadme.txt
# Makes the output directory.
$(BINDIR) :
if not exist $( BINDIR) mkdir $( BINDIR)
# Makes the libxml intermediate directory.
$(XML_INTDIR) :
if not exist $( XML_INTDIR) mkdir $( XML_INTDIR)
2002-09-29 17:54:00 +00:00
# Makes the static libxml intermediate directory.
$(XML_INTDIR_A) :
if not exist $( XML_INTDIR_A) mkdir $( XML_INTDIR_A)
2007-06-08 19:47:37 +00:00
# Makes the static for dll libxml intermediate directory.
$(XML_INTDIR_A_DLL) :
if not exist $( XML_INTDIR_A_DLL) mkdir $( XML_INTDIR_A_DLL)
2002-03-24 21:00:26 +00:00
# An implicit rule for libxml compilation.
{$(XML_SRCDIR)}.c{$(XML_INTDIR)}.obj ::
$( CC) $( CFLAGS) /Fo$( XML_INTDIR) \ /c $<
2002-09-29 17:54:00 +00:00
# An implicit rule for static libxml compilation.
{$(XML_SRCDIR)}.c{$(XML_INTDIR_A)}.obj ::
$( CC) $( CFLAGS) /D "LIBXML_STATIC" /Fo$( XML_INTDIR_A) \ /c $<
2007-06-08 19:47:37 +00:00
# An implicit rule for static for dll libxml compilation.
{$(XML_SRCDIR)}.c{$(XML_INTDIR_A_DLL)}.obj ::
$( CC) $( CFLAGS) /D "LIBXML_STATIC" /D "LIBXML_STATIC_FOR_DLL" /Fo$( XML_INTDIR_A_DLL) \ /c $<
2002-03-24 21:00:26 +00:00
# Compiles libxml source. Uses the implicit rule for commands.
$(XML_OBJS) : $( XML_INTDIR )
2002-09-29 17:54:00 +00:00
# Compiles static libxml source. Uses the implicit rule for commands.
$(XML_OBJS_A) : $( XML_INTDIR_A )
2007-06-08 19:47:37 +00:00
# Compiles static for dll libxml source. Uses the implicit rule for commands.
$(XML_OBJS_A_DLL) : $( XML_INTDIR_A_DLL )
2002-03-24 21:00:26 +00:00
# Creates the export definition file (DEF) for libxml.
$(XML_INTDIR)\$(XML_DEF) : $( XML_INTDIR ) $( XML_DEF ) .src
$( CPP) $( CPPFLAGS) $( XML_DEF) .src > $( XML_INTDIR) \$ ( XML_DEF)
2017-11-27 15:08:00 +01:00
$(XML_INTDIR)\$(XML_RES) : $( XML_INTDIR ) libxml 2.rc
rc -Fo $( XML_INTDIR) \$ ( XML_RES) libxml2.rc
2002-03-24 21:00:26 +00:00
# Creates the libxml shared object.
2017-11-27 15:08:00 +01:00
$(BINDIR)\$(XML_SO) : $( BINDIR ) $( XML_OBJS ) $( XML_INTDIR ) \$( XML_DEF ) $( XML_INTDIR ) \$( XML_RES )
2003-08-25 09:05:12 +00:00
$( LD) $( LDFLAGS) /DLL \
2017-11-27 15:08:00 +01:00
/IMPLIB:$( BINDIR) \$ ( XML_IMP) /OUT:$( BINDIR) \$ ( XML_SO) $( XML_OBJS) $( XML_INTDIR) \$ ( XML_RES) $( LIBS)
2007-06-08 19:47:37 +00:00
@$( _VC_MANIFEST_EMBED_DLL)
2002-03-24 21:00:26 +00:00
2003-08-25 09:05:12 +00:00
#$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF)
# $(LD) $(LDFLAGS) /DLL /DEF:$(XML_INTDIR)\$(XML_DEF) \
# /IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(LIBS)
2002-03-24 21:00:26 +00:00
# Creates the libxml archive.
2002-09-29 17:54:00 +00:00
$(BINDIR)\$(XML_A) : $( BINDIR ) $( XML_OBJS_A )
$( AR) $( ARFLAGS) /OUT:$( BINDIR) \$ ( XML_A) $( XML_OBJS_A)
2002-03-24 21:00:26 +00:00
2007-06-08 19:47:37 +00:00
# Creates the libxml static for dll archive.
$(BINDIR)\$(XML_A_DLL) : $( BINDIR ) $( XML_OBJS_A_DLL )
$( AR) $( ARFLAGS) /OUT:$( BINDIR) \$ ( XML_A_DLL) $( XML_OBJS_A_DLL)
2002-03-24 21:00:26 +00:00
# Makes the utils intermediate directory.
$(UTILS_INTDIR) :
if not exist $( UTILS_INTDIR) mkdir $( UTILS_INTDIR)
# An implicit rule for xmllint and friends.
! i f "$(STATIC)" = = "1"
{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe :
$( CC) /D "LIBXML_STATIC" $( CFLAGS) /Fo$( UTILS_INTDIR) \ /c $<
$( LD) $( LDFLAGS) /OUT:$@ $( XML_A) $( LIBS) $( UTILS_INTDIR) \$ ( <B) .obj
2007-06-08 19:47:37 +00:00
@$( _VC_MANIFEST_EMBED_EXE)
2002-03-24 21:00:26 +00:00
! e l s e
{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe :
$( CC) $( CFLAGS) /Fo$( UTILS_INTDIR) \ /c $<
2002-10-31 16:00:22 +00:00
$( LD) $( LDFLAGS) /OUT:$@ $( XML_IMP) $( LIBS) $( UTILS_INTDIR) \$ ( <B) .obj
2007-06-08 19:47:37 +00:00
@$( _VC_MANIFEST_EMBED_EXE)
2002-03-24 21:00:26 +00:00
! e n d i f
# Builds xmllint and friends. Uses the implicit rule for commands.
2007-06-08 19:47:37 +00:00
$(UTILS) : $( UTILS_INTDIR ) $( BINDIR ) libxml libxmla libxmladll
2002-03-24 21:00:26 +00:00
# Source dependences should be autogenerated somehow here, but how to
# do it? I have no clue.
2004-04-29 14:04:09 +00:00
# TESTS
2012-09-18 11:15:06 +08:00
tests : checktests XPathtests
checktests : $( UTILS )
cd .. && win32\$ ( BINDIR) \r untest.exe
cd .. && win32\$ ( BINDIR) \t estrecurse.exe
cd .. && win32\$ ( BINDIR) \t estapi.exe
cd .. && win32\$ ( BINDIR) \t estchar.exe
cd .. && win32\$ ( BINDIR) \t estdict.exe
cd .. && win32\$ ( BINDIR) \r unxmlconf.exe
2004-04-29 14:04:09 +00:00