Repository navigation
Expand file tree
/
Copy pathmklib.bat
More file actions
65 lines (61 loc) · 2.12 KB
/
Copy pathmklib.bat
File metadata and controls
65 lines (61 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
@echo off
call "%~dp0setvar.bat"
rem usage: mklib.bat [dll] [clang=(0|1|2)]
rem clang=1 (default) requires clang++ to build src\base64.ll (MCL_USE_LLVM=1)
rem clang=2 also builds src\fp.cpp and src\msm_avx.cpp with clang-cl (CLANG_CFLAGS in setvar.bat)
rem clang=0 builds without clang++
rem USE_CLANG remains in the environment so that a following mk.bat uses the same compiler
set USE_DLL=0
set USE_CLANG=1
rem cmd splits "clang=0" into two arguments "clang" and "0"
:parse_args
if "%1"=="" goto :end_parse_args
if "%1"=="dll" set USE_DLL=1
if "%1"=="clang" (
if "%2"=="0" set USE_CLANG=0
if "%2"=="2" set USE_CLANG=2
shift
)
shift
goto :parse_args
:end_parse_args
if "%USE_DLL%"=="1" (
echo make dynamic library DLL
set LOCAL_DEF=
) else (
echo make static library LIB
set LOCAL_DEF=/DMCL_DONT_EXPORT
)
set OBJ=obj\fp.obj obj\msm_avx.obj obj\bint-x64-win.obj
if not "%USE_CLANG%"=="0" (
set LOCAL_DEF=%LOCAL_DEF% /DMCL_USE_LLVM=1
set OBJ=%OBJ% obj\base64.obj
)
if "%USE_CLANG%"=="2" (
set CXX=clang-cl
set LOCAL_CFLAGS=%CLANG_CFLAGS% %LOCAL_DEF%
set LOCAL_LDFLAGS=%LDFLAGS% %CLANG_RT_LIB%
) else (
set CXX=cl
set LOCAL_CFLAGS=%CFLAGS% %LOCAL_DEF%
set LOCAL_LDFLAGS=%LDFLAGS%
)
echo CXX=%CXX%
echo CFLAGS=%LOCAL_CFLAGS%
ml64 /c /Foobj\bint-x64-win.obj src\asm\bint-x64-win.asm
rem nasm -f win64 -o obj\bint-x64-win.obj src\asm\bint-x64-win.asm
if not "%USE_CLANG%"=="0" (
echo build base64.ll
clang++ -c -O3 -fomit-frame-pointer -fno-stack-protector -Wno-override-module -o obj\base64.obj src\base64.ll
)
%CXX% /c %LOCAL_CFLAGS% src\fp.cpp /Foobj\fp.obj
rem msm_avx.cpp enables AVX-512 only in the regions of MCL_MSM_AVX512_BEGIN / END (cl can use the intrinsics without /arch), so no /arch:AVX512 or -mavx512f here
%CXX% /c %LOCAL_CFLAGS% src\msm_avx.cpp /Foobj\msm_avx.obj
del /q lib\mcl.*
if "%USE_DLL%"=="1" (
echo link /nologo /DLL /OUT:bin\mcl.dll /Brepro %OBJ% %LOCAL_LDFLAGS% /implib:bin\mcl.lib
link /nologo /DLL /OUT:bin\mcl.dll /Brepro %OBJ% %LOCAL_LDFLAGS% /implib:bin\mcl.lib
) else (
echo lib /nologo /OUT:lib\mcl.lib /Brepro /nodefaultlib %OBJ%
lib /nologo /OUT:lib\mcl.lib /Brepro /nodefaultlib %OBJ%
)