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
|
.history
|
||||||
|
built
|
60
build
60
build
|
@ -1,5 +1,4 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
set -ef
|
set -ef
|
||||||
|
|
||||||
PKGSRC=${PKGSRC:-github.com/RiV-chain/RiV-mesh/src/version}
|
PKGSRC=${PKGSRC:-github.com/RiV-chain/RiV-mesh/src/version}
|
||||||
|
@ -12,7 +11,8 @@ else
|
||||||
fi
|
fi
|
||||||
ARGS="-v"
|
ARGS="-v"
|
||||||
|
|
||||||
while getopts "utc:l:dro:ps" option
|
TARGET_PATH=$(pwd)
|
||||||
|
while getopts "utc:l:dro:psg:b:" option
|
||||||
do
|
do
|
||||||
case "$option"
|
case "$option"
|
||||||
in
|
in
|
||||||
|
@ -26,6 +26,10 @@ do
|
||||||
p) ARGS="$ARGS -buildmode=pie";;
|
p) ARGS="$ARGS -buildmode=pie";;
|
||||||
# statically linked executable
|
# statically linked executable
|
||||||
s) STATIC=" -linkmode external -extldflags=-static";;
|
s) STATIC=" -linkmode external -extldflags=-static";;
|
||||||
|
# build target
|
||||||
|
g) TARGET=$OPTARG;;
|
||||||
|
# build path
|
||||||
|
b) TARGET_PATH=$OPTARG;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -34,26 +38,46 @@ if [ -z $TABLES ] && [ -z $DEBUG ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#could be static
|
#could be static
|
||||||
for CMD in ./cmd/mesh ./cmd/meshctl ; do
|
buildbin() {
|
||||||
echo "Building: $CMD"
|
local CMD=$(realpath $1)
|
||||||
go build $ARGS -ldflags "${LDFLAGS}${STATIC}" -gcflags "$GCFLAGS" $CMD
|
echo "Building: $CMD for $GOOS-$GOARCH"
|
||||||
|
|
||||||
|
(cd $TARGET_PATH && go build $ARGS -ldflags "${LDFLAGS}${LDFLAGS2}" -gcflags "$GCFLAGS" $CMD)
|
||||||
|
|
||||||
if [ $UPX ]; then
|
if [ $UPX ]; then
|
||||||
upx --brute $CMD
|
upx --brute $CMD
|
||||||
fi
|
fi
|
||||||
done
|
}
|
||||||
|
|
||||||
#only UI should be built with windowsgui flag
|
build_mesh() {
|
||||||
if [ "$GOOS" == "windows" ]; then
|
LDFLAGS2="${STATIC}" buildbin ./cmd/mesh
|
||||||
LDFLAGS="$LDFLAGS -H windowsgui"
|
}
|
||||||
fi
|
|
||||||
|
|
||||||
#dynamic only
|
build_meshctl() {
|
||||||
for CMD in ./contrib/ui/mesh-ui ; do
|
LDFLAGS2="${STATIC}" buildbin ./cmd/meshctl
|
||||||
echo "Building: $CMD"
|
}
|
||||||
go build $ARGS -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" $CMD
|
|
||||||
|
|
||||||
if [ $UPX ]; then
|
build_mesh_ui() {
|
||||||
upx --brute $CMD
|
#only UI should be built with windowsgui flag
|
||||||
|
if [ "$GOOS" == "windows" ]; then
|
||||||
|
LDFLAGS2=" -H windowsgui"
|
||||||
fi
|
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