@@ -8,6 +8,10 @@ VERSION := 0.4.8
8
8
PROMETHEUS_TAG := github.com/prometheus/common/version
9
9
KVM_PKG_NAME := github.com/jetkvm/kvm
10
10
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
11
15
GO_BUILD_ARGS := -tags netgo,timetzdata,nomsgpack
12
16
GO_RELEASE_BUILD_ARGS := -trimpath $(GO_BUILD_ARGS )
13
17
GO_LDFLAGS := \
@@ -17,20 +21,40 @@ GO_LDFLAGS := \
17
21
-X $(PROMETHEUS_TAG ) .Revision=$(REVISION ) \
18
22
-X $(KVM_PKG_NAME ) .builtTimestamp=$(BUILDTS )
19
23
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
+
21
38
BIN_DIR := $(shell pwd) /bin
22
39
23
40
TEST_DIRS := $(shell find . -name "* _test.go" -type f -exec dirname {} \; | sort -u)
24
41
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
27
51
28
- build_dev : hash_resource
52
+ build_dev : build_native
29
53
@echo " Building..."
30
54
$(GO_CMD ) build \
31
55
-ldflags=" $( GO_LDFLAGS) -X $( KVM_PKG_NAME) .builtAppVersion=$( VERSION_DEV) " \
32
56
$(GO_RELEASE_BUILD_ARGS ) \
33
- -o $(BIN_DIR ) /jetkvm_app cmd/main.go
57
+ -o $(BIN_DIR ) /jetkvm_app -v cmd/main.go
34
58
35
59
build_test2json :
36
60
$(GO_CMD ) build -o $(BIN_DIR ) /test2json cmd/test2json
@@ -62,30 +86,32 @@ build_dev_test: build_test2json build_gotestsum
62
86
tar czfv device-tests.tar.gz -C $(BIN_DIR)/tests .
63
87
64
88
frontend :
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
81
107
82
108
dev_release : frontend build_dev
83
109
@echo " Uploading release... $( VERSION_DEV) "
84
110
@shasum -a 256 bin/jetkvm_app | cut -d ' ' -f 1 > bin/jetkvm_app.sha256
85
111
rclone copyto bin/jetkvm_app r2://jetkvm-update/app/$(VERSION_DEV ) /jetkvm_app
86
112
rclone copyto bin/jetkvm_app.sha256 r2://jetkvm-update/app/$(VERSION_DEV ) /jetkvm_app.sha256
87
113
88
- build_release : frontend hash_resource
114
+ build_release : frontend build_native
89
115
@echo " Building release..."
90
116
$(GO_CMD ) build \
91
117
-ldflags=" $( GO_LDFLAGS) -X $( KVM_PKG_NAME) .builtAppVersion=$( VERSION) " \
@@ -101,4 +127,4 @@ release:
101
127
@echo " Uploading release..."
102
128
@shasum -a 256 bin/jetkvm_app | cut -d ' ' -f 1 > bin/jetkvm_app.sha256
103
129
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