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