-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathMakefile
106 lines (89 loc) · 3.42 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
all:
@PHONY: webui-deps
webui-deps:
cd desktop && npm install
cd crates/librqbit/webui && npm install
@PHONY: webui-dev
webui-dev: webui-deps
cd crates/librqbit/webui && \
npm run dev
# NOTE: on LG TV using hostname is unstable for some reason, use IP address.
export RQBIT_UPNP_SERVER_ENABLE ?= true
export RQBIT_UPNP_SERVER_FRIENDLY_NAME ?= rqbit-dev
export RQBIT_HTTP_API_LISTEN_ADDR ?= [::]:3030
export RQBIT_FASTRESUME = true
CARGO_RUN_FLAGS ?=
RQBIT_OUTPUT_FOLDER ?= /tmp/scratch
RQBIT_POSTGRES_CONNECTION_STRING ?= postgres:///rqbit
@PHONY: devserver-release
devserver-profile:
cargo run --release $(CARGO_RUN_FLAGS) -- server start $(RQBIT_OUTPUT_FOLDER)
# DEV variables (that's why defined after devserver-profile)
export RQBIT_LOG_FILE ?= /tmp/rqbit-log
export RQBIT_LOG_FILE_RUST_LOG ?= debug,librqbit=trace,upnp_serve=trace
export CORS_ALLOW_REGEXP ?= '.*'
@PHONY: devserver
devserver:
echo -n '' > $(RQBIT_LOG_FILE) && \
cargo run $(CARGO_RUN_FLAGS) -- \
server start $(RQBIT_OUTPUT_FOLDER)
@PHONY: devserver
devserver-postgres:
echo -n '' > $(RQBIT_LOG_FILE) && \
cargo run $(CARGO_RUN_FLAGS) -- \
server start --fastresume --persistence-location $(RQBIT_POSTGRES_CONNECTION_STRING) $(RQBIT_OUTPUT_FOLDER)
@PHONY: docker-build-xx-one-platform
docker-build-xx-one-platform:
docker build -f docker/Dockerfile.xx \
--platform $(PLATFORM) \
--output type=local,dest=target/cross/$(PLATFORM) . && \
docker build \
-t ikatson/rqbit:$(shell git describe --tags)-dev-$(shell echo $(PLATFORM) | tr '/' '-') \
--platform $(PLATFORM) \
-f docker/Dockerfile \
target/cross/
@PHONY: docker-build-amd64
docker-build-amd64:
PLATFORM=linux/amd64 $(MAKE) docker-build-xx-one-platform
@PHONY: docker-build-armv7
docker-build-armv7:
PLATFORM=linux/arm/v7 $(MAKE) docker-build-xx-one-platform
@PHONY: clean
clean:
rm -rf target
CARGO_RELEASE_PROFILE ?= release-github
@PHONY: release-linux-current-target
release-linux-current-target:
CC_$(TARGET_SNAKE_CASE)=$(CROSS_COMPILE_PREFIX)-gcc \
CXX_$(TARGET_SNAKE_CASE)=$(CROSS_COMPILE_PREFIX)-g++ \
AR_$(TARGET_SNAKE_CASE)=$(CROSS_COMPILE_PREFIX)-ar \
CARGO_TARGET_$(TARGET_SNAKE_UPPER_CASE)_LINKER=$(CROSS_COMPILE_PREFIX)-gcc \
cargo build --profile $(CARGO_RELEASE_PROFILE) --target=$(TARGET) --features=openssl-vendored
@PHONY: debug-linux-docker-x86_64
debug-linux-docker-x86_64:
CARGO_RELEASE_PROFILE=dev \
$(MAKE) release-linux-x86_64 && \
cp target/x86_64-unknown-linux-musl/debug/rqbit target/cross/linux/amd64/ && \
docker build -t ikatson/rqbit:tmp-debug -f docker/Dockerfile --platform linux/amd64 target/cross && \
docker push ikatson/rqbit:tmp-debug
@PHONY: release-linux-x86_64
release-linux-x86_64:
TARGET=x86_64-unknown-linux-musl \
TARGET_SNAKE_CASE=x86_64_unknown_linux_musl \
TARGET_SNAKE_UPPER_CASE=X86_64_UNKNOWN_LINUX_MUSL \
CROSS_COMPILE_PREFIX=x86_64-unknown-linux-musl \
$(MAKE) release-linux-current-target
@PHONY: release-linux-aarch64
release-linux-aarch64:
TARGET=aarch64-unknown-linux-musl \
TARGET_SNAKE_CASE=aarch64_unknown_linux_musl \
TARGET_SNAKE_UPPER_CASE=AARCH64_UNKNOWN_LINUX_MUSL \
CROSS_COMPILE_PREFIX=aarch64-unknown-linux-musl \
$(MAKE) release-linux-current-target
@PHONY: release-linux-armv7
release-linux-armv7:
TARGET=armv7-unknown-linux-musleabihf \
TARGET_SNAKE_CASE=armv7_unknown_linux_musleabihf \
TARGET_SNAKE_UPPER_CASE=ARMV7_UNKNOWN_LINUX_MUSLEABIHF \
CROSS_COMPILE_PREFIX=armv7-linux-musleabihf \
$(MAKE) release-linux-current-target