1# This Makefile is only for testing. C callers should follow the instructions 2# in ./README.md to incorporate these C files into their existing build. 3 4NAME=blake3 5CC=gcc 6CFLAGS=-O3 -Wall -Wextra -std=c11 -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2 -fPIE -fvisibility=hidden 7LDFLAGS=-pie -Wl,-z,relro,-z,now 8TARGETS= 9ASM_TARGETS= 10EXTRAFLAGS=-Wa,--noexecstack 11 12ifdef BLAKE3_NO_SSE2 13EXTRAFLAGS += -DBLAKE3_NO_SSE2 14else 15TARGETS += blake3_sse2.o 16ASM_TARGETS += blake3_sse2_x86-64_unix.S 17endif 18 19ifdef BLAKE3_NO_SSE41 20EXTRAFLAGS += -DBLAKE3_NO_SSE41 21else 22TARGETS += blake3_sse41.o 23ASM_TARGETS += blake3_sse41_x86-64_unix.S 24endif 25 26ifdef BLAKE3_NO_AVX2 27EXTRAFLAGS += -DBLAKE3_NO_AVX2 28else 29TARGETS += blake3_avx2.o 30ASM_TARGETS += blake3_avx2_x86-64_unix.S 31endif 32 33ifdef BLAKE3_NO_AVX512 34EXTRAFLAGS += -DBLAKE3_NO_AVX512 35else 36TARGETS += blake3_avx512.o 37ASM_TARGETS += blake3_avx512_x86-64_unix.S 38endif 39 40ifdef BLAKE3_USE_NEON 41EXTRAFLAGS += -DBLAKE3_USE_NEON 42TARGETS += blake3_neon.o 43endif 44 45all: blake3.c blake3_dispatch.c blake3_portable.c main.c $(TARGETS) 46 $(CC) $(CFLAGS) $(EXTRAFLAGS) $^ -o $(NAME) $(LDFLAGS) 47 48blake3_sse2.o: blake3_sse2.c 49 $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -msse2 50 51blake3_sse41.o: blake3_sse41.c 52 $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -msse4.1 53 54blake3_avx2.o: blake3_avx2.c 55 $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -mavx2 56 57blake3_avx512.o: blake3_avx512.c 58 $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -mavx512f -mavx512vl 59 60blake3_neon.o: blake3_neon.c 61 $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ 62 63test: CFLAGS += -DBLAKE3_TESTING -fsanitize=address,undefined 64test: all 65 ./test.py 66 67asm: blake3.c blake3_dispatch.c blake3_portable.c main.c $(ASM_TARGETS) 68 $(CC) $(CFLAGS) $(EXTRAFLAGS) $^ -o $(NAME) $(LDFLAGS) 69 70test_asm: CFLAGS += -DBLAKE3_TESTING -fsanitize=address,undefined 71test_asm: asm 72 ./test.py 73 74clean: 75 rm -f $(NAME) *.o 76