Re: [xml] autotool based vs. plain make builds



Rob Richards wrote:
Roumen Petrov wrote:
I will hijack mail thread as change subject and I will exclude
Matthias Jung as hijacked post is for Solaris.

The original issue start here
"http://mail.gnome.org/archives/xml/2009-November/msg00005.html";


Rob Richards wrote:
Daniel Veillard wrote:
On Fri, Oct 23, 2009 at 12:09:19AM +0300, Roumen Petrov wrote:
Daniel Veillard wrote:
On Thu, Oct 22, 2009 at 12:26:27AM +0300, Roumen Petrov wrote:
Matthias Jung wrote:
[SNIP]

A piece of the patch from this appears to break at least the native
windows build by forcing LIBXML_STATIC to always be defined.
The change in question is here:
http://git.gnome.org/browse/libxml2/diff/libxml.h?id=120a269976f4198e54cc7b848dd78fca81bb9179


which is part of this collection of changes:
http://git.gnome.org/browse/libxml2/commit/?id=120a269976f4198e54cc7b848dd78fca81bb9179



If this is only for mingw then the following would be more
appropriate imo:

Technically no . It is for all libtool based builds.

It is my mistake as I don't provide complete patch in above mentioned
mail thread (
http://mail.gnome.org/archives/xml/2009-November/msg00020.html ).

Why is not mingw specific. The one of the libtool branches is for
support of MSVC compiler. No idea when this branch will be merger
mainstream. After merge usres that will try to use autotool(with
libtool) based build will enter into same issue.


So I would like to propose to add flag -DNOLIBTOOL to plain make file
builds.
- win32/Makefile.bcb
replace CPPFLAGS = -I"$(XML_SRCDIR)\include" with
CPPFLAGS = -I"$(XML_SRCDIR)\include" -DNOLIBTOOL

- win32/Makefile.mingw
replace CPPFLAGS += -I$(XML_SRCDIR)/include with
CPPFLAGS += -I$(XML_SRCDIR)/include -DNOLIBTOOL

- win32/Makefile.msvc
replace CPPFLAGS = /nologo /I$(XML_SRCDIR)\include with
CPPFLAGS = /nologo /I$(XML_SRCDIR)\include /D "NOLIBTOOL"

- Makefile.win ???
No idea. May be is better to be removed from sources.

and finally change in libxml.h :
#ifndef NOLIBTOOL
#ifndef PIC
#if !defined(PIC) && defined(__MINGW32__)
# define LIBXML_STATIC
#endif
#endif

Currently #define LIBXML_STATIC from libxml.h impact only windows
platform (cf. threads.c ). This could change in future if new code is
added under #ifdef LIBXML_STATIC statement.


That works for the win32 build (at least msvc). I ended up using the
following block of code though:

#ifdef IN_LIBXML
#ifdef __GNUC__
#ifdef PIC
#ifdef linux
#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3)
#include "elfgcchack.h"
#endif
#endif
#elif !defined(NOLIBTOOL)
# define LIBXML_STATIC
#endif
#endif
#endif
#endif /* ! __XML_LIBXML_H__ */

Rob

No above  is not correct as it is not for GNU compiler .
GNU libtool define C preprocessor directive -DPIC for shared builds and appropriate flag for compiler. This mean that case has to be outside #ifdef __GNUC__ and -DPIC is opposite to -DLIBXML_STATIC.

Roumen





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]