Separate making of shared lib; other makefile clean up
diff --git a/Makefile b/Makefile
index cd22b02..b9feabd 100644
--- a/Makefile
+++ b/Makefile
@@ -7,11 +7,15 @@
 # See BSD-3-Clause license in README.md
 #
 
-
 CC=cc
+#CC=/usr/local/bin/gcc-9
 
 CFLAGS=-I inc -I test -Os -fPIC
 
+# The following are used before a release of QCBOR help to make sure
+# the code compiles and runs in the most strict environments, but not
+# all compilers support them so they are not turned on.
+#CFLAGS=-I inc -I test -Os -fpic -Wall -pedantic-errors -Wextra -Wshadow -Wparentheses -xc -std=c99
 
 
 QCBOR_OBJ=src/UsefulBuf.o src/qcbor_encode.o src/qcbor_decode.o src/ieee754.o src/qcbor_err_to_str.o
@@ -20,9 +24,11 @@
     test/qcbor_decode_tests.o test/run_tests.o \
     test/float_tests.o test/half_to_double_from_rfc7049.o
 
-.PHONY: all install uninstall clean
+.PHONY: all so install uninstall clean
 
-all: qcbortest qcbormin libqcbor.a libqcbor.so
+all: qcbortest qcbormin libqcbor.a
+
+so:	libqcbor.so
 
 qcbortest: libqcbor.a $(TEST_OBJ) cmd_line_main.o
 	$(CC) -o $@ $^  libqcbor.a
@@ -33,8 +39,11 @@
 libqcbor.a: $(QCBOR_OBJ)
 	ar -r $@ $^
 
+# The shared library is not made by default because of platform
+# variability For example MacOS and Linux behave differently and some
+# IoT OS's don't support them at all.
 libqcbor.so: $(QCBOR_OBJ)
-		$(CC) $^ $(CFLAGS) -dead_strip -o $@ -shared
+	$(CC) -shared $^ $(CFLAGS) -o $@
 
 PUBLIC_INTERFACE=inc/qcbor/UsefulBuf.h inc/qcbor/qcbor_private.h inc/qcbor/qcbor_common.h inc/qcbor/qcbor_encode.h inc/qcbor/qcbor_decode.h
 
@@ -42,7 +51,7 @@
 src/qcbor_decode.o: inc/qcbor/UsefulBuf.h inc/qcbor/qcbor_private.h inc/qcbor/qcbor_common.h inc/qcbor/qcbor_encode.h src/ieee754.h
 src/qcbor_encode.o: inc/qcbor/UsefulBuf.h inc/qcbor/qcbor_private.h inc/qcbor/qcbor_common.h inc/qcbor/qcbor_decode.h src/ieee754.h
 src/iee754.o: src/ieee754.h
-src/qcbor_err_to_str.o: src/qcbor_err_to_str.c
+src/qcbor_err_to_str.o: inc/qcbor/qcbor_common.h
 
 test/run_tests.o: test/UsefulBuf_Tests.h test/float_tests.h test/run_tests.h test/qcbor_encode_tests.h test/qcbor_decode_tests.h
 test/UsefulBuf_Tests.o: test/UsefulBuf_Tests.h inc/qcbor/UsefulBuf.h
@@ -59,12 +68,9 @@
     PREFIX := /usr/local
 endif
 
-install: libqcbor.a libqcbor.so $(PUBLIC_INTERFACE)
+install: libqcbor.a $(PUBLIC_INTERFACE)
 	install -d $(DESTDIR)$(PREFIX)/lib/
 	install -m 644 libqcbor.a $(DESTDIR)$(PREFIX)/lib/
-	install -m 755 libqcbor.so $(DESTDIR)$(PREFIX)/lib/libqcbor.so.1.0.0
-	ln -sf libqcbor.so.1 $(DESTDIR)$(PREFIX)/lib/libqcbor.so
-	ln -sf libqcbor.so.1.0.0 $(DESTDIR)$(PREFIX)/lib/libqcbor.so.1
 	install -d $(DESTDIR)$(PREFIX)/include/qcbor
 	install -m 644 inc/qcbor/qcbor.h $(DESTDIR)$(PREFIX)/include/qcbor
 	install -m 644 inc/qcbor/qcbor_private.h $(DESTDIR)$(PREFIX)/include/qcbor
@@ -73,6 +79,11 @@
 	install -m 644 inc/qcbor/qcbor_encode.h $(DESTDIR)$(PREFIX)/include/qcbor
 	install -m 644 inc/qcbor/UsefulBuf.h $(DESTDIR)$(PREFIX)/include/qcbor
 
+install_so: libqcbor.so
+	install -m 755 libqcbor.so $(DESTDIR)$(PREFIX)/lib/libqcbor.so.1.0.0
+	ln -sf libqcbor.so.1 $(DESTDIR)$(PREFIX)/lib/libqcbor.so
+	ln -sf libqcbor.so.1.0.0 $(DESTDIR)$(PREFIX)/lib/libqcbor.so.1
+
 uninstall: libqcbor.a $(PUBLIC_INTERFACE)
 	$(RM) -d $(DESTDIR)$(PREFIX)/include/qcbor/*
 	$(RM) -d $(DESTDIR)$(PREFIX)/include/qcbor/
@@ -80,4 +91,4 @@
 		libqcbor.a libqcbor.so libqcbor.so.1 libqcbor.so.1.0.0)
 
 clean:
-	rm -f $(QCBOR_OBJ) $(TEST_OBJ) libqcbor.a min_use_main.o cmd_line_main.o
+	rm -f $(QCBOR_OBJ) $(TEST_OBJ) libqcbor.a min_use_main.o cmd_line_main.o libqcbor.a libqcbor.so qcbormin qcbortest