| # This Makefile is only for testing. C callers should follow the instructions |
| # in ./README.md to incorporate these C files into their existing build. |
| |
| NAME=blake3 |
| CC=gcc |
| CFLAGS=-O3 -Wall -Wextra -std=c11 -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2 -fPIE -fvisibility=hidden |
| LDFLAGS=-pie -Wl,-z,relro,-z,now |
| TARGETS= |
| ASM_TARGETS= |
| EXTRAFLAGS=-Wa,--noexecstack |
| |
| ifdef BLAKE3_NO_SSE2 |
| EXTRAFLAGS += -DBLAKE3_NO_SSE2 |
| else |
| TARGETS += blake3_sse2.o |
| ASM_TARGETS += blake3_sse2_x86-64_unix.S |
| endif |
| |
| ifdef BLAKE3_NO_SSE41 |
| EXTRAFLAGS += -DBLAKE3_NO_SSE41 |
| else |
| TARGETS += blake3_sse41.o |
| ASM_TARGETS += blake3_sse41_x86-64_unix.S |
| endif |
| |
| ifdef BLAKE3_NO_AVX2 |
| EXTRAFLAGS += -DBLAKE3_NO_AVX2 |
| else |
| TARGETS += blake3_avx2.o |
| ASM_TARGETS += blake3_avx2_x86-64_unix.S |
| endif |
| |
| ifdef BLAKE3_NO_AVX512 |
| EXTRAFLAGS += -DBLAKE3_NO_AVX512 |
| else |
| TARGETS += blake3_avx512.o |
| ASM_TARGETS += blake3_avx512_x86-64_unix.S |
| endif |
| |
| ifdef BLAKE3_USE_NEON |
| EXTRAFLAGS += -DBLAKE3_USE_NEON=1 |
| TARGETS += blake3_neon.o |
| endif |
| |
| ifdef BLAKE3_NO_NEON |
| EXTRAFLAGS += -DBLAKE3_USE_NEON=0 |
| endif |
| |
| all: blake3.c blake3_dispatch.c blake3_portable.c main.c $(TARGETS) |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) $^ -o $(NAME) $(LDFLAGS) |
| |
| blake3_sse2.o: blake3_sse2.c |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -msse2 |
| |
| blake3_sse41.o: blake3_sse41.c |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -msse4.1 |
| |
| blake3_avx2.o: blake3_avx2.c |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -mavx2 |
| |
| blake3_avx512.o: blake3_avx512.c |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ -mavx512f -mavx512vl |
| |
| blake3_neon.o: blake3_neon.c |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) -c $^ -o $@ |
| |
| test: CFLAGS += -DBLAKE3_TESTING -fsanitize=address,undefined |
| test: all |
| ./test.py |
| |
| asm: blake3.c blake3_dispatch.c blake3_portable.c main.c $(ASM_TARGETS) |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) $^ -o $(NAME) $(LDFLAGS) |
| |
| test_asm: CFLAGS += -DBLAKE3_TESTING -fsanitize=address,undefined |
| test_asm: asm |
| ./test.py |
| |
| example: example.c blake3.c blake3_dispatch.c blake3_portable.c $(ASM_TARGETS) |
| $(CC) $(CFLAGS) $(EXTRAFLAGS) $^ -o $@ $(LDFLAGS) |
| |
| clean: |
| rm -f $(NAME) *.o |