### 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)
