Skip to content

Commit 7ee34b6

Browse files
committed
Merge branch 'dev'
2 parents fe5a143 + ddde52f commit 7ee34b6

13 files changed

+272
-96
lines changed

CMakeLists.txt

+2-3
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ foreach(bit IN ITEMS 256 384 384_256)
5555
target_include_directories(bls${bit} PUBLIC
5656
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
5757
$<INSTALL_INTERFACE:${CMAKE_INSTALL_DIR}/include>)
58-
target_link_libraries(bls${bit} PUBLIC mcl::mclbn${bit})
58+
target_link_libraries(bls${bit} PUBLIC mcl::mcl mcl::mcl_st mcl::mclbn${bit})
5959
set_target_properties(bls${bit} PROPERTIES
6060
POSITION_INDEPENDENT_CODE ON
6161
VERSION ${bls_VERSION}
@@ -81,8 +81,7 @@ set(CMAKE_EXPORT_PACKAGE_REGISTERY ON)
8181
export(PACKAGE bls)
8282

8383
# Tests
84-
if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR BLS_BUILD_TESTING)
85-
AND BUILD_TESTING)
84+
if(BLS_BUILD_TESTING)
8685
enable_testing()
8786
add_subdirectory(test)
8887
endif()

Makefile.onelib

+18-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ BINT_OBJ=$(MCL_DIR)/$(OBJ_DIR)/bint$(BIT).o
4040

4141
ifeq ($(CPU),x86-64)
4242
_ARCH=amd64
43+
MSM=msm_avx
44+
MCL_MSM?=1
4345
endif
4446
ifeq ($(CPU),aarch64)
4547
_ARCH=arm64
@@ -70,6 +72,11 @@ ifeq ($(MCL_USE_LLVM),1)
7072
MIN_CFLAGS+=-DMCL_USE_LLVM=1
7173
OBJS+=$(BASE_OBJ)
7274
endif
75+
ifeq ($(MCL_MSM),1)
76+
MIN_CFLAGS+=-DMCL_MSM=1
77+
MSM_OBJ=$(MCL_DIR)/$(OBJ_DIR)/$(MSM).o
78+
OBJS+=$(MSM_OBJ)
79+
endif
7380

7481
LIB_DIR?=$(OUT_DIR)/bls/lib/$(_OS)/$(_ARCH)
7582
STATIC_LIB=$(LIB_DIR)/libbls384_256.a
@@ -120,6 +127,9 @@ $(BINT_OBJ):
120127
$(BASE_OBJ):
121128
$(MAKE) -C $(MCL_DIR) obj/base$(BIT).o CPU=$(CPU) OS=$(OS) BIT=$(BIT)
122129

130+
$(MSM_OBJ): $(MCL_DIR)/src/$(MSM).cpp
131+
$(CXX) -c $< -o $@ $(MIN_CFLAGS) -mavx512f -mavx512ifma -std=c++11
132+
123133
ANDROID_TARGET=armeabi-v7a arm64-v8a x86_64
124134
NDK_BUILD?=ndk-build
125135
android: $(BASE_LL)
@@ -182,14 +192,21 @@ endif
182192
ranlib $(IOS_OUTDIR)/$(IOS_LIB)
183193

184194
# cross compile
185-
# e.g. make -f Makefile.onelib CXX=clang++ AS=clang++ build_aarch64 LLVM_VER=-12
195+
#Try a compiler option `-isystem <include directory>` if you have trouble with including standard heder file.
196+
# make -f Makefile.onelib build_aarch64 CXX=clang++ LLVM_VER=-18 build_aarch64
197+
# aarch64-linux-gnu-gcc-13 sample/minsample.c bls/lib/linux/arm64/libbls384_256.a -I include/ -I mcl/include/
198+
# env QEMU_LD_PREFIX=/usr/aarch64-linux-gnu/ ./a.out
186199
build_aarch64:
187200
$(MAKE) -f $(THIS_FILE) ARCH=aarch64 CLANG_TARGET=aarch64
188201
# $(CXX) -target aarch64 test/bls_c384_256_test.cpp -I ./include -I mcl/include bls/lib/linux/arm64/libbls384_256.a
189202
build_i686:
190203
$(MAKE) -f $(THIS_FILE) ARCH=x86 CLANG_TARGET=i686
191204
# g++ -m32 test/bls_c384_256_test.cpp -I ./include -I mcl/include bls/lib/linux/libbls384_256.a
192205

