Laurence Lundblade | 01168ef | 2019-01-21 17:05:47 -0800 | [diff] [blame] | 1 | # Makefile -- UNIX-style make for qcbor as a lib and command line test |
Laurence Lundblade | df1c1cf | 2019-01-17 11:55:05 -0800 | [diff] [blame] | 2 | # |
Laurence Lundblade | 06350ea | 2020-01-27 19:32:40 -0800 | [diff] [blame] | 3 | # Copyright (c) 2018-2020, Laurence Lundblade. All rights reserved. |
Laurence Lundblade | df1c1cf | 2019-01-17 11:55:05 -0800 | [diff] [blame] | 4 | # |
Laurence Lundblade | 01168ef | 2019-01-21 17:05:47 -0800 | [diff] [blame] | 5 | # SPDX-License-Identifier: BSD-3-Clause |
| 6 | # |
| 7 | # See BSD-3-Clause license in README.md |
| 8 | # |
| 9 | |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 10 | CC=cc |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 11 | #CC=/usr/local/bin/gcc-9 |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 12 | |
Michael Eckel | 7e8effa | 2020-03-09 18:19:17 +0100 | [diff] [blame] | 13 | CFLAGS=-I inc -I test -Os -fPIC |
Laurence Lundblade | f19f4da | 2020-03-01 17:41:53 -0800 | [diff] [blame] | 14 | |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 15 | # The following are used before a release of QCBOR help to make sure |
| 16 | # the code compiles and runs in the most strict environments, but not |
| 17 | # all compilers support them so they are not turned on. |
Laurence Lundblade | e6bcef1 | 2020-04-01 10:56:27 -0700 | [diff] [blame] | 18 | #CFLAGS=-I inc -I test -Os -fpic -Wall -pedantic-errors -Wextra -Wshadow -Wparentheses -Wconversion -xc -std=c99 |
Laurence Lundblade | 74d265c | 2018-09-19 10:21:00 -0700 | [diff] [blame] | 19 | |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 20 | |
Michael Eckel | 6e03077 | 2020-03-27 02:20:00 +0100 | [diff] [blame] | 21 | QCBOR_OBJ=src/UsefulBuf.o src/qcbor_encode.o src/qcbor_decode.o src/ieee754.o src/qcbor_err_to_str.o |
Laurence Lundblade | 781fd82 | 2018-10-01 09:37:52 -0700 | [diff] [blame] | 22 | |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 23 | TEST_OBJ=test/UsefulBuf_Tests.o test/qcbor_encode_tests.o \ |
| 24 | test/qcbor_decode_tests.o test/run_tests.o \ |
Laurence Lundblade | 1818e63 | 2020-07-26 04:14:08 -0700 | [diff] [blame^] | 25 | test/float_tests.o test/half_to_double_from_rfc7049.o example.o |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 26 | |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 27 | .PHONY: all so install uninstall clean |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 28 | |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 29 | all: qcbortest qcbormin libqcbor.a |
| 30 | |
| 31 | so: libqcbor.so |
Laurence Lundblade | 781fd82 | 2018-10-01 09:37:52 -0700 | [diff] [blame] | 32 | |
Laurence Lundblade | 2c97883 | 2018-12-13 01:10:21 -0800 | [diff] [blame] | 33 | qcbortest: libqcbor.a $(TEST_OBJ) cmd_line_main.o |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 34 | $(CC) -o $@ $^ libqcbor.a |
Laurence Lundblade | 74d265c | 2018-09-19 10:21:00 -0700 | [diff] [blame] | 35 | |
Laurence Lundblade | cd532e4 | 2018-12-17 13:19:45 -0800 | [diff] [blame] | 36 | qcbormin: libqcbor.a min_use_main.o |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 37 | $(CC) -dead_strip -o $@ $^ libqcbor.a |
Laurence Lundblade | 74d265c | 2018-09-19 10:21:00 -0700 | [diff] [blame] | 38 | |
Laurence Lundblade | c9d3dcf | 2018-12-19 18:11:36 -0800 | [diff] [blame] | 39 | libqcbor.a: $(QCBOR_OBJ) |
Laurence Lundblade | 2c97883 | 2018-12-13 01:10:21 -0800 | [diff] [blame] | 40 | ar -r $@ $^ |
Laurence Lundblade | c2b1457 | 2018-11-01 13:07:49 +0700 | [diff] [blame] | 41 | |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 42 | # The shared library is not made by default because of platform |
| 43 | # variability For example MacOS and Linux behave differently and some |
| 44 | # IoT OS's don't support them at all. |
Michael Eckel | 7e8effa | 2020-03-09 18:19:17 +0100 | [diff] [blame] | 45 | libqcbor.so: $(QCBOR_OBJ) |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 46 | $(CC) -shared $^ $(CFLAGS) -o $@ |
Michael Eckel | 7e8effa | 2020-03-09 18:19:17 +0100 | [diff] [blame] | 47 | |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 48 | 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 |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 49 | |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 50 | src/UsefulBuf.o: inc/qcbor/UsefulBuf.h |
| 51 | 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 |
| 52 | 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 |
| 53 | src/iee754.o: src/ieee754.h |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 54 | src/qcbor_err_to_str.o: inc/qcbor/qcbor_common.h |
Laurence Lundblade | 781fd82 | 2018-10-01 09:37:52 -0700 | [diff] [blame] | 55 | |
Laurence Lundblade | 1d85d52 | 2020-06-22 13:24:59 -0700 | [diff] [blame] | 56 | 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 inc/qcbor/qcbor_private.h |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 57 | test/UsefulBuf_Tests.o: test/UsefulBuf_Tests.h inc/qcbor/UsefulBuf.h |
Michael Eckel | 7e8effa | 2020-03-09 18:19:17 +0100 | [diff] [blame] | 58 | test/qcbor_encode_tests.o: test/qcbor_encode_tests.h $(PUBLIC_INTERFACE) |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 59 | test/qcbor_decode_tests.o: test/qcbor_decode_tests.h $(PUBLIC_INTERFACE) |
| 60 | test/float_tests.o: test/float_tests.h test/half_to_double_from_rfc7049.h $(PUBLIC_INTERFACE) |
| 61 | test/half_to_double_from_rfc7049.o: test/half_to_double_from_rfc7049.h |
Laurence Lundblade | 781fd82 | 2018-10-01 09:37:52 -0700 | [diff] [blame] | 62 | |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 63 | cmd_line_main.o: test/run_tests.h $(PUBLIC_INTERFACE) |
Laurence Lundblade | 74d265c | 2018-09-19 10:21:00 -0700 | [diff] [blame] | 64 | |
Michael Eckel | 9c42c20 | 2020-03-04 18:26:11 +0100 | [diff] [blame] | 65 | min_use_main.o: $(PUBLIC_INTERFACE) |
Laurence Lundblade | c2b1457 | 2018-11-01 13:07:49 +0700 | [diff] [blame] | 66 | |
Michael Eckel | 5c53133 | 2020-03-02 01:35:30 +0100 | [diff] [blame] | 67 | ifeq ($(PREFIX),) |
| 68 | PREFIX := /usr/local |
| 69 | endif |
| 70 | |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 71 | install: libqcbor.a $(PUBLIC_INTERFACE) |
Michael Eckel | 5c53133 | 2020-03-02 01:35:30 +0100 | [diff] [blame] | 72 | install -d $(DESTDIR)$(PREFIX)/lib/ |
| 73 | install -m 644 libqcbor.a $(DESTDIR)$(PREFIX)/lib/ |
| 74 | install -d $(DESTDIR)$(PREFIX)/include/qcbor |
Michael Eckel | 7e8effa | 2020-03-09 18:19:17 +0100 | [diff] [blame] | 75 | install -m 644 inc/qcbor/qcbor.h $(DESTDIR)$(PREFIX)/include/qcbor |
Laurence Lundblade | 844bb5c | 2020-03-01 17:27:25 -0800 | [diff] [blame] | 76 | install -m 644 inc/qcbor/qcbor_private.h $(DESTDIR)$(PREFIX)/include/qcbor |
| 77 | install -m 644 inc/qcbor/qcbor_common.h $(DESTDIR)$(PREFIX)/include/qcbor |
| 78 | install -m 644 inc/qcbor/qcbor_decode.h $(DESTDIR)$(PREFIX)/include/qcbor |
| 79 | install -m 644 inc/qcbor/qcbor_encode.h $(DESTDIR)$(PREFIX)/include/qcbor |
Michael Eckel | 5c53133 | 2020-03-02 01:35:30 +0100 | [diff] [blame] | 80 | install -m 644 inc/qcbor/UsefulBuf.h $(DESTDIR)$(PREFIX)/include/qcbor |
| 81 | |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 82 | install_so: libqcbor.so |
| 83 | install -m 755 libqcbor.so $(DESTDIR)$(PREFIX)/lib/libqcbor.so.1.0.0 |
| 84 | ln -sf libqcbor.so.1 $(DESTDIR)$(PREFIX)/lib/libqcbor.so |
| 85 | ln -sf libqcbor.so.1.0.0 $(DESTDIR)$(PREFIX)/lib/libqcbor.so.1 |
| 86 | |
Michael Eckel | 7e8effa | 2020-03-09 18:19:17 +0100 | [diff] [blame] | 87 | uninstall: libqcbor.a $(PUBLIC_INTERFACE) |
| 88 | $(RM) -d $(DESTDIR)$(PREFIX)/include/qcbor/* |
| 89 | $(RM) -d $(DESTDIR)$(PREFIX)/include/qcbor/ |
| 90 | $(RM) $(addprefix $(DESTDIR)$(PREFIX)/lib/, \ |
| 91 | libqcbor.a libqcbor.so libqcbor.so.1 libqcbor.so.1.0.0) |
| 92 | |
Laurence Lundblade | 74d265c | 2018-09-19 10:21:00 -0700 | [diff] [blame] | 93 | clean: |
Laurence Lundblade | 02990fa | 2020-03-27 09:51:58 -0700 | [diff] [blame] | 94 | rm -f $(QCBOR_OBJ) $(TEST_OBJ) libqcbor.a min_use_main.o cmd_line_main.o libqcbor.a libqcbor.so qcbormin qcbortest |