Annotation of embedaddon/libxml2/VxWorks/README, revision 1.1

1.1     ! misho       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@ILSTechnology.com

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>