aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-02-21 05:13:04 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-02-21 05:13:04 +0800
commit47767251a1ae236b0813484bcaebd4d104c76fa2 (patch)
tree91737d58556307fc9ca472e644da032ad768dac1
parentebc006b7ab83b1e17adedfb8e2f6775be0bfe1d4 (diff)
downloadtangerine-mcl-47767251a1ae236b0813484bcaebd4d104c76fa2.tar.gz
tangerine-mcl-47767251a1ae236b0813484bcaebd4d104c76fa2.tar.zst
tangerine-mcl-47767251a1ae236b0813484bcaebd4d104c76fa2.zip
make bn256_if.dll
-rw-r--r--include/mcl/bn256_if.h134
-rwxr-xr-xmk.bat2
-rwxr-xr-x[-rw-r--r--]mklib.bat12
-rw-r--r--src/bn256_if.cpp1
4 files changed, 84 insertions, 65 deletions
diff --git a/include/mcl/bn256_if.h b/include/mcl/bn256_if.h
index 02b610c..0461a39 100644
--- a/include/mcl/bn256_if.h
+++ b/include/mcl/bn256_if.h
@@ -39,128 +39,138 @@ typedef struct BN256_GT BN256_GT;
#endif
+#ifdef _MSC_VER
+#ifdef BN256_DLL_EXPORT
+#define BN256_DLL_API __declspec(dllexport)
+#else
+#define BN256_DLL_API __declspec(dllimport)
+#endif
+#else
+#define BN256_DLL_API
+#endif
+
/*
set errlog file name
use stderr if name == "stderr"
close if name == ""
return 0 if success
*/
-int BN256_setErrFile(const char *name);
+BN256_DLL_API int BN256_setErrFile(const char *name);
-int BN256_init(void);
+BN256_DLL_API int BN256_init(void);
////////////////////////////////////////////////
// set zero
-void BN256_Fr_clear(BN256_Fr *x);
+BN256_DLL_API void BN256_Fr_clear(BN256_Fr *x);
// set x to y
-void BN256_Fr_setInt(BN256_Fr *y, int x);
+BN256_DLL_API void BN256_Fr_setInt(BN256_Fr *y, int x);
-void BN256_Fr_copy(BN256_Fr *y, const BN256_Fr *x);
+BN256_DLL_API void BN256_Fr_copy(BN256_Fr *y, const BN256_Fr *x);
// return 0 if success
-int BN256_Fr_setStr(BN256_Fr *x, const char *str);
+BN256_DLL_API int BN256_Fr_setStr(BN256_Fr *x, const char *str);
// return 1 if true and 0 otherwise
-int BN256_Fr_isValid(const BN256_Fr *x);
-int BN256_Fr_isSame(const BN256_Fr *x, const BN256_Fr *y);
-int BN256_Fr_isZero(const BN256_Fr *x);
-int BN256_Fr_isOne(const BN256_Fr *x);
+BN256_DLL_API int BN256_Fr_isValid(const BN256_Fr *x);
+BN256_DLL_API int BN256_Fr_isSame(const BN256_Fr *x, const BN256_Fr *y);
+BN256_DLL_API int BN256_Fr_isZero(const BN256_Fr *x);
+BN256_DLL_API int BN256_Fr_isOne(const BN256_Fr *x);
-void BN256_Fr_setRand(BN256_Fr *x);
+BN256_DLL_API void BN256_Fr_setRand(BN256_Fr *x);
// hash(str) and set x
-void BN256_Fr_setMsg(BN256_Fr *x, const char *str);
+BN256_DLL_API void BN256_Fr_setMsg(BN256_Fr *x, const char *str);
// return 0 if success
-int BN256_Fr_getStr(char *buf, size_t maxBufSize, const BN256_Fr *x);
+BN256_DLL_API int BN256_Fr_getStr(char *buf, size_t maxBufSize, const BN256_Fr *x);
-void BN256_Fr_neg(BN256_Fr *y, const BN256_Fr *x);
-void BN256_Fr_inv(BN256_Fr *y, const BN256_Fr *x);
-void BN256_Fr_add(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
-void BN256_Fr_sub(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
-void BN256_Fr_mul(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
-void BN256_Fr_div(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_Fr_neg(BN256_Fr *y, const BN256_Fr *x);
+BN256_DLL_API void BN256_Fr_inv(BN256_Fr *y, const BN256_Fr *x);
+BN256_DLL_API void BN256_Fr_add(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_Fr_sub(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_Fr_mul(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_Fr_div(BN256_Fr *z, const BN256_Fr *x, const BN256_Fr *y);
////////////////////////////////////////////////
// set zero
-void BN256_G1_clear(BN256_G1 *x);
+BN256_DLL_API void BN256_G1_clear(BN256_G1 *x);
-void BN256_G1_copy(BN256_G1 *y, const BN256_G1 *x);
+BN256_DLL_API void BN256_G1_copy(BN256_G1 *y, const BN256_G1 *x);
// return 0 if success
-int BN256_G1_setStr(BN256_G1 *x, const char *str);
+BN256_DLL_API int BN256_G1_setStr(BN256_G1 *x, const char *str);
// return 1 if true and 0 otherwise
-int BN256_G1_isValid(const BN256_G1 *x);
-int BN256_G1_isSame(const BN256_G1 *x, const BN256_G1 *y);
-int BN256_G1_isZero(const BN256_G1 *x);
+BN256_DLL_API int BN256_G1_isValid(const BN256_G1 *x);
+BN256_DLL_API int BN256_G1_isSame(const BN256_G1 *x, const BN256_G1 *y);
+BN256_DLL_API int BN256_G1_isZero(const BN256_G1 *x);
-int BN256_G1_hashAndMapTo(BN256_G1 *x, const char *str);
+BN256_DLL_API int BN256_G1_hashAndMapTo(BN256_G1 *x, const char *str);
// return 0 if success
-int BN256_G1_getStr(char *buf, size_t maxBufSize, const BN256_G1 *x);
+BN256_DLL_API int BN256_G1_getStr(char *buf, size_t maxBufSize, const BN256_G1 *x);
-void BN256_G1_neg(BN256_G1 *y, const BN256_G1 *x);
-void BN256_G1_dbl(BN256_G1 *y, const BN256_G1 *x);
-void BN256_G1_add(BN256_G1 *z, const BN256_G1 *x, const BN256_G1 *y);
-void BN256_G1_sub(BN256_G1 *z, const BN256_G1 *x, const BN256_G1 *y);
-void BN256_G1_mul(BN256_G1 *z, const BN256_G1 *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_G1_neg(BN256_G1 *y, const BN256_G1 *x);
+BN256_DLL_API void BN256_G1_dbl(BN256_G1 *y, const BN256_G1 *x);
+BN256_DLL_API void BN256_G1_add(BN256_G1 *z, const BN256_G1 *x, const BN256_G1 *y);
+BN256_DLL_API void BN256_G1_sub(BN256_G1 *z, const BN256_G1 *x, const BN256_G1 *y);
+BN256_DLL_API void BN256_G1_mul(BN256_G1 *z, const BN256_G1 *x, const BN256_Fr *y);
////////////////////////////////////////////////
// set zero
-void BN256_G2_clear(BN256_G2 *x);
+BN256_DLL_API void BN256_G2_clear(BN256_G2 *x);
-void BN256_G2_copy(BN256_G2 *y, const BN256_G2 *x);
+BN256_DLL_API void BN256_G2_copy(BN256_G2 *y, const BN256_G2 *x);
// return 0 if success
-int BN256_G2_setStr(BN256_G2 *x, const char *str);
+BN256_DLL_API int BN256_G2_setStr(BN256_G2 *x, const char *str);
// return 1 if true and 0 otherwise
-int BN256_G2_isValid(const BN256_G2 *x);
-int BN256_G2_isSame(const BN256_G2 *x, const BN256_G2 *y);
-int BN256_G2_isZero(const BN256_G2 *x);
+BN256_DLL_API int BN256_G2_isValid(const BN256_G2 *x);
+BN256_DLL_API int BN256_G2_isSame(const BN256_G2 *x, const BN256_G2 *y);
+BN256_DLL_API int BN256_G2_isZero(const BN256_G2 *x);
-int BN256_G2_hashAndMapTo(BN256_G2 *x, const char *str);
+BN256_DLL_API int BN256_G2_hashAndMapTo(BN256_G2 *x, const char *str);
// return 0 if success
-int BN256_G2_getStr(char *buf, size_t maxBufSize, const BN256_G2 *x);
+BN256_DLL_API int BN256_G2_getStr(char *buf, size_t maxBufSize, const BN256_G2 *x);
-void BN256_G2_neg(BN256_G2 *y, const BN256_G2 *x);
-void BN256_G2_dbl(BN256_G2 *y, const BN256_G2 *x);
-void BN256_G2_add(BN256_G2 *z, const BN256_G2 *x, const BN256_G2 *y);
-void BN256_G2_sub(BN256_G2 *z, const BN256_G2 *x, const BN256_G2 *y);
-void BN256_G2_mul(BN256_G2 *z, const BN256_G2 *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_G2_neg(BN256_G2 *y, const BN256_G2 *x);
+BN256_DLL_API void BN256_G2_dbl(BN256_G2 *y, const BN256_G2 *x);
+BN256_DLL_API void BN256_G2_add(BN256_G2 *z, const BN256_G2 *x, const BN256_G2 *y);
+BN256_DLL_API void BN256_G2_sub(BN256_G2 *z, const BN256_G2 *x, const BN256_G2 *y);
+BN256_DLL_API void BN256_G2_mul(BN256_G2 *z, const BN256_G2 *x, const BN256_Fr *y);
////////////////////////////////////////////////
// set zero
-void BN256_GT_clear(BN256_GT *x);
+BN256_DLL_API void BN256_GT_clear(BN256_GT *x);
-void BN256_GT_copy(BN256_GT *y, const BN256_GT *x);
+BN256_DLL_API void BN256_GT_copy(BN256_GT *y, const BN256_GT *x);
// return 0 if success
-int BN256_GT_setStr(BN256_GT *x, const char *str);
+BN256_DLL_API int BN256_GT_setStr(BN256_GT *x, const char *str);
// return 1 if true and 0 otherwise
-int BN256_GT_isSame(const BN256_GT *x, const BN256_GT *y);
-int BN256_GT_isZero(const BN256_GT *x);
-int BN256_GT_isOne(const BN256_GT *x);
+BN256_DLL_API int BN256_GT_isSame(const BN256_GT *x, const BN256_GT *y);
+BN256_DLL_API int BN256_GT_isZero(const BN256_GT *x);
+BN256_DLL_API int BN256_GT_isOne(const BN256_GT *x);
// return 0 if success
-int BN256_GT_getStr(char *buf, size_t maxBufSize, const BN256_GT *x);
+BN256_DLL_API int BN256_GT_getStr(char *buf, size_t maxBufSize, const BN256_GT *x);
-void BN256_GT_neg(BN256_GT *y, const BN256_GT *x);
-void BN256_GT_inv(BN256_GT *y, const BN256_GT *x);
-void BN256_GT_add(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
-void BN256_GT_sub(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
-void BN256_GT_mul(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
-void BN256_GT_div(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
+BN256_DLL_API void BN256_GT_neg(BN256_GT *y, const BN256_GT *x);
+BN256_DLL_API void BN256_GT_inv(BN256_GT *y, const BN256_GT *x);
+BN256_DLL_API void BN256_GT_add(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
+BN256_DLL_API void BN256_GT_sub(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
+BN256_DLL_API void BN256_GT_mul(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
+BN256_DLL_API void BN256_GT_div(BN256_GT *z, const BN256_GT *x, const BN256_GT *y);
-void BN256_GT_finalExp(BN256_GT *y, const BN256_GT *x);
-void BN256_GT_pow(BN256_GT *z, const BN256_GT *x, const BN256_Fr *y);
+BN256_DLL_API void BN256_GT_finalExp(BN256_GT *y, const BN256_GT *x);
+BN256_DLL_API void BN256_GT_pow(BN256_GT *z, const BN256_GT *x, const BN256_Fr *y);
-void BN256_pairing(BN256_GT *z, const BN256_G1 *x, const BN256_G2 *y);
-void BN256_millerLoop(BN256_GT *z, const BN256_G1 *x, const BN256_G2 *y);
+BN256_DLL_API void BN256_pairing(BN256_GT *z, const BN256_G1 *x, const BN256_G2 *y);
+BN256_DLL_API void BN256_millerLoop(BN256_GT *z, const BN256_G1 *x, const BN256_G2 *y);
#ifdef __cplusplus
}
diff --git a/mk.bat b/mk.bat
index bcb0188..352e448 100755
--- a/mk.bat
+++ b/mk.bat
@@ -1,2 +1,2 @@
@echo off
-cl /DNOMINMAX /Ox /DNDEBUG /W4 /Zi /EHsc -I ./include -I../xbyak -I../cybozulib/include -I../cybozulib_ext/include %1 %2 /link /LIBPATH:..\cybozulib_ext\lib /LIBPATH:.\lib
+cl /MT /DNOMINMAX /Ox /DNDEBUG /W4 /Zi /EHsc -I ./include -I../xbyak -I../cybozulib/include -I../cybozulib_ext/include %1 %2 /link /LIBPATH:..\cybozulib_ext\lib /LIBPATH:.\lib
diff --git a/mklib.bat b/mklib.bat
index 426e19c..793df08 100644..100755
--- a/mklib.bat
+++ b/mklib.bat
@@ -1,7 +1,15 @@
@echo off
+set CFLAGS=/MT /DNOMINMAX /Ox /DNDEBUG /W4 /Zi /EHsc -I ./include -I../xbyak -I../cybozulib/include -I../cybozulib_ext/include
+set LDFLAGS=/link /LIBPATH:..\cybozulib_ext\lib /LIBPATH:.\lib
rem nasm -f win64 -D_WIN64 src\asm\low_x86-64.asm
-rem cl /DNOMINMAX /Ox /DNDEBUG /W4 /Zi /EHsc /c -I ./include -I../xbyak -I../cybozulib/include -I../cybozulib_ext/include src\fp.cpp
rem lib /OUT:lib\mcl.lib /nodefaultlib fp.obj src\asm\low_x86-64.obj
-cl /DNOMINMAX /Ox /DNDEBUG /W4 /Zi /EHsc /c -I ./include -I../xbyak -I../cybozulib/include -I../cybozulib_ext/include src\fp.cpp
+echo cl /c %CFLAGS% src\fp.cpp
+cl /c %CFLAGS% src\fp.cpp
+echo lib /OUT:lib\mcl.lib /nodefaultlib fp.obj
lib /OUT:lib\mcl.lib /nodefaultlib fp.obj
+
+echo cl /c %CFLAGS% src\bn256_if.cpp
+cl /c %CFLAGS% src\bn256_if.cpp
+echo cl /LD /Febin\bn256_if.dll bn256_if.obj fp.obj %LDFLAGS%
+cl /LD /Febin\bn256_if.dll bn256_if.obj fp.obj %LDFLAGS%
diff --git a/src/bn256_if.cpp b/src/bn256_if.cpp
index 1a9ac3b..2ef6784 100644
--- a/src/bn256_if.cpp
+++ b/src/bn256_if.cpp
@@ -1,4 +1,5 @@
#include <mcl/bn256.hpp>
+#define BN256_DLL_EXPORT
#define BN256_DEFINE_STRUCT
#include <mcl/bn256_if.h>
#if CYBOZU_CPP_VERSION >= CYBOZU_CPP_VERSION_CPP11