--- expat/Makefile.org	Mon Mar  8 08:20:38 1999
+++ expat/Makefile	Tue Jun  1 10:58:34 1999
@@ -4,27 +4,44 @@
 # use -DXML_BYTE_ORDER=21 for big-endian (network) byte order.
 # -DXML_NS adds support for checking of lexical aspects of XML namespaces spec
 # -DXML_MIN_SIZE makes a smaller but slower parser
-CFLAGS=-O2 -Ixmltok -Ixmlparse -DXML_NS
+CFLAGS=-O2 -Ixmltok -Ixmlparse -DXML_NS -fpic
 # Use one of the next two lines; unixfilemap is better if it works.
 FILEMAP_OBJ=xmlwf/unixfilemap.o
 #FILEMAP_OBJ=xmlwf/readfilemap.o
 OBJS=xmltok/xmltok.o \
   xmltok/xmlrole.o \
-  xmlwf/xmlwf.o \
-  xmlwf/xmlfile.o \
-  xmlwf/codepage.o \
   xmlparse/xmlparse.o \
   xmlparse/hashtable.o \
   $(FILEMAP_OBJ)
+XOBJS=xmlwf/xmlwf.o \
+  xmlwf/xmlfile.o \
+  xmlwf/codepage.o
 EXE=
+LIB=.a
+AR=ar
+AROPTS=cr
+RANLIB=ranlib
+SHLIB=.so
+SHLD=gcc
+SHLDOPTS=-shared -o
+
+
+all: libxmltok$(LIB) xmlwf/xmlwf$(EXE)
+shared: libexpat$(SHLIB)
+
+libxmltok$(LIB): $(OBJS)
+	$(AR) $(AROPTS) libxmltok$(LIB) $(OBJS)
+	$(RANLIB) libxmltok$(LIB)
 
-all: xmlwf/xmlwf$(EXE)
+libexpat$(SHLIB): $(OBJS)
+	$(SHLD) $(SHLDOPTS) libexpat$(SHLIB) $(OBJS)
 
-xmlwf/xmlwf$(EXE): $(OBJS)
-	$(CC) $(CFLAGS) -o $@ $(OBJS)
+xmlwf/xmlwf$(EXE): $(XOBJS) libxmltok$(LIB)
+	$(CC) $(CFLAGS) -o $@ $(XOBJS) -L. -lxmltok
 
 clean:
-	rm -f $(OBJS) xmlwf/xmlwf$(EXE)
+	rm -f $(XOBJS) $(OBJS) xmlwf/xmlwf$(EXE) libxmltok$(LIB) \
+              libxmltok$(SHLIB)
 
 xmltok/nametab.h: gennmtab/gennmtab$(EXE)
 	rm -f $@
