-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
133 lines (109 loc) · 4.45 KB
/
Makefile
File metadata and controls
133 lines (109 loc) · 4.45 KB
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
XDG_CONFIG_HOME ?= $(HOME)/.config
XDG_DATA_HOME ?= $(HOME)/.local/share
CONFIG_DIR ?= $(XDG_CONFIG_HOME)/streamrs
PROFILE ?= default
ICONS_DIR ?= $(XDG_DATA_HOME)/streamrs/icons
BIN_DIR ?= $(HOME)/.local/bin
BIN_NAME ?= streamrs
PREVIEW_BIN_NAME ?= streamrs-preview
GUI_BIN_NAME ?= streamrs-gui
ICON_COMPOSE_BIN_NAME ?= streamrs-icon-compose
SYSTEMD_USER_DIR ?= $(XDG_CONFIG_HOME)/systemd/user
SERVICE_NAME ?= streamrs
SERVICE_FILE ?= $(SYSTEMD_USER_DIR)/$(SERVICE_NAME).service
SERVICE_TEMPLATE ?= systemd/streamrs.service
APPLICATION_ID ?= lv.apps.streamrs
DESKTOP_FILE_NAME ?= $(APPLICATION_ID).desktop
DESKTOP_TEMPLATE ?= config/$(APPLICATION_ID).desktop
METAINFO_FILE_NAME ?= $(APPLICATION_ID).metainfo.xml
METAINFO_TEMPLATE ?= config/$(METAINFO_FILE_NAME)
APPLICATIONS_DIR ?= $(XDG_DATA_HOME)/applications
METAINFO_DIR ?= $(XDG_DATA_HOME)/metainfo
ICON_SIZE_DIR ?= 512x512
ICON_DEST_DIR ?= $(XDG_DATA_HOME)/icons/hicolor/$(ICON_SIZE_DIR)/apps
ICON_SOURCE ?= config/$(ICON_NAME)
ICON_NAME ?= $(APPLICATION_ID).png
LOCALE_ROOT ?= po/locale
LOCALE_INSTALL_DIR ?= $(XDG_DATA_HOME)/locale
GETTEXT_DOMAIN ?= streamrs
MOCK_OUTPUT ?= mock.png
DEB_VERSION ?= $(shell awk -F '"' '/^version = "/ {print $$2; exit}' Cargo.toml)
DEB_OUTPUT_DIR ?= dist
.PHONY: build install-bin install-systemd install install-config install-images install-desktop install-assets
.PHONY: uninstall-bin uninstall-systemd uninstall-config uninstall-images uninstall-desktop uninstall-assets uninstall
.PHONY: pot po-update mo install-locale uninstall-locale mock deb clean
build:
cargo build --release --bins
pot:
./scripts/update-po.sh
po-update: pot
mo: pot
./scripts/build-translations.sh
install-bin: build
mkdir -p "$(BIN_DIR)"
install -m 0755 "target/release/$(BIN_NAME)" "$(BIN_DIR)/$(BIN_NAME)"
install -m 0755 "target/release/$(PREVIEW_BIN_NAME)" "$(BIN_DIR)/$(PREVIEW_BIN_NAME)"
install -m 0755 "target/release/$(GUI_BIN_NAME)" "$(BIN_DIR)/$(GUI_BIN_NAME)"
install -m 0755 "target/release/$(ICON_COMPOSE_BIN_NAME)" "$(BIN_DIR)/$(ICON_COMPOSE_BIN_NAME)"
install-config:
mkdir -p "$(CONFIG_DIR)"
cp "config/default.toml" "$(CONFIG_DIR)/default.toml"
install-images:
mkdir -p "$(ICONS_DIR)"
cp -a icons/. "$(ICONS_DIR)/"
install-desktop:
mkdir -p "$(APPLICATIONS_DIR)"
rm -f "$(APPLICATIONS_DIR)/streamrs.desktop"
install -m 0644 "$(DESKTOP_TEMPLATE)" "$(APPLICATIONS_DIR)/$(DESKTOP_FILE_NAME)"
mkdir -p "$(METAINFO_DIR)"
install -m 0644 "$(METAINFO_TEMPLATE)" "$(METAINFO_DIR)/$(METAINFO_FILE_NAME)"
mkdir -p "$(ICON_DEST_DIR)"
install -m 0644 "$(ICON_SOURCE)" "$(ICON_DEST_DIR)/$(ICON_NAME)"
install-locale: mo
@for lang in $$(cat po/LINGUAS); do \
mkdir -p "$(LOCALE_INSTALL_DIR)/$$lang/LC_MESSAGES"; \
install -m 0644 "$(LOCALE_ROOT)/$$lang/LC_MESSAGES/$(GETTEXT_DOMAIN).mo" "$(LOCALE_INSTALL_DIR)/$$lang/LC_MESSAGES/$(GETTEXT_DOMAIN).mo"; \
done
install-assets: install-config install-images install-desktop install-locale
install-systemd: install-bin
mkdir -p "$(SYSTEMD_USER_DIR)"
install -m 0644 "$(SERVICE_TEMPLATE)" "$(SERVICE_FILE)"
systemctl --user daemon-reload
systemctl --user enable "$(SERVICE_NAME).service"
if systemctl --user is-active --quiet "$(SERVICE_NAME).service"; then \
systemctl --user restart "$(SERVICE_NAME).service"; \
else \
systemctl --user start "$(SERVICE_NAME).service"; \
fi
install: install-bin install-assets install-systemd
uninstall-bin:
rm -f "$(BIN_DIR)/$(BIN_NAME)"
rm -f "$(BIN_DIR)/$(PREVIEW_BIN_NAME)"
rm -f "$(BIN_DIR)/$(GUI_BIN_NAME)"
rm -f "$(BIN_DIR)/$(ICON_COMPOSE_BIN_NAME)"
uninstall-systemd:
-systemctl --user disable --now "$(SERVICE_NAME).service"
rm -f "$(SERVICE_FILE)"
-systemctl --user daemon-reload
uninstall-config:
rm -f "$(CONFIG_DIR)/$(PROFILE).toml"
uninstall-images:
rm -rf "$(ICONS_DIR)"
uninstall-desktop:
rm -f "$(APPLICATIONS_DIR)/$(DESKTOP_FILE_NAME)"
rm -f "$(APPLICATIONS_DIR)/streamrs.desktop"
rm -f "$(METAINFO_DIR)/$(METAINFO_FILE_NAME)"
rm -f "$(ICON_DEST_DIR)/$(ICON_NAME)"
uninstall-locale:
@for lang in $$(cat po/LINGUAS); do \
rm -f "$(LOCALE_INSTALL_DIR)/$$lang/LC_MESSAGES/$(GETTEXT_DOMAIN).mo"; \
done
uninstall-assets: uninstall-config uninstall-images uninstall-desktop uninstall-locale
uninstall: uninstall-systemd uninstall-assets uninstall-bin
mock:
cargo run --quiet --bin streamrs-preview -- --output "$(MOCK_OUTPUT)"
deb: build mo
./scripts/build-deb.sh "$(DEB_VERSION)" "$(DEB_OUTPUT_DIR)"
clean:
cargo clean
@if [ -d dist ] && [ -z "$$(find dist -mindepth 1 -print -quit)" ]; then rmdir dist; fi