206+
#make -f Makefile.onelib ARCH=mipsisa32r6el CLANG_TARGET=mipsisa32r6el BIT=32 CXX=clang++-17
207+
#mipsisa32r6el-linux-gnu-gcc-13 sample/minsample.c -I include/ -I mcl/include/ bls/lib/linux/libbls384_256.a
208+
#env QEMU_LD_PREFIX=/usr/mipsisa32r6el-linux-gnu/ ./a.out
209+
193210
clean:
194211
$(MAKE) -C $(MCL_DIR) clean
195212
$(MAKE) -C $(BLS_DIR) clean

bls.sln

+38-8
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,60 @@
11
Microsoft Visual Studio Solution File, Format Version 12.00
2-
# Visual Studio 2013
3-
VisualStudioVersion = 12.0.40629.0
2+
# Visual Studio Version 17
3+
VisualStudioVersion = 17.10.34928.147
44
MinimumVisualStudioVersion = 10.0.40219.1
5-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bls_test", "test\proj\bls_test\bls_test.vcxproj", "{51266DE6-B57B-4AE3-B85C-282F170E1728}"
5+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mcllib", "mcl\src\proj\mcllib\mcllib.vcxproj", "{E95F067C-F6CE-48D5-B6AB-E469211D5B43}"
6+
EndProject
7+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blslib", "src\proj\blslib\blslib.vcxproj", "{1DBB979A-C212-45CD-9563-446A96F87F71}"
8+
ProjectSection(ProjectDependencies) = postProject
9+
{E95F067C-F6CE-48D5-B6AB-E469211D5B43} = {E95F067C-F6CE-48D5-B6AB-E469211D5B43}
10+
EndProjectSection
11+
EndProject
12+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blsethlib", "src\proj\blsethlib\blsethlib.vcxproj", "{1DBB979A-C212-45CD-9463-446A96F87F72}"
13+
ProjectSection(ProjectDependencies) = postProject
14+
{E95F067C-F6CE-48D5-B6AB-E469211D5B43} = {E95F067C-F6CE-48D5-B6AB-E469211D5B43}
15+
EndProjectSection
16+
EndProject
17+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bls_test", "test\proj\bls_test\bls_test.vcxproj", "{9F935350-2F4C-45FA-A1C2-1D5AA0EADC96}"
618
ProjectSection(ProjectDependencies) = postProject
719
{1DBB979A-C212-45CD-9563-446A96F87F71} = {1DBB979A-C212-45CD-9563-446A96F87F71}
820
EndProjectSection
921
EndProject
10-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bls", "src\proj\bls.vcxproj", "{1DBB979A-C212-45CD-9563-446A96F87F71}"
22+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bls_eth_test", "test\proj\bls_eth_test\bls_eth_test.vcxproj", "{9F935350-2F4C-45FA-A1C2-1D5AA0EADC97}"
23+
ProjectSection(ProjectDependencies) = postProject
24+
{1DBB979A-C212-45CD-9463-446A96F87F72} = {1DBB979A-C212-45CD-9463-446A96F87F72}
25+
EndProjectSection
1126
EndProject
1227
Global
1328
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1429
Debug|x64 = Debug|x64
1530
Release|x64 = Release|x64
1631
EndGlobalSection
1732
GlobalSection(ProjectConfigurationPlatforms) = postSolution
18-
{51266DE6-B57B-4AE3-B85C-282F170E1728}.Debug|x64.ActiveCfg = Debug|x64
19-
{51266DE6-B57B-4AE3-B85C-282F170E1728}.Debug|x64.Build.0 = Debug|x64
20-
{51266DE6-B57B-4AE3-B85C-282F170E1728}.Release|x64.ActiveCfg = Release|x64
21-
{51266DE6-B57B-4AE3-B85C-282F170E1728}.Release|x64.Build.0 = Release|x64
2233
{1DBB979A-C212-45CD-9563-446A96F87F71}.Debug|x64.ActiveCfg = Debug|x64
2334
{1DBB979A-C212-45CD-9563-446A96F87F71}.Debug|x64.Build.0 = Debug|x64
2435
{1DBB979A-C212-45CD-9563-446A96F87F71}.Release|x64.ActiveCfg = Release|x64
2536
{1DBB979A-C212-45CD-9563-446A96F87F71}.Release|x64.Build.0 = Release|x64
37+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC96}.Debug|x64.ActiveCfg = Debug|x64
38+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC96}.Debug|x64.Build.0 = Debug|x64
39+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC96}.Release|x64.ActiveCfg = Release|x64
40+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC96}.Release|x64.Build.0 = Release|x64
41+
{1DBB979A-C212-45CD-9463-446A96F87F72}.Debug|x64.ActiveCfg = Debug|x64
42+
{1DBB979A-C212-45CD-9463-446A96F87F72}.Debug|x64.Build.0 = Debug|x64
43+
{1DBB979A-C212-45CD-9463-446A96F87F72}.Release|x64.ActiveCfg = Release|x64
44+
{1DBB979A-C212-45CD-9463-446A96F87F72}.Release|x64.Build.0 = Release|x64
45+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC97}.Debug|x64.ActiveCfg = Debug|x64
46+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC97}.Debug|x64.Build.0 = Debug|x64
47+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC97}.Release|x64.ActiveCfg = Release|x64
48+
{9F935350-2F4C-45FA-A1C2-1D5AA0EADC97}.Release|x64.Build.0 = Release|x64
49+
{E95F067C-F6CE-48D5-B6AB-E469211D5B43}.Debug|x64.ActiveCfg = Debug|x64
50+
{E95F067C-F6CE-48D5-B6AB-E469211D5B43}.Debug|x64.Build.0 = Debug|x64
51+
{E95F067C-F6CE-48D5-B6AB-E469211D5B43}.Release|x64.ActiveCfg = Release|x64
52+
{E95F067C-F6CE-48D5-B6AB-E469211D5B43}.Release|x64.Build.0 = Release|x64
2653
EndGlobalSection
2754
GlobalSection(SolutionProperties) = preSolution
2855
HideSolutionNode = FALSE
2956
EndGlobalSection
57+
GlobalSection(ExtensibilityGlobals) = postSolution
58+
SolutionGuid = {681C56BF-C724-4464-94A1-EAF22B6E7510}
59+
EndGlobalSection
3060
EndGlobal

common.props

+3-10
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,13 @@
77
</PropertyGroup>
88
<ItemDefinitionGroup>
99
<ClCompile>
10-
<AdditionalIncludeDirectories>$(SolutionDir)../cybozulib/include;$(SolutionDir)../cybozulib_ext/include;$(SolutionDir)include;$(SolutionDir)../mcl/include</AdditionalIncludeDirectories>
10+
<AdditionalIncludeDirectories>include;mcl/include;$(SolutionDir)\mcl\include;$(SolutionDir)\include</AdditionalIncludeDirectories>
1111
</ClCompile>
1212
</ItemDefinitionGroup>
1313
<ItemDefinitionGroup>
14-
<ClCompile>
15-
<WarningLevel>Level4</WarningLevel>
16-
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
17-
<PrecompiledHeaderFile />
18-
<PrecompiledHeaderOutputFile />
19-
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);NOMINMAX;BLS_MAX_OP_UNIT_SIZE=6</PreprocessorDefinitions>
20-
</ClCompile>
2114
<Link>
22-
<AdditionalLibraryDirectories>$(SolutionDir)../cybozulib_ext/lib;$(SolutionDir)../mcl/lib;$(SolutionDir)lib</AdditionalLibraryDirectories>
15+
<AdditionalLibraryDirectories>$(SolutionDir)lib</AdditionalLibraryDirectories>
2316
</Link>
2417
</ItemDefinitionGroup>
2518
<ItemGroup />
26-
</Project>
19+
</Project>

debug.props

-14
This file was deleted.

readme.md

+4
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ make BLS_ETH=1 lib/libbls384_256.a
293293
If the option `MCL_USE_GMP=0` (resp.`MCL_USE_OPENSSL=0`) is used then GMP (resp. OpenSSL) is not used.
294294

295295
### Build library for Windows
296+
Open the x64 Native Tools for Visual Studio and type the following command.
296297

297298
static library
298299
```
@@ -304,6 +305,9 @@ dynamic library
304305
mklib dll eth
305306
```
306307

308+
Or open `bls.sln` and build it.
309+
*REMARK* CmakeLists.txt is not maintained for Visual Studio.
310+
307311
### Build static library for Android
308312

309313
See [bls-eth-go-binary](https://github.com/herumi/bls-eth-go-binary)

release.props

-12
This file was deleted.

src/proj/blsethlib/blsethlib.vcxproj

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|x64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>x64</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Release|x64">
9+
<Configuration>Release</Configuration>
10+
<Platform>x64</Platform>
11+
</ProjectConfiguration>
12+
</ItemGroup>
13+
<ItemGroup>
14+
<ClCompile Include="..\..\bls_c384_256.cpp" />
15+
</ItemGroup>
16+
<PropertyGroup Label="Globals">
17+
<VCProjectVersion>17.0</VCProjectVersion>
18+
<ProjectGuid>{1DBB979A-C212-45CD-9463-446A96F87F72}</ProjectGuid>
19+
<Keyword>Win32Proj</Keyword>
20+
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
21+
</PropertyGroup>
22+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
23+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
24+
<ConfigurationType>StaticLibrary</ConfigurationType>
25+
<UseDebugLibraries>true</UseDebugLibraries>
26+
<PlatformToolset>v143</PlatformToolset>
27+
</PropertyGroup>
28+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
29+
<ConfigurationType>StaticLibrary</ConfigurationType>
30+
<UseDebugLibraries>false</UseDebugLibraries>
31+
<PlatformToolset>v143</PlatformToolset>
32+
</PropertyGroup>
33+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
34+
<ImportGroup Label="ExtensionSettings">
35+
</ImportGroup>
36+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
37+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
38+
<Import Project="$(ProjectDir)\..\..\..\common.props" />
39+
</ImportGroup>
40+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
41+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
42+
<Import Project="$(ProjectDir)\..\..\..\common.props" />
43+
</ImportGroup>
44+
<PropertyGroup Label="UserMacros" />
45+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
46+
<LinkIncremental>true</LinkIncremental>
47+
<OutDir>$(SolutionDir)lib\</OutDir>
48+
<TargetName>bls384_256</TargetName>
49+
</PropertyGroup>
50+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
51+
<LinkIncremental>true</LinkIncremental>
52+
<OutDir>$(SolutionDir)lib\</OutDir>
53+
<TargetName>bls384_256</TargetName>
54+
</PropertyGroup>
55+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
56+
<ClCompile>
57+
<PrecompiledHeader>
58+
</PrecompiledHeader>
59+
<WarningLevel>Level3</WarningLevel>
60+
<Optimization>Disabled</Optimization>
61+
<PreprocessorDefinitions>NDEBUG;MCL_MAX_BIT_SIZE=384;BLS_ETH=1</PreprocessorDefinitions>
62+
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
63+
</ClCompile>
64+
<Link>
65+
<SubSystem>Console</SubSystem>
66+
<GenerateDebugInformation>true</GenerateDebugInformation>
67+
</Link>
68+
</ItemDefinitionGroup>
69+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70+
<ClCompile>
71+
<WarningLevel>Level3</WarningLevel>
72+
<PreprocessorDefinitions>NDEBUG;MCL_MAX_BIT_SIZE=384;BLS_ETH=1</PreprocessorDefinitions>
73+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
74+
</ClCompile>
75+
<Link>
76+
<SubSystem>Console</SubSystem>
77+
<GenerateDebugInformation>true</GenerateDebugInformation>
78+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
79+
<OptimizeReferences>true</OptimizeReferences>
80+
</Link>
81+
</ItemDefinitionGroup>
82+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
83+
<ImportGroup Label="ExtensionTargets">
84+
</ImportGroup>
85+
</Project>

0 commit comments

Comments
 (0)