aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSonic <sonic@dexon.org>2019-04-08 15:45:19 +0800
committerSonic <sonic@dexon.org>2019-04-10 15:49:45 +0800
commitb0a83abe7389df7f4c45adc3b52d957f3996322d (patch)
tree3cb57be8c43c39199f213fd0ae0ff3efb15399a2
parent0f278c5c52b63ca0041d1b55edab8760b392b081 (diff)
downloaddexon-bls-dev.tar
dexon-bls-dev.tar.gz
dexon-bls-dev.tar.bz2
dexon-bls-dev.tar.lz
dexon-bls-dev.tar.xz
dexon-bls-dev.tar.zst
dexon-bls-dev.zip
static link bls dependenciesdev
-rw-r--r--.travis.yml2
-rw-r--r--Makefile20
-rw-r--r--ffi/go/bls/bls.go14
-rw-r--r--ffi/go/bls/config.h6
-rw-r--r--ffi/go/bls/dummy.cpp3
-rw-r--r--ffi/go/bls/mcl.go2
-rw-r--r--images/bls-go-alpine/Dockerfile2
7 files changed, 24 insertions, 25 deletions
diff --git a/.travis.yml b/.travis.yml
index ceea661..71a667a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,5 @@
sudo: true
-dist: trusty
+dist: xenial
services:
- docker
env:
diff --git a/Makefile b/Makefile
index 9d8cf68..efea222 100644
--- a/Makefile
+++ b/Makefile
@@ -43,11 +43,11 @@ MCL_LIB=$(MCL_DIR)/lib/libmcl.a
$(MCL_LIB):
$(MAKE) -C $(MCL_DIR)
-$(BLS256_LIB): $(OBJ_DIR)/bls_c256.o
+$(BLS256_LIB): $(OBJ_DIR)/bls_c256.o $(MCL_LIB)
$(AR) $@ $<
-$(BLS384_LIB): $(OBJ_DIR)/bls_c384.o
+$(BLS384_LIB): $(OBJ_DIR)/bls_c384.o $(MCL_LIB)
$(AR) $@ $<
-$(BLS384_256_LIB): $(OBJ_DIR)/bls_c384_256.o
+$(BLS384_256_LIB): $(OBJ_DIR)/bls_c384_256.o $(MCL_LIB)
$(AR) $@ $<
ifneq ($(findstring $(OS),mac/mingw64),)
@@ -63,11 +63,11 @@ ifeq ($(OS),mingw64)
BLS384_256_SLIB_LDFLAGS+=-Wl,--out-implib,$(LIB_DIR)/lib$(BLS384_256_SNAME).a
endif
$(BLS256_SLIB): $(OBJ_DIR)/bls_c256.o $(MCL_LIB)
- $(PRE)$(CXX) -shared -o $@ $< -L$(MCL_DIR)/lib -lmcl $(BLS256_SLIB_LDFLAGS)
+ $(PRE)$(CXX) -shared -o $@ $< -L$(MCL_DIR)/lib -lmcl $(BLS256_SLIB_LDFLAGS) $(LDFLAGS)
$(BLS384_SLIB): $(OBJ_DIR)/bls_c384.o $(MCL_LIB)
- $(PRE)$(CXX) -shared -o $@ $< -L$(MCL_DIR)/lib -lmcl $(BLS384_SLIB_LDFLAGS)
+ $(PRE)$(CXX) -shared -o $@ $< -L$(MCL_DIR)/lib -lmcl $(BLS384_SLIB_LDFLAGS) $(LDFLAGS)
$(BLS384_256_SLIB): $(OBJ_DIR)/bls_c384_256.o $(MCL_LIB)
- $(PRE)$(CXX) -shared -o $@ $< -L$(MCL_DIR)/lib -lmcl $(BLS384_256_SLIB_LDFLAGS)
+ $(PRE)$(CXX) -shared -o $@ $< -L$(MCL_DIR)/lib -lmcl $(BLS384_256_SLIB_LDFLAGS) $(LDFLAGS)
VPATH=test sample src
@@ -116,12 +116,12 @@ sample_test: $(EXE_DIR)/bls_smpl.exe
# PATH is for mingw, LD_LIBRARY_PATH is for linux, DYLD_LIBRARY_PATH is for mac
COMMON_LIB_PATH="../../../lib:../../../../mcl/lib"
-PATH_VAL=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH) CGO_LDFLAGS="-L../../../lib" CGO_CFLAGS="-I$(PWD)/include -I$(MCL_DIR)/include"
-test_go256: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS256_SLIB)
+PATH_VAL=$$PATH:$(COMMON_LIB_PATH) LD_LIBRARY_PATH=$(COMMON_LIB_PATH) DYLD_LIBRARY_PATH=$(COMMON_LIB_PATH)
+test_go256: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS256_LIB)
cd ffi/go/bls && env PATH=$(PATH_VAL) go test -tags bn256 .
-test_go384: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_SLIB)
+test_go384: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_LIB)
cd ffi/go/bls && env PATH=$(PATH_VAL) go test -tags bn384 .
-test_go384_256: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_256_SLIB)
+test_go384_256: ffi/go/bls/bls.go ffi/go/bls/bls_test.go $(BLS384_256_LIB)
cd ffi/go/bls && env PATH=$(PATH_VAL) go test -tags bn384_256 .
test_go:
diff --git a/ffi/go/bls/bls.go b/ffi/go/bls/bls.go
index 91af1d1..e9a6be3 100644
--- a/ffi/go/bls/bls.go
+++ b/ffi/go/bls/bls.go
@@ -2,14 +2,16 @@ package bls
/*
#cgo bn256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=4
-#cgo bn256 LDFLAGS:-lbls256
+#cgo bn256 LDFLAGS:${SRCDIR}/../../../lib/libbls256.a
#cgo bn384 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6
-#cgo bn384 LDFLAGS:-lbls384
+#cgo bn384 LDFLAGS:${SRCDIR}/../../../lib/libbls384.a
#cgo bn384_256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6 -DMCLBN_FR_UNIT_SIZE=4
-#cgo bn384_256 LDFLAGS:-lbls384_256
-#cgo LDFLAGS:-lbls384
-#cgo LDFLAGS:-lcrypto -lgmp -lgmpxx -lstdc++
-#include "config.h"
+#cgo bn384_256 LDFLAGS:${SRCDIR}/../../../lib/libbls384_256.a
+#cgo !bn256,!bn384,!bn384_256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6
+#cgo !bn256,!bn384,!bn384_256 LDFLAGS:${SRCDIR}/../../../lib/libbls384.a
+#cgo CFLAGS:-I${SRCDIR}/../../../include -I${SRCDIR}/../../../../mcl/include
+#cgo LDFLAGS:${SRCDIR}/../../../../mcl/lib/libmcl.a -lgmpxx -lgmp
+#cgo pkg-config: libcrypto
typedef unsigned int (*ReadRandFunc)(void *, void *, unsigned int);
int wrapReadRandCgo(void *self, void *buf, unsigned int n);
#include <bls/bls.h>
diff --git a/ffi/go/bls/config.h b/ffi/go/bls/config.h
deleted file mode 100644
index 07e1481..0000000
--- a/ffi/go/bls/config.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma
-// use bn384 unless tags is specified
-#ifndef MCLBN_FP_UNIT_SIZE
- #define MCLBN_FP_UNIT_SIZE 6
-#endif
-
diff --git a/ffi/go/bls/dummy.cpp b/ffi/go/bls/dummy.cpp
new file mode 100644
index 0000000..a5103a1
--- /dev/null
+++ b/ffi/go/bls/dummy.cpp
@@ -0,0 +1,3 @@
+// This is a dummy source file which forces cgo to use the C++ linker instead
+// of the default C linker. We can therefore eliminate non-portable linker
+// flags such as -lstdc++, which is likely to break on FreeBSD and OpenBSD.
diff --git a/ffi/go/bls/mcl.go b/ffi/go/bls/mcl.go
index a808bad..ca8d7f0 100644
--- a/ffi/go/bls/mcl.go
+++ b/ffi/go/bls/mcl.go
@@ -4,7 +4,7 @@ package bls
#cgo bn256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=4
#cgo bn384 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6
#cgo bn384_256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6 -DMCLBN_FR_UNIT_SIZE=4
-#include "config.h"
+#cgo !bn256,!bn384,!bn384_256 CFLAGS:-DMCLBN_FP_UNIT_SIZE=6
#include <mcl/bn.h>
*/
import "C"
diff --git a/images/bls-go-alpine/Dockerfile b/images/bls-go-alpine/Dockerfile
index d8ef015..edd49eb 100644
--- a/images/bls-go-alpine/Dockerfile
+++ b/images/bls-go-alpine/Dockerfile
@@ -6,7 +6,7 @@ RUN apk add --update-cache build-base gmp-dev openssl-dev git
# Build bls library
RUN mkdir work ; cd work
-RUN git clone git://github.com/dexon-foundation/mcl.git
+RUN git clone --depth 1 git://github.com/dexon-foundation/mcl.git
RUN mkdir bls
COPY . bls/
RUN cd bls ; make clean && make test_go DOCKER=alpine -j && cp lib/* /usr/lib/