Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
apply a couple of fixes based on a Coverity report forwarded by Derrick
* catalog.c: apply a couple of fixes based on a Coverity report forwarded by Derrick Price. * VxWorks/README VxWorks/Makefile VxWorks/build.sh: instructions Makefile, and shell script to build on VxWorks 6.4+ provided by Jim Wert. Daniel svn path=/trunk/; revision=3747
- Loading branch information
Daniel Veillard
committed
Jun 10, 2008
1 parent
39801e5
commit 63806b5
Showing
5 changed files
with
250 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,68 @@ | |||
##---------------------------------------------------------------- | |||
## | |||
##-- Filename: Makefile | |||
## | |||
##-- $Date: 2008/02/23 02:56:17 $ | |||
##-- $Revision: 1.2 $ | |||
##-- $Name: $ | |||
## | |||
##---------------------------------------------------------------- | |||
|
|||
NAME = xml2 | |||
TOOL_FAMILY=gnu | |||
|
|||
include $(WIND_USR)/tool/gnu/make.$(VXCPU) | |||
|
|||
FLAGS = -Wall -g -Isrc -Isrc/include -D_REENTRANT=1 | |||
#FLAGS = -Wall -O2 -Isrc -Isrc/include -D_REENTRANT=1 | |||
|
|||
FLAGS += $(DEFINE_CC) $(CC_ARCH_SPEC) -MD -MP -D_VX_CPU=_VX_$(CPU) -D_VX_TOOL_FAMILY=gnu -D_VX_TOOL=$(TOOL) | |||
ifeq ($(VXTYPE),RTP) | |||
FLAGS += -mrtp -fpic -I$(WIND_USR)/h -I$(WIND_USR)/h/wrn/coreip | |||
else | |||
FLAGS += -D_WRS_KERNEL -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip | |||
endif | |||
|
|||
ifeq ($(VXTYPE),RTP) | |||
ifeq ($(CPU),SH32) | |||
LIB_LDFLAGS += -L$(WIND_USR)/lib/sh/SH32/commonle/PIC | |||
else | |||
LIB_LDFLAGS += $(LD_LINK_PATH_ATEND) $(LD_PARTIAL_LAST_FLAGS) | |||
endif | |||
endif | |||
|
|||
OBJS = c14n.o catalog.o chvalid.o \ | |||
debugXML.o dict.o DOCBparser.o \ | |||
encoding.o entities.o error.o \ | |||
globals.o \ | |||
hash.o \ | |||
legacy.o list.o \ | |||
parser.o parserInternals.o pattern.o \ | |||
relaxng.o \ | |||
SAX2.o SAX.o schematron.o \ | |||
threads.o tree.o \ | |||
uri.o \ | |||
valid.o \ | |||
xinclude.o xlink.o xmlcatalog.o xmlIO.o \ | |||
xmlmemory.o xmlmodule.o xmlreader.o xmlregexp.o \ | |||
xmlsave.o xmlschemas.o xmlschemastypes.o xmlstring.o \ | |||
xmlunicode.o xmlwriter.o xpath.o xpointer.o | |||
|
|||
all : lib$(NAME).so | |||
|
|||
init : | |||
mkdir -p objs | |||
|
|||
.PHONY : lib$(NAME).so | |||
|
|||
lib$(NAME).so : init $(patsubst %.o, objs/%.o, $(OBJS)) | |||
$(CC) $(FLAGS) $(LIB_LDFLAGS) -shared -o $@ $(patsubst %.o, objs/%.o, $(OBJS)) | |||
|
|||
(NAME).out : init $(patsubst %.o, objs/%.o, $(OBJS)) | |||
$(CC) $(FLAGS) -o $@ $(patsubst %.o, objs/%.o, $(OBJS)) | |||
|
|||
objs/%.o: src/%.c | |||
$(CC) $(FLAGS) -o $@ -c $< | |||
|
|||
clean: | |||
rm -fR *.so objs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,86 @@ | |||
libxml2 on VxWorks 6.4+ | |||
|
|||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,85 @@ | |||
LIBXML2=$1 | |||
TARGETCPU=$2 | |||
TARGETTYPE=$3 | |||
|
|||
if [ -z "$2" ]; then | |||
TARGETCPU=SIMPENTIUMgnu | |||
fi | |||
|
|||
if [ -z "$3" ]; then | |||
TARGETTYPE=RTP | |||
fi | |||
|
|||
echo "LIBXML2 Version: ${LIBXML2}" | |||
echo "LIBXML2 Target CPU: ${TARGETCPU}" | |||
echo "LIBXML2 Target Type: ${TARGETTYPE}" | |||
|
|||
rm -fR src | |||
tar xvzf ${LIBXML2}.tar.gz | |||
mv ${LIBXML2} src | |||
cd src | |||
|
|||
./configure --with-minimum --with-reader --with-writer --with-regexps --with-threads --with-thread-alloc | |||
|
|||
find . -name '*.in' -exec rm -fR {} + | |||
find . -name '*.am' -exec rm -fR {} + | |||
rm -fR *.m4 | |||
rm -fR *.pc | |||
rm -fR *.pl | |||
rm -fR *.py | |||
rm -fR *.spec | |||
rm -fR .deps | |||
rm -fR AUTHORS | |||
rm -fR bakefile | |||
rm -fR ChangeLog | |||
rm -fR config.guess | |||
rm -fR config.log | |||
rm -fR config.status | |||
rm -fR config.stub | |||
rm -fR config.sub | |||
rm -fR configure | |||
rm -fR COPYING | |||
rm -fR Copyright | |||
rm -fR depcomp | |||
rm -fR doc | |||
rm -fR example | |||
rm -fR INSTALL | |||
rm -fR install-sh | |||
rm -fR libxml.3 | |||
rm -fR ltmain.sh | |||
rm -fR Makefile | |||
rm -fR Makefile.tests | |||
rm -fR macos | |||
rm -fR mkinstalldirs | |||
rm -fR missing | |||
rm -fR nanoftp.c | |||
rm -fR nanohttp.c | |||
rm -fR NEWS | |||
rm -fR python | |||
rm -fR README | |||
rm -fR README.tests | |||
rm -fR regressions.xml | |||
rm -fR result | |||
rm -fR runsuite.c | |||
rm -fR runtest.c | |||
rm -fR test | |||
rm -fR test*.c | |||
rm -fR TODO* | |||
rm -fR trio* | |||
rm -fR vms | |||
rm -fR win32 | |||
rm -fR xml2* | |||
rm -fR xmllint.c | |||
rm -fR xstc | |||
|
|||
cd .. | |||
|
|||
make clean all VXCPU=${TARGETCPU} VXTYPE=${TARGETTYPE} | |||
|
|||
if [ "${TARGETTYPE}" = "RTP" ]; then | |||
cp libxml2.so ../../lib/. | |||
else | |||
cp xml2.out ../../bin/. | |||
fi | |||
|
|||
cp -R src/include/libxml ../../include/. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters