mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-28 22:25:07 +03:00
Added makefile and separate binaries compilation
This commit is contained in:
parent
f84f0a5f19
commit
5e53fc4f9d
3 changed files with 80 additions and 18 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
.history
|
||||
built
|
60
build
60
build
|
@ -1,5 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
#!/bin/bash
|
||||
set -ef
|
||||
|
||||
PKGSRC=${PKGSRC:-github.com/RiV-chain/RiV-mesh/src/version}
|
||||
|
@ -12,7 +11,8 @@ else
|
|||
fi
|
||||
ARGS="-v"
|
||||
|
||||
while getopts "utc:l:dro:ps" option
|
||||
TARGET_PATH=$(pwd)
|
||||
while getopts "utc:l:dro:psg:b:" option
|
||||
do
|
||||
case "$option"
|
||||
in
|
||||
|
@ -26,6 +26,10 @@ do
|
|||
p) ARGS="$ARGS -buildmode=pie";;
|
||||
# statically linked executable
|
||||
s) STATIC=" -linkmode external -extldflags=-static";;
|
||||
# build target
|
||||
g) TARGET=$OPTARG;;
|
||||
# build path
|
||||
b) TARGET_PATH=$OPTARG;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
@ -34,26 +38,46 @@ if [ -z $TABLES ] && [ -z $DEBUG ]; then
|
|||
fi
|
||||
|
||||
#could be static
|
||||
for CMD in ./cmd/mesh ./cmd/meshctl ; do
|
||||
echo "Building: $CMD"
|
||||
go build $ARGS -ldflags "${LDFLAGS}${STATIC}" -gcflags "$GCFLAGS" $CMD
|
||||
buildbin() {
|
||||
local CMD=$(realpath $1)
|
||||
echo "Building: $CMD for $GOOS-$GOARCH"
|
||||
|
||||
(cd $TARGET_PATH && go build $ARGS -ldflags "${LDFLAGS}${LDFLAGS2}" -gcflags "$GCFLAGS" $CMD)
|
||||
|
||||
if [ $UPX ]; then
|
||||
upx --brute $CMD
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#only UI should be built with windowsgui flag
|
||||
if [ "$GOOS" == "windows" ]; then
|
||||
LDFLAGS="$LDFLAGS -H windowsgui"
|
||||
fi
|
||||
build_mesh() {
|
||||
LDFLAGS2="${STATIC}" buildbin ./cmd/mesh
|
||||
}
|
||||
|
||||
#dynamic only
|
||||
for CMD in ./contrib/ui/mesh-ui ; do
|
||||
echo "Building: $CMD"
|
||||
go build $ARGS -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" $CMD
|
||||
build_meshctl() {
|
||||
LDFLAGS2="${STATIC}" buildbin ./cmd/meshctl
|
||||
}
|
||||
|
||||
if [ $UPX ]; then
|
||||
upx --brute $CMD
|
||||
build_mesh_ui() {
|
||||
#only UI should be built with windowsgui flag
|
||||
if [ "$GOOS" == "windows" ]; then
|
||||
LDFLAGS2=" -H windowsgui"
|
||||
fi
|
||||
done
|
||||
buildbin ./contrib/ui/mesh-ui
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
"mesh")
|
||||
build_mesh
|
||||
;;
|
||||
"meshctl")
|
||||
build_meshctl
|
||||
;;
|
||||
"mesh_ui")
|
||||
build_mesh_ui
|
||||
;;
|
||||
*)
|
||||
build_mesh
|
||||
build_meshctl
|
||||
build_mesh_ui
|
||||
;;
|
||||
esac
|
||||
|
|
37
makefile
Normal file
37
makefile
Normal file
|
@ -0,0 +1,37 @@
|
|||
ALL_ARCHS=amd64
|
||||
ALL_OS=linux windows macos
|
||||
ALL_PLATFORMS=linux-amd64 windows-amd64 macos-amd64
|
||||
ALL_EXE=mesh meshctl mesh_ui
|
||||
|
||||
OUT_DIR=built
|
||||
|
||||
PATH:=/devroot/toolchain/amd64-w64-mingw32-seh-cpp20/bin:$(PATH)
|
||||
|
||||
take=$(word $1,$(subst -, ,$2))
|
||||
|
||||
all: $(ALL_PLATFORMS)
|
||||
|
||||
$(addprefix $(OUT_DIR)/,$(ALL_PLATFORMS)):
|
||||
mkdir -p $@
|
||||
|
||||
|
||||
linux-amd64: $(addprefix linux-amd64-,$(ALL_EXE))
|
||||
|
||||
windows-amd64: $(addprefix windows-amd64-,$(ALL_EXE))
|
||||
windows-amd64-%: BUILD_ENV=CGO_ENABLED=1 CC=amd64-w64-mingw32-gcc CXX=amd64-w64-mingw32-g++
|
||||
|
||||
macos-amd64: $(addprefix macos-amd64-,$(ALL_EXE))
|
||||
macos-amd64-%: BUILD_ENV=GO111MODULE=on
|
||||
|
||||
$(foreach platf, $(ALL_PLATFORMS), $(addprefix $(platf)-,$(ALL_EXE))):
|
||||
$(MAKE) $(OUT_DIR)/$(call take,1,$@)-$(call take,2,$@)
|
||||
GOOS=$(call take,1,$@) GOARCH=$(call take,2,$@) $(BUILD_ENV) ./build -g $(call take,3,$@) -b $(OUT_DIR)/$(call take,1,$@)-$(call take,2,$@)
|
||||
|
||||
clean:
|
||||
|
||||
help:
|
||||
@echo "Targets:"
|
||||
@echo $(ALL_PLATFORMS)
|
||||
@echo $(addprefix linux-amd64-,$(ALL_EXE))
|
||||
@echo $(addprefix windows-amd64-,$(ALL_EXE))
|
||||
@echo $(addprefix macos-amd64-,$(ALL_EXE))
|
Loading…
Add table
Add a link
Reference in a new issue