Re: [xml] Question about character encoding support
- From: jwert ilstechnology com
- To: xml gnome org
- Subject: Re: [xml] Question about character encoding support
- Date: Mon, 9 Jun 2008 10:53:37 -0400
Daniel,
Here are my instructions for building
on VxWorks.... I am very ashamed of how I did this because it is a complete
hack, but it works great, so I can't complain too much.
General Information
1. The only way to build for VxWorks
is to cross compile from a windows or linux system. We use a RedHat
5.1 workstation system as our build environment.
2. VxWorks 6.X has two main types of
executable, DKMs (dynamic kernel modules), and RTPs (real-time processes).
Kernel modules are the bread and butter of VxWorks, but they look
nothing like processes/threads in normal UNIX/Windows systems. RTPs
are more like processes that have memory protection, threads, etc. VxWorks
6.X also introduces some level of POSIX conformance to their environment.
The POSIX conformance was the key for us to be able to port libxml2.
We support accessing libxml2 from both DKMs and RTPs.
3. There are 2 compilers for VxWorks,
the WindRiver compiler, and a port of the GNU toolchain, we have only tested
and built with the GNU toolchain.
How To Build
1. Run the configure on your native
linux system (this is the cheesy hack). Since the VxWorks GNU toolchain
is very close in version to the one in red hat, it generates a good config.h
file. We configured libxml2 with the following to keep the size down,
(but we have done basic testing with everything compiled in).
./configure --with-minimum --with-reader
--with-writer --with-regexps --with-threads --with-thread-alloc
2. Rename the libxml2 folder to "src".
This step is required for our replacement makefile to work.
3. Run the replacement makefile. I
wrote a new makefile that sets all the proper vxworks defines and uses
the correct compilers. The two defines on the make command line are
to tell it which VxWorks Target (SH3.2 little endian), and the executable
type. We have tested this code on PENTIUM2gnu and SH32gnule.
This makefile creates a shared library
that runs on VxWorks: (libxml2.so)
make -f Makefile.vxworks clean all VXCPU=SH32gnule
VXTYPE=RTP
This makefile creates a kernel module
that runs on VxWorks: (xml2.out)
make -f Makefile.vxworks clean all VXCPU=SH32gnule
VXTYPE=DKM
Important Notes
1. There are several ways that this
process could be improved, but at the end of the day, we make products,
not port libraries, so we did a meets minimum for our needs.
2. VxWorks is the devil, give me embedded
linux every day.
3. No matter what I tried, I couldn't
get the configure to pick up the VxWorks toolchain, and in my investigation,
it has something to do with automake/autoconf, not any individual package.
VxWorks doesn't play by the normal rules for building toolchains.
4. The PIC flag in VxWorks (especially
for SH processors) is very important, and very troublesome. On linux,
you can liberally use the PIC flag when compiling and the compiler/linker
will ignore it as needed, on VxWorks if must always be on for shared libraries,
and always be off for static libraries and executables.
5. If anyone wants to work on a better
way to do the build of libxml2 for VxWorks, I'm happy to help as much as
I can, but I'm not looking to support it myself.
Attached Files
1. To use my Makefile for vxworks, you
should enter the vxworks environment (/opt/windriver/wrenv.linux -p vxworks-6.4
for me).
2. Run: build.sh libxml2-2.6.32 SH32gnule
RTP (where you have libxml2-2.6.32.tar.gz and the Makefile in the same
directory as the script file).
Thanks,
Jim Wert Jr.
JWert ILSTechnology com
Daniel Veillard <veillard redhat com>
06/09/2008 06:23 AM
Please respond to
veillard redhat com |
|
To
| jwert ilstechnology com
|
cc
| xml gnome org
|
Subject
| Re: [xml] Question about character encoding
support |
|
On Sun, Jun 08, 2008 at 05:46:20PM -0400, jwert ilstechnology com
wrote:
> List,
>
> We are using libxml-2.6.32 on VxWorks 6.4. It is far from being
a posix
> system. I compiled libxml2 without too many issues, but porting
iconv is
> proving to be a lot more difficult. What options do I have for
supporting
> various character encodings when parsing XML? 98% of our customers
use
> UTF-8 encoding, but I don't want to limit them if I don't have to.
For
> other parts of our product, I have written my own layer to convert
between
> character sets.
>
> What is the default behavior for libxml2 if it doesn't have iconv
> available?
By default you will have UTF-8 and UTF-16 which are mandatory, and
also
the full set of ISO-8859-x (see xmlRegisterCharEncodingHandlersISO8859x
in encoding.c), plus the possibility to connect new handlers at runtime
http://xmlsoft.org/html/libxml-encoding.html#xmlNewCharEncodingHandler
How did you build on VxWorks ? Does configure work ? If not could you
post some kind of Howto so that others can benefits too ?
thanks,
Daniel
--
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard | virtualization library http://libvirt.org/
veillard redhat com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
Attachment:
Makefile
Description: Binary data
Attachment:
build.sh
Description: Binary data
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]