solo1/Makefile

105 wiersze
2.6 KiB
Makefile
Czysty Zwykły widok Historia

2018-05-07 00:14:52 +00:00
#define uECC_arch_other 0
#define uECC_x86 1
#define uECC_x86_64 2
#define uECC_arm 3
#define uECC_arm_thumb 4
#define uECC_arm_thumb2 5
#define uECC_arm64 6
#define uECC_avr 7
ecc_platform=2
2018-05-07 00:14:52 +00:00
src = $(wildcard pc/*.c) $(wildcard fido2/*.c) $(wildcard crypto/sha256/*.c) crypto/tiny-AES-c/aes.c
2019-01-07 04:15:43 +00:00
obj = $(src:.c=.o) crypto/micro-ecc/uECC.o
2018-04-28 17:40:28 +00:00
LIBCBOR = tinycbor/lib/libtinycbor.a
2018-11-04 22:16:16 +00:00
2018-10-25 03:20:46 +00:00
ifeq ($(shell uname -s),Darwin)
export LDFLAGS = -Wl,-dead_strip
else
export LDFLAGS = -Wl,--gc-sections
endif
LDFLAGS += $(LIBCBOR)
CFLAGS = -O2 -fdata-sections -ffunction-sections
2018-09-13 02:32:58 +00:00
INCLUDES = -I./tinycbor/src -I./crypto/sha256 -I./crypto/micro-ecc/ -Icrypto/tiny-AES-c/ -I./fido2/ -I./pc -I./fido2/extensions
CFLAGS += $(INCLUDES)
# for crypto/tiny-AES-c
CFLAGS += -DAES256=1 -DAPP_CONFIG=\"app.h\"
2018-04-28 17:40:28 +00:00
name = main
.PHONY: all $(LIBCBOR) black blackcheck cppcheck wink fido2-test clean full-clean travis test clean version
2018-11-23 16:51:38 +00:00
all: main
tinycbor/Makefile crypto/tiny-AES-c/aes.c:
git submodule update --init
.PHONY: cbor
cbor: $(LIBCBOR)
2019-01-06 19:48:18 +00:00
$(LIBCBOR):
cd tinycbor/ && $(MAKE) clean && $(MAKE) -j8
version:
@git describe
2019-02-13 02:25:08 +00:00
test: venv
2019-01-06 19:48:18 +00:00
$(MAKE) clean
$(MAKE) -C . main
$(MAKE) clean
2019-01-07 02:17:42 +00:00
$(MAKE) -C ./targets/stm32l432 test PREFIX=$(PREFIX) "VENV=$(VENV)"
2019-01-06 19:48:18 +00:00
$(MAKE) clean
$(MAKE) cppcheck
$(name): $(obj) $(LIBCBOR)
2018-04-28 17:40:28 +00:00
$(CC) $(LDFLAGS) -o $@ $(obj) $(LDFLAGS)
2018-05-03 02:52:41 +00:00
2019-01-07 04:15:43 +00:00
crypto/micro-ecc/uECC.o: ./crypto/micro-ecc/uECC.c
$(CC) -c -o $@ $^ -O2 -fdata-sections -ffunction-sections -DuECC_PLATFORM=$(ecc_platform) -I./crypto/micro-ecc/
2018-05-07 00:14:52 +00:00
2019-02-13 02:25:08 +00:00
venv:
python3 -m venv venv
venv/bin/pip -q install --upgrade -r tools/requirements.txt
venv/bin/pip -q install --upgrade black
# selectively reformat our own code
2019-02-13 02:25:08 +00:00
black: venv
venv/bin/black --skip-string-normalization --check tools/
2019-02-13 02:25:08 +00:00
wink: venv
venv/bin/python tools/solotool.py solo --wink
2019-02-13 02:25:08 +00:00
fido2-test: venv
venv/bin/python tools/ctap_test.py
DOCKER_IMAGE := "solokeys/solo-firmware:local"
SOLO_VERSION := "master"
docker-build:
docker build -t $(DOCKER_IMAGE) .
docker run --rm -v$(PWD)/builds:/builds -v$(PWD)/docker-build.sh:/build.sh $(DOCKER_IMAGE) /build.sh $(SOLO_VERSION)
2019-01-17 00:50:52 +00:00
CPPCHECK_FLAGS=--quiet --error-exitcode=2
cppcheck:
cppcheck $(CPPCHECK_FLAGS) crypto/aes-gcm
cppcheck $(CPPCHECK_FLAGS) crypto/sha256
cppcheck $(CPPCHECK_FLAGS) fido2
cppcheck $(CPPCHECK_FLAGS) pc
2018-05-03 02:52:41 +00:00
clean:
2018-11-23 16:51:38 +00:00
rm -f *.o main.exe main $(obj)
for f in crypto/tiny-AES-c/Makefile tinycbor/Makefile ; do \
if [ -f "$$f" ]; then \
(cd `dirname $$f` ; git checkout -- .) ;\
fi ;\
done
2019-01-06 19:48:18 +00:00
full-clean: clean
2019-02-13 02:25:08 +00:00
rm -rf venv
2019-01-07 01:42:50 +00:00
travis:
2019-02-13 02:25:08 +00:00
$(MAKE) test VENV=". ../../venv/bin/activate;"
2019-01-07 01:42:50 +00:00
$(MAKE) black