### Linux: Pre: ``` gcc -c -O3 -m64 exts\blake3_sse2_x86-64_windows_gnu.S -o exts\blake3_sse2.obj gcc -c -O3 -m64 exts\blake3_sse41_x86-64_windows_gnu.S -o exts\blake3_sse41.obj gcc -c -O3 -m64 exts\blake3_avx2_x86-64_windows_gnu.S -o exts\blake3_avx2.obj gcc -c -O3 -m64 exts\blake3_avx512_x86-64_windows_gnu.S -o exts\blake3_avx512.obj gcc -c -O3 exts\blake3.c -o exts\blake3.obj gcc -c -O3 exts\blake3_dispatch.c -o exts\blake3_dispatch.obj gcc -c -O3 exts\blake3_portable.c -o exts\blake3_portable.obj ``` Compile CMD's: static lib ``` ldc2 -c -O3 -release -boundscheck=off -unittest=0 main.d llvm-ar rcs libthreefish512.a main.o exts/blake3.o exts/blake3_dispatch.o exts/blake3_portable.o exts/blake3_sse2.o exts/blake3_sse41.o exts/blake3_avx2.o exts/blake3_avx512.o ``` so `ldc2 -O3 -release -boundscheck=off -unittest=0 -shared -fPIC main.d exts/blake3.o exts/blake3_dispatch.o exts/blake3_portable.o exts/blake3_sse2.o exts/blake3_sse41.o exts/blake3_avx2.o exts/blake3_avx512.o -of=libthreefish512.so` **for the test_vec:** ``` gcc -O3 test_vec.c -L. -lthreefish512 -o test_vec -lpthread -lm gcc -O3 test_vec.c -L. -lthreefish512 -o test_vec -Wl,-rpath=. -lpthread -lm ``` ### Windows: Pre: ``` gcc -c -O3 -m64 exts\blake3_sse2_x86-64_windows_gnu.S -o exts\blake3_sse2.obj gcc -c -O3 -m64 exts\blake3_sse41_x86-64_windows_gnu.S -o exts\blake3_sse41.obj gcc -c -O3 -m64 exts\blake3_avx2_x86-64_windows_gnu.S -o exts\blake3_avx2.obj gcc -c -O3 -m64 exts\blake3_avx512_x86-64_windows_gnu.S -o exts\blake3_avx512.obj gcc -c -O3 exts\blake3.c -o exts\blake3.obj gcc -c -O3 exts\blake3_dispatch.c -o exts\blake3_dispatch.obj gcc -c -O3 exts\blake3_portable.c -o exts\blake3_portable.obj ``` Compile CMD's: static lib ``` ldc2 -c -O3 -release -boundscheck=off -unittest=0 -shared main.d llvm-ar rcs threefish512.lib main.obj exts\blake3.obj exts\blake3_dispatch.obj exts\blake3_portable.obj exts/blake3_sse2.obj exts/blake3_sse41.obj exts/blake3_avx2.obj exts/blake3_avx512.obj exts/blake3.obj exts/blake3_dispatch.obj exts/blake3_portable.obj ``` dll&static lib (direct ldc2) `ldc2 -O3 -release -boundscheck=off -unittest=0 -shared main.d exts\blake3.obj exts\blake3_dispatch.obj exts\blake3_portable.obj exts\blake3_sse2.obj exts\blake3_sse41.obj exts\blake3_avx2.obj exts\blake3_avx512.obj` **for the test_vec:** (compile in MSVC x64 IMPORTANT it must be x64 developer command prompt) `cl /O2 test_vec.c main.lib` (or threefish512.lib, whatever you prefer)