Home | History | Annotate | only in /external/libxml2/VxWorks
Up to higher level directory
NameDateSize
build.sh22-Oct-20201.5K
Makefile22-Oct-20201.8K
README22-Oct-20203.4K

README

      1              libxml2 on VxWorks 6.4+
      2 
      3 Here are my instructions for building on VxWorks.... I am very ashamed of
      4 how I did this because it is a complete hack, but it works great, so I
      5 can't complain too much.
      6 
      7 General Information
      8 
      9 1. The only way to build for VxWorks is to cross compile from a windows or
     10 linux system.  We use a RedHat 5.1 workstation system as our build
     11 environment.
     12 
     13 2. VxWorks 6.X has two main types of executable, DKMs (dynamic kernel
     14 modules), and RTPs (real-time processes).  Kernel modules are the bread
     15 and butter of VxWorks, but they look nothing like processes/threads in
     16 normal UNIX/Windows systems.  RTPs are more like processes that have
     17 memory protection, threads, etc.  VxWorks 6.X also introduces some level
     18 of POSIX conformance to their environment.  The POSIX conformance was the
     19 key for us to be able to port libxml2.  We support accessing libxml2 from
     20 both DKMs and RTPs.
     21 
     22 3. There are 2 compilers for VxWorks, the WindRiver compiler, and a port
     23 of the GNU toolchain, we have only tested and built with the GNU
     24 toolchain.
     25 
     26 How To Build
     27 
     28 1. Run the configure on your native linux system (this is the cheesy
     29 hack).  Since the VxWorks GNU toolchain is very close in version to the
     30 one in red hat, it generates a good config.h file.  We configured libxml2
     31 with the following to keep the size down, (but we have done basic testing
     32 with everything compiled in).
     33 
     34 ./configure --with-minimum --with-reader --with-writer --with-regexps
     35 --with-threads --with-thread-alloc
     36 
     37 2. Rename the libxml2 folder to "src".  This step is required for our
     38 replacement makefile to work.
     39 
     40 3. Run the replacement makefile.  I wrote a new makefile that sets all the
     41 proper vxworks defines and uses the correct compilers.  The two defines on
     42 the make command line are to tell it which VxWorks Target (SH3.2 little
     43 endian), and the executable type.  We have tested this code on PENTIUM2gnu
     44 and SH32gnule.
     45 
     46 This makefile creates a shared library that runs on VxWorks: (libxml2.so)
     47 make -f Makefile.vxworks clean all VXCPU=SH32gnule VXTYPE=RTP
     48 
     49 This makefile creates a kernel module that runs on VxWorks: (xml2.out)
     50 make -f Makefile.vxworks clean all VXCPU=SH32gnule VXTYPE=DKM
     51 
     52 Important Notes
     53 
     54 1. There are several ways that this process could be improved, but at the
     55 end of the day, we make products, not port libraries, so we did a meets
     56 minimum for our needs.
     57 
     58 2. VxWorks is the devil, give me embedded linux every day.
     59 
     60 3. No matter what I tried, I couldn't get the configure to pick up the
     61 VxWorks toolchain, and in my investigation, it has something to do with
     62 automake/autoconf, not any individual package.  VxWorks doesn't play by
     63 the normal rules for building toolchains.
     64 
     65 4. The PIC flag in VxWorks (especially for SH processors) is very
     66 important, and very troublesome.  On linux, you can liberally use the PIC
     67 flag when compiling and the compiler/linker will ignore it as needed, on
     68 VxWorks if must always be on for shared libraries, and always be off for
     69 static libraries and executables.
     70 
     71 5. If anyone wants to work on a better way to do the build of libxml2 for
     72 VxWorks, I'm happy to help as much as I can, but I'm not looking to
     73 support it myself.
     74 
     75 Attached Files
     76 
     77 1. To use my Makefile for vxworks, you should enter the vxworks
     78 environment (/opt/windriver/wrenv.linux -p vxworks-6.4 for me).
     79 2. Run: build.sh libxml2-2.6.32 SH32gnule RTP (where you have
     80 libxml2-2.6.32.tar.gz and the Makefile in the same directory as the script
     81 file).
     82 
     83 Thanks,
     84 
     85 Jim Wert Jr.
     86 JWert (a] ILSTechnology.com
     87