Ensure the building of both static and shared libs.
diff --git a/Makefile b/Makefile
index 0c4d94e..11ae972 100644
--- a/Makefile
+++ b/Makefile
@@ -1,80 +1,78 @@
-#Set your paths here.
-ZLIB_PATH = ./src/zLib-1.2.5
 MZPARSER_PATH = ./src/mzParser
-EXPAT_PATH = ./src/expat-2.0.1
-SQLITE_PATH = ./src/sqlite-3.7.7.1
 MST_PATH = ./src/MSToolkit
 
-HEADER_PATH = ./include
+HEADER_PATH = -I./include -I/usr/include/hdf5/serial/
 
 MZPARSER = mzp.MSNumpress.o mzp.mzp_base64.o mzp.BasicSpectrum.o mzp.mzParser.o mzp.RAMPface.o mzp.saxhandler.o mzp.saxmzmlhandler.o \
 	mzp.saxmzxmlhandler.o mzp.Czran.o mzp.mz5handler.o mzp.mzpMz5Config.o mzp.mzpMz5Structs.o mzp.BasicChromatogram.o mzp.PWIZface.o
+
 MZPARSERLITE = mzp.MSNumpress.o mzp.mzp_base64_lite.o mzp.BasicSpectrum_lite.o mzp.mzParser_lite.o mzp.RAMPface_lite.o mzp.saxhandler_lite.o mzp.saxmzmlhandler_lite.o \
   mzp.saxmzxmlhandler_lite.o mzp.Czran_lite.o mzp.mz5handler_lite.o mzp.mzpMz5Config_lite.o mzp.mzpMz5Structs_lite.o mzp.BasicChromatogram_lite.o mzp.PWIZface_lite.o
-EXPAT = xmlparse.o xmlrole.o xmltok.o
-ZLIB = adler32.o compress.o crc32.o deflate.o inffast.o inflate.o infback.o inftrees.o trees.o uncompr.o zutil.o
+
 MSTOOLKIT = Spectrum.o MSObject.o
 READER = MSReader.o
 READERLITE = MSReaderLite.o
-SQLITE = sqlite3.o 
 
 CC = g++
 GCC = gcc
-NOSQLITE = -D_NOSQLITE
+MZ5 = -DMST_MZ5 -DMZP_MZ5
 
-CFLAGS = -O3 -static -I. -I$(HEADER_PATH) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -DHAVE_EXPAT_CONFIG_H
-LIBS = -lm -lpthread -ldl
+SOVER = 77
+RELVER = $(SOVER).0.0
 
-all:  $(ZLIB) $(MZPARSER) $(MZPARSERLITE) $(MSTOOLKIT) $(READER) $(READERLITE) $(EXPAT) $(SQLITE)
-	ar rcs libmstoolkitlite.a $(ZLIB) $(EXPAT) $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE)
-	ar rcs libmstoolkit.a $(ZLIB) $(EXPAT) $(MZPARSER) $(MSTOOLKIT) $(READER) $(SQLITE)
-#	$(CC) $(CFLAGS) MSTDemo.cpp -L. -lmstoolkitlite -o MSTDemo
-	$(CC) $(CFLAGS) -I./include MSSingleScan/MSSingleScan.cpp -L. -lmstoolkitlite -o msSingleScan
-#	$(CC) $(CFLAGS) MSConvertFile.cpp -L. -lmstoolkitlite -o MSConvertFile
+LIBS = -lm -lpthread -ldl -lhdf5_serial -lzip -lsqlite3 -lexpat
+LIB_PATH := -L./
 
-lite: $(ZLIB) $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE) $(EXPAT)
-	ar rcs libmstoolkitlite.a $(ZLIB) $(EXPAT) $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE)
-	$(CC) $(CFLAGS) -I./include MSSingleScan/MSSingleScan.cpp -L. -lmstoolkitlite -o msSingleScan
+CLEAN_LIBS = libmstoolkitlite.a libmstoolkitlite.so libmstoolkitlite.so.$(SOVER)* libmstoolkit.a libmstoolkit.so libmstoolkit.so.$(SOVER)* 
 
-clean:
-	rm -f *.o libmstoolkitlite.a libmstoolkit.a msSingleScan
+arlib: CFLAGS += -O3 -static -I. $(HEADER_PATH) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -DHAVE_EXPAT_CONFIG_H
+arlib: 
+	make clean_objects
+	CFLAGS="$(CFLAGS)" make -e all
 
-# zLib objects
+	ar rcs libmstoolkitlite.a $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE)
+	ar rcs libmstoolkit.a $(MZPARSER) $(MSTOOLKIT) $(READER)
 
-adler32.o : $(ZLIB_PATH)/adler32.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/adler32.c -c
+solib: CFLAGS += -shared -fPIC -g $(HEADER_PATH) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC -DHAVE_EXPAT_CONFIG_H
+solib: 
+	make clean
+	CFLAGS="$(CFLAGS)" make -e all
 
-compress.o : $(ZLIB_PATH)/compress.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/compress.c -c
+	$(CC) $(CFLAGS) -o libmstoolkitlite.so.$(RELVER) -Wl,-z,relro -Wl,-soname,libmstoolkitlite.so.$(SOVER) $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE) $(LIB_PATH) $(LIBS)
+	ln -sf libmstoolkitlite.so.$(RELVER) libmstoolkitlite.so.$(SOVER)
+	ln -sf libmstoolkitlite.so.$(SOVER) libmstoolkitlite.so
 
-crc32.o : $(ZLIB_PATH)/crc32.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/crc32.c -c
+	$(CC) $(CFLAGS) -o libmstoolkit.so.$(RELVER) -Wl,-z,relro -Wl,-soname,libmstoolkit.so.$(SOVER) $(MZPARSER) $(MSTOOLKIT) $(READER) $(LIB_PATH) $(LIBS)
+	ln -sf libmstoolkit.so.$(RELVER) libmstoolkit.so.$(SOVER)
+	ln -sf libmstoolkit.so.$(SOVER) libmstoolkit.so
 
-deflate.o : $(ZLIB_PATH)/deflate.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/deflate.c -c
+	$(CC) $(CFLAGS) -I./include MSSingleScan/MSSingleScan.cpp $(LIB_PATH) -lmstoolkitlite -o msSingleScan
 
-inffast.o : $(ZLIB_PATH)/inffast.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/inffast.c -c
+all:  $(MZPARSER) $(MZPARSERLITE) $(MSTOOLKIT) $(READER) $(READERLITE)
 
-inflate.o : $(ZLIB_PATH)/inflate.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/inflate.c -c
+#	Not found in the source tree
+#	$(CC) $(CFLAGS) MSTDemo.cpp $(LIB_PATH) -lmstoolkitlite -o MSTDemo
 
-infback.o : $(ZLIB_PATH)/infback.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/infback.c -c
+#	$(CC) $(CFLAGS) -I./include MSSingleScan/MSSingleScan.cpp $(LIB_PATH) -lmstoolkitlite -o msSingleScan
 
-inftrees.o : $(ZLIB_PATH)/inftrees.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/inftrees.c -c
+#	Not found in the source tree
+#	$(CC) $(CFLAGS) MSConvertFile.cpp $(LIB_PATH) -lmstoolkitlite -o MSConvertFile
 
-trees.o : $(ZLIB_PATH)/trees.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/trees.c -c
 
-uncompr.o : $(ZLIB_PATH)/uncompr.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/uncompr.c -c
+#lite: $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE) 
+#
+#	ar rcs libmstoolkitlite.a $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE)
+#	$(CC) $(LIB_PATH) $(CFLAGS) -o libmstoolkitlite.so.$(RELVER) -Wl,-z,relro -Wl,-soname,libmstoolkitlite.so.$(SOVER)  $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE) $(LIBS) 
+#	ln -sf libmstoolkitlite.so.$(RELVER) libmstoolkitlite.so.$(SOVER)
+#	ln -sf libmstoolkitlite.so.$(SOVER) libmstoolkitlite.so
 
-zutil.o : $(ZLIB_PATH)/zutil.c
-	$(GCC) $(CFLAGS) $(ZLIB_PATH)/zutil.c -c
+clean_objects: 
+	rm -f *.o msSingleScan
 
+clean_libs: 
+	rm -f $(CLEAN_LIBS)
 
+clean: clean_libs clean_objects
 
 #mzParser objects
 mzp.%.o : $(MZPARSER_PATH)/%.cpp
@@ -84,26 +82,7 @@ mzp.%.o : $(MZPARSER_PATH)/%.cpp
 mzp.%_lite.o : $(MZPARSER_PATH)/%.cpp
 	$(CC) $(CFLAGS) $< -c -o $@
 
-
-#expat objects
-xmlparse.o : $(EXPAT_PATH)/xmlparse.c
-	$(GCC) $(CFLAGS) $(EXPAT_PATH)/xmlparse.c -c
-xmlrole.o : $(EXPAT_PATH)/xmlrole.c
-	$(GCC) $(CFLAGS) $(EXPAT_PATH)/xmlrole.c -c
-xmltok.o : $(EXPAT_PATH)/xmltok.c
-	$(GCC) $(CFLAGS) $(EXPAT_PATH)/xmltok.c -c
-
-
-
-#SQLite object
-sqlite3.o : $(SQLITE_PATH)/sqlite3.c
-	$(GCC) $(CFLAGS) $(SQLITE_PATH)/sqlite3.c -c
-
-
-
-
 #MSToolkit objects
-
 Spectrum.o : $(MST_PATH)/Spectrum.cpp
 	$(CC) $(CFLAGS) $(MST_PATH)/Spectrum.cpp -c
 
