@@ -8,6 +8,10 @@ VERSION := 0.4.8
88PROMETHEUS_TAG := github.com/prometheus/common/version
99KVM_PKG_NAME := github.com/jetkvm/kvm
1010
11+ BUILDKIT_FLAVOR := arm-rockchip830-linux-uclibcgnueabihf
12+ BUILDKIT_PATH ?= /opt/jetkvm-native-buildkit
13+ SKIP_NATIVE_IF_EXISTS ?= 0
14+ SKIP_UI_BUILD ?= 0
1115GO_BUILD_ARGS := -tags netgo,timetzdata,nomsgpack
1216GO_RELEASE_BUILD_ARGS := -trimpath $(GO_BUILD_ARGS )
1317GO_LDFLAGS := \
@@ -17,20 +21,40 @@ GO_LDFLAGS := \
1721 -X $(PROMETHEUS_TAG ) .Revision=$(REVISION ) \
1822 -X $(KVM_PKG_NAME ) .builtTimestamp=$(BUILDTS )
1923
20- GO_CMD := GOOS=linux GOARCH=arm GOARM=7 go
24+ GO_ARGS := GOOS=linux GOARCH=arm GOARM=7 ARCHFLAGS="-arch arm"
25+ # if BUILDKIT_PATH exists, use buildkit to build
26+ ifneq ($(wildcard $(BUILDKIT_PATH ) ) ,)
27+ GO_ARGS := $(GO_ARGS) \
28+ CGO_CFLAGS="-I$(BUILDKIT_PATH)/$(BUILDKIT_FLAVOR)/include -I$(BUILDKIT_PATH)/$(BUILDKIT_FLAVOR)/sysroot/usr/include" \
29+ CGO_LDFLAGS="-L$(BUILDKIT_PATH)/$(BUILDKIT_FLAVOR)/lib -L$(BUILDKIT_PATH)/$(BUILDKIT_FLAVOR)/sysroot/usr/lib -lrockit -lrockchip_mpp -lrga -lpthread -lm" \
30+ CC="$(BUILDKIT_PATH)/bin/$(BUILDKIT_FLAVOR)-gcc" \
31+ LD="$(BUILDKIT_PATH)/bin/$(BUILDKIT_FLAVOR)-ld" \
32+ CGO_ENABLED=1
33+ # GO_RELEASE_BUILD_ARGS := $(GO_RELEASE_BUILD_ARGS) -x -work
34+ endif
35+
36+ GO_CMD := $(GO_ARGS ) go
37+
2138BIN_DIR := $(shell pwd) /bin
2239
2340TEST_DIRS := $(shell find . -name "* _test.go" -type f -exec dirname {} \; | sort -u)
2441
25- hash_resource :
26- @shasum -a 256 resource/jetkvm_native | cut -d ' ' -f 1 > resource/jetkvm_native.sha256
42+ build_native :
43+ @if [ " $( SKIP_NATIVE_IF_EXISTS) " = " 1" ] && [ -f " internal/native/cgo/lib/libjknative.a" ]; then \
44+ echo " libjknative.a already exists, skipping native build..." ; \
45+ else \
46+ echo " Building native..." ; \
47+ CC=" $( BUILDKIT_PATH) /bin/$( BUILDKIT_FLAVOR) -gcc" \
48+ LD=" $( BUILDKIT_PATH) /bin/$( BUILDKIT_FLAVOR) -ld" \
49+ ./scripts/build_cgo.sh; \
50+ fi
2751
28- build_dev : hash_resource
52+ build_dev : build_native
2953 @echo " Building..."
3054 $(GO_CMD ) build \
3155 -ldflags=" $( GO_LDFLAGS) -X $( KVM_PKG_NAME) .builtAppVersion=$( VERSION_DEV) " \
3256 $(GO_RELEASE_BUILD_ARGS ) \
33- -o $(BIN_DIR ) /jetkvm_app cmd/main.go
57+ -o $(BIN_DIR ) /jetkvm_app -v cmd/main.go
3458
3559build_test2json :
3660 $(GO_CMD ) build -o $(BIN_DIR ) /test2json cmd/test2json
@@ -62,30 +86,32 @@ build_dev_test: build_test2json build_gotestsum
6286 tar czfv device-tests.tar.gz -C $(BIN_DIR)/tests .
6387
6488frontend :
65- cd ui && npm ci && npm run build:device && \
66- find ../static/ \
67- -type f \
68- \( -name ' *.js' \
69- -o -name ' *.css' \
70- -o -name ' *.html' \
71- -o -name ' *.ico' \
72- -o -name ' *.png' \
73- -o -name ' *.jpg' \
74- -o -name ' *.jpeg' \
75- -o -name ' *.gif' \
76- -o -name ' *.svg' \
77- -o -name ' *.webp' \
78- -o -name ' *.woff2' \
79- \) \
80- -exec sh -c ' gzip -9 -kfv {}' \;
89+ @if [ " $( SKIP_UI_BUILD) " = " 1" ] && [ -f " static/index.html" ]; then \
90+ echo " Skipping frontend build..." ; \
91+ else \
92+ cd ui && npm ci && npm run build:device && \
93+ find ../static/ -type f \
94+ \( -name ' *.js' \
95+ -o -name ' *.css' \
96+ -o -name ' *.html' \
97+ -o -name ' *.ico' \
98+ -o -name ' *.png' \
99+ -o -name ' *.jpg' \
100+ -o -name ' *.jpeg' \
101+ -o -name ' *.gif' \
102+ -o -name ' *.svg' \
103+ -o -name ' *.webp' \
104+ -o -name ' *.woff2' \
105+ \) -exec sh -c ' gzip -9 -kfv {}' \; ; \
106+ fi
81107
82108dev_release : frontend build_dev
83109 @echo " Uploading release... $( VERSION_DEV) "
84110 @shasum -a 256 bin/jetkvm_app | cut -d ' ' -f 1 > bin/jetkvm_app.sha256
85111 rclone copyto bin/jetkvm_app r2://jetkvm-update/app/$(VERSION_DEV ) /jetkvm_app
86112 rclone copyto bin/jetkvm_app.sha256 r2://jetkvm-update/app/$(VERSION_DEV ) /jetkvm_app.sha256
87113
88- build_release : frontend hash_resource
114+ build_release : frontend build_native
89115 @echo " Building release..."
90116 $(GO_CMD ) build \
91117 -ldflags=" $( GO_LDFLAGS) -X $( KVM_PKG_NAME) .builtAppVersion=$( VERSION) " \
@@ -101,4 +127,4 @@ release:
101127 @echo " Uploading release..."
102128 @shasum -a 256 bin/jetkvm_app | cut -d ' ' -f 1 > bin/jetkvm_app.sha256
103129 rclone copyto bin/jetkvm_app r2://jetkvm-update/app/$(VERSION ) /jetkvm_app
104- rclone copyto bin/jetkvm_app.sha256 r2://jetkvm-update/app/$(VERSION ) /jetkvm_app.sha256
130+ rclone copyto bin/jetkvm_app.sha256 r2://jetkvm-update/app/$(VERSION ) /jetkvm_app.sha256
0 commit comments