-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathMakefile
142 lines (113 loc) · 4.4 KB
/
Makefile
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#-------------------------------------------------------------------------------
#
# Makefile for building target binaries.
#
# Configuration
BUILD_ROOT = $(abspath ./)
BIN_DIR = ./bin
LINUX_BIN_DIR = ./build/linux
GOBUILD = go build
GOBUILD_TAGS =
# GOBUILD_ENVS = CGO_ENABLED=0
GOBUILD_LDFLAGS =
GOBUILD_FLAGS = -tags "$(GOBUILD_TAGS)" -ldflags "$(GOBUILD_LDFLAGS)"
GOBUILD_ENVS_LINUX = $(GOBUILD_ENVS) GOOS=linux GOARCH=amd64
GOTEST = go test
GOTEST_FLAGS = -test.short
# Build flags
GL_VERSION ?= $(shell git describe --always --tags --dirty)
GL_TAG ?= latest
BUILD_INFO = $(shell go env GOOS)/$(shell go env GOARCH) tags($(GOBUILD_TAGS))-$(shell date '+%Y-%m-%d-%H:%M:%S')
#
# Build scripts for command binaries.
#
CMDS = $(patsubst cmd/%,%,$(wildcard cmd/*))
.PHONY: $(CMDS) $(addsuffix -linux,$(CMDS))
define CMD_template
$(BIN_DIR)/$(1) $(1) : GOBUILD_LDFLAGS+=$$($(1)_LDFLAGS)
$(BIN_DIR)/$(1) $(1) :
@ \
rm -f $(BIN_DIR)/$(1) ; \
echo "[#] go build ./cmd/$(1)"
$$(GOBUILD_ENVS) \
go build $$(GOBUILD_FLAGS) \
-o $(BIN_DIR)/$(1) ./cmd/$(1)
$(LINUX_BIN_DIR)/$(1) $(1)-linux : GOBUILD_LDFLAGS+=$$($(1)_LDFLAGS)
$(LINUX_BIN_DIR)/$(1) $(1)-linux :
@ \
rm -f $(LINUX_BIN_DIR)/$(1) ; \
echo "[#] go build ./cmd/$(1)"
$$(GOBUILD_ENVS_LINUX) \
go build $$(GOBUILD_FLAGS) \
-o $(LINUX_BIN_DIR)/$(1) ./cmd/$(1)
endef
$(foreach M,$(CMDS),$(eval $(call CMD_template,$(M))))
# Build flags for each command
iconbridge_LDFLAGS = -X 'main.version=$(GL_VERSION)' -X 'main.build=$(BUILD_INFO)'
BUILD_TARGETS += iconbridge
linux : $(addsuffix -linux,$(BUILD_TARGETS))
PYSCORE_DIST_DIR = $(BUILD_ROOT)/build/contracts/pyscore
SOLIDITY_DIST_DIR = $(BUILD_ROOT)/build/contracts/solidity
$(SOLIDITY_DIST_DIR)/%:
$(eval MODULE := $(patsubst $(SOLIDITY_DIST_DIR)/%,%,$@))
mkdir -p $@/contracts ; \
mkdir -p $@/migrations ; \
cp -r solidity/$(MODULE)/contracts/* $@/contracts ; \
cp -r solidity/$(MODULE)/migrations/* $@/migrations ; \
cp solidity/$(MODULE)/{truffle-config.js,*.json,*.lock} $@/ ; \
cp solidity/$(MODULE)/truffle-config.js $@/ ; \
cp solidity/$(MODULE)/*.json $@/ ; \
cp solidity/$(MODULE)/*.lock $@/ ; \
rm -rf $@/contracts/Mock ; \
$(PYSCORE_DIST_DIR)/%:
$(eval MODULE := $(patsubst $(PYSCORE_DIST_DIR)/%,%,$@))
mkdir -p $@ ; \
cp -r pyscore/lib pyscore/$(MODULE) $@/
dist-py-bmc: $(PYSCORE_DIST_DIR)/bmc
cd $(PYSCORE_DIST_DIR)/bmc ; \
echo '{"version": "0.0.1","main_module": "bmc.bmc","main_score": "BTPMessageCenter"}' > package.json ; \
zip -r -v $(PYSCORE_DIST_DIR)/bmc.zip bmc lib package.json -x *__pycache__* -x *tests*
dist-py-bmv: $(PYSCORE_DIST_DIR)/bmv
cd $(PYSCORE_DIST_DIR)/bmv ; \
echo '{"version": "0.0.1","main_module": "bmv.icon.icon","main_score": "BTPMessageVerifier"}' > package.json ; \
zip -r -v $(PYSCORE_DIST_DIR)/bmv.zip bmv lib package.json -x *__pycache__* -x *tests*
dist-py-irc2: $(PYSCORE_DIST_DIR)/token_bsh
cd $(PYSCORE_DIST_DIR)/token_bsh ; \
echo '{"version": "0.0.1","main_module": "token_bsh.token_bsh","main_score": "TokenBSH"}' > package.json ; \
zip -r -v $(PYSCORE_DIST_DIR)/token_bsh.zip token_bsh lib package.json -x *__pycache__* -x *tests* -x *sample* ; \
cd token_bsh/sample/irc2_token ; \
zip -r -v $(PYSCORE_DIST_DIR)/irc2_token.zip * -x *__pycache__* -x *tests*
dist-sol-bmc: $(SOLIDITY_DIST_DIR)/bmc
cd $(SOLIDITY_DIST_DIR)/bmc ;
dist-sol-bmv: $(SOLIDITY_DIST_DIR)/bmv
cd $(SOLIDITY_DIST_DIR)/bmv ;
dist-sol-bts: $(SOLIDITY_DIST_DIR)/bts
cd $(SOLIDITY_DIST_DIR)/bts ;
# dist-sol-native_bsh: $(SOLIDITY_DIST_DIR)/bsh
# cd $(SOLIDITY_DIST_DIR)/bsh ;
dist-sol-token_bsh: $(SOLIDITY_DIST_DIR)/TokenBSH
cd $(SOLIDITY_DIST_DIR)/TokenBSH ;
dist-py: dist-py-bmc dist-py-bmv dist-py-irc2
clean-dist-py:
rm -rf $(PYSCORE_DIST_DIR)/*
clean-dist-sol:
rm -rf $(SOLIDITY_DIST_DIR)
dist-sol: dist-sol-bmc dist-sol-bts
dist-javascore:
$(BUILD_ROOT)/docker/javascore/build.sh
ICONBRIDGE_IMAGE = iconbridge:$(GL_TAG)
ICONBRIDGE_DOCKER_DIR = $(BUILD_ROOT)/build/iconbridge
iconbridge-image: iconbridge-linux
@ echo "[#] Building image $(ICONBRIDGE_IMAGE) for $(GL_VERSION)"
@ rm -rf $(ICONBRIDGE_DOCKER_DIR)
@ \
BIN_DIR=$(abspath $(LINUX_BIN_DIR)) \
BIN_VERSION=$(GL_VERSION) \
BUILD_TAGS="$(GOBUILD_TAGS)" \
DIST_DIR="$(BUILD_ROOT)/build/contracts" \
$(BUILD_ROOT)/docker/iconbridge/build.sh $(ICONBRIDGE_IMAGE) $(BUILD_ROOT) $(ICONBRIDGE_DOCKER_DIR)
.PHONY: test
test :
$(GOBUILD_ENVS) $(GOTEST) $(GOBUILD_FLAGS) ./... $(GOTEST_FLAGS)
.DEFAULT_GOAL := all
all : $(BUILD_TARGETS)