Files
yali-rs/Makefile
T

216 lines
8.2 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ───────────────────────────────────────────────────────────────────────────
# Yali-RS — PisiLinux Kurulum Aracı
# Makefile (GNU Make 4.x)
# ───────────────────────────────────────────────────────────────────────────
BINARY := yali-rs
VERSION := 4.0.1
# Kurulum yolları (DESTDIR ile paket yöneticisi uyumlu)
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
DATADIR ?= $(PREFIX)/share/yali
LOCALEDIR ?= $(DATADIR)/locales
ASSETSDIR ?= $(DATADIR)/assets
DESKTOPDIR ?= $(PREFIX)/share/applications
PIXMAPDIR ?= $(PREFIX)/share/pixmaps
# Cargo hedefleri
RELEASE_BIN := target/release/$(BINARY)
DEBUG_BIN := target/debug/$(BINARY)
# Renk çıktısı (terminal destekliyorsa)
BOLD := $(shell tput bold 2>/dev/null)
GREEN := $(shell tput setaf 2 2>/dev/null)
YELLOW := $(shell tput setaf 3 2>/dev/null)
RESET := $(shell tput sgr0 2>/dev/null)
.PHONY: all build release debug run demo auto check fmt lint test \
install uninstall clean distclean help
# ── Varsayılan hedef ────────────────────────────────────────────────────────
all: release
# ── Derleme ─────────────────────────────────────────────────────────────────
## Üretim ikili dosyasını derle (release modu, LTO etkin)
release:
@echo "$(BOLD)$(GREEN)▶ Derleniyor: release$(RESET)"
cargo build --release
## Geliştirme ikili dosyasını derle (debug modu, hızlı derleme)
debug:
@echo "$(BOLD)$(YELLOW)▶ Derleniyor: debug$(RESET)"
cargo build
## 'build' takma adı → debug derleme
build: debug
# ── Çalıştırma ───────────────────────────────────────────────────────────────
## Grafik arayüzü başlat (release)
run: release
@echo "$(BOLD)$(GREEN)▶ Başlatılıyor: GUI modu$(RESET)"
./$(RELEASE_BIN)
## Grafik arayüzü debug modda başlat
run-debug: debug
./$(DEBUG_BIN)
## Demo modu: gerçek komutlar çalıştırılmaz; UI akışını test etmek için kullanılır.
## Kurulum ekranında slaytlar arasında 5 sn beklenir.
demo: release
@echo "$(BOLD)$(GREEN)▶ Başlatılıyor: Demo modu (--demo)$(RESET)"
./$(RELEASE_BIN) --demo
## Demo modu (debug derlemesiyle — daha hızlı başlar, geliştirme için)
demo-debug: debug
./$(DEBUG_BIN) --demo
## Otomatik kurulum modu: answer-example.toml kullanılır (DİKKAT: gerçek disk!)
auto: release
@echo "$(BOLD)$(YELLOW)▶ Başlatılıyor: Otomatik kurulum modu$(RESET)"
@echo "$(YELLOW)UYARI: answer-example.toml içindeki diski kontrol edin!$(RESET)"
./$(RELEASE_BIN) --auto-install answer-example.toml
## Otomatik kurulum — yalnızca demo; gerçek komutlar çalışmaz
auto-demo: release
./$(RELEASE_BIN) --auto-install answer-example.toml --demo
# ── Kalite Kontrol ───────────────────────────────────────────────────────────
## Kod derleme kontrolü (ikili üretmez)
check:
@echo "$(BOLD)▶ Kontrol ediliyor$(RESET)"
cargo check
## Kod formatlama (yerinde düzenler)
fmt:
@echo "$(BOLD)▶ Formatlanıyor$(RESET)"
cargo fmt --all
## Formatlama kontrolü (CI için; değişiklik yapılmaz)
fmt-check:
cargo fmt --all -- --check
## Clippy lint (uyarıları hata say)
lint:
@echo "$(BOLD)▶ Lint: clippy$(RESET)"
cargo clippy -- -D warnings
## Birim testler
test:
@echo "$(BOLD)▶ Testler çalıştırılıyor$(RESET)"
cargo test
## Tam CI kontrolü: fmt-check + clippy + test
ci: fmt-check lint test
@echo "$(BOLD)$(GREEN)✓ CI geçti$(RESET)"
# ── Kurulum ──────────────────────────────────────────────────────────────────
## Sisteme kur (sudo gerekebilir; DESTDIR ile paket kurulumu desteklenir)
install: release
@echo "$(BOLD)$(GREEN)▶ Kuruluyor: $(DESTDIR)$(BINDIR)/$(BINARY)$(RESET)"
# İkili dosya
install -Dm755 $(RELEASE_BIN) $(DESTDIR)$(BINDIR)/$(BINARY)
# Varlıklar (görüntüler, SVG'ler)
install -dm755 $(DESTDIR)$(ASSETSDIR)
cp -r assets/* $(DESTDIR)$(ASSETSDIR)/
# Görsel özelleştirme (branding) dosyaları
install -dm755 $(DESTDIR)$(DATADIR)
install -m644 branding*.toml $(DESTDIR)$(DATADIR)/
# Dil dosyaları
install -dm755 $(DESTDIR)$(LOCALEDIR)
install -m644 locales/*.toml $(DESTDIR)$(LOCALEDIR)/
# .desktop girdisi
install -Dm644 assets/yali.desktop $(DESTDIR)$(DESKTOPDIR)/yali.desktop
@echo "$(BOLD)$(GREEN)✓ Kurulum tamamlandı$(RESET)"
## Sistemden kaldır
uninstall:
@echo "$(BOLD)$(YELLOW)▶ Kaldırılıyor$(RESET)"
rm -f $(DESTDIR)$(BINDIR)/$(BINARY)
rm -rf $(DESTDIR)$(DATADIR)
rm -f $(DESTDIR)$(DESKTOPDIR)/yali.desktop
rm -f $(DESTDIR)$(PIXMAPDIR)/yali.png
@echo "$(BOLD)$(GREEN)✓ Kaldırıldı$(RESET)"
# ── Temizlik ─────────────────────────────────────────────────────────────────
## Derleme çıktılarını temizle (Cargo önbelleği korunur)
clean:
cargo clean
## Derin temizlik: derleme çıktıları + Cargo registry önbelleği
distclean: clean
rm -rf ~/.cargo/registry/cache
# ── Paketleme ────────────────────────────────────────────────────────────────
## Kaynak arşivi oluştur (git archive veya tar)
dist:
@echo "$(BOLD)▶ Arşiv oluşturuluyor: $(BINARY)-$(VERSION).tar.gz$(RESET)"
@if git rev-parse --git-dir > /dev/null 2>&1; then \
git archive --format=tar.gz --prefix=$(BINARY)-$(VERSION)/ HEAD \
-o $(BINARY)-$(VERSION).tar.gz; \
else \
tar -czf $(BINARY)-$(VERSION).tar.gz \
--transform 's|^|$(BINARY)-$(VERSION)/|' \
--exclude='.git' --exclude='target' \
.; \
fi
@echo "$(BINARY)-$(VERSION).tar.gz"
## Sürüm bilgisini yazdır
version:
@echo "$(BINARY) $(VERSION)"
@cargo --version
@rustc --version
# ── Yardım ───────────────────────────────────────────────────────────────────
## Bu yardım metnini göster
help:
@echo ""
@echo "$(BOLD)Yali-RS $(VERSION) — PisiLinux Kurulum Aracı$(RESET)"
@echo ""
@echo "$(BOLD)Derleme:$(RESET)"
@echo " make release Üretim ikili dosyasını derle (varsayılan)"
@echo " make debug Debug modda derle"
@echo " make check Derleme kontrolü (ikili üretmez)"
@echo ""
@echo "$(BOLD)Çalıştırma:$(RESET)"
@echo " make run GUI başlat (release)"
@echo " make demo Demo modu — gerçek komutlar çalışmaz"
@echo " make demo-debug Demo modu — debug derlemesiyle"
@echo " make auto Otomatik kurulum (answer-example.toml)"
@echo " make auto-demo Otomatik kurulum demo modu"
@echo ""
@echo "$(BOLD)Kalite Kontrol:$(RESET)"
@echo " make fmt Kodu formatla"
@echo " make fmt-check Formatlama kontrolü (CI)"
@echo " make lint Clippy lint"
@echo " make test Testleri çalıştır"
@echo " make ci Tam CI: fmt-check + lint + test"
@echo ""
@echo "$(BOLD)Kurulum:$(RESET)"
@echo " make install Sisteme kur (DESTDIR destekler)"
@echo " make uninstall Sistemden kaldır"
@echo ""
@echo "$(BOLD)Paketleme:$(RESET)"
@echo " make dist Kaynak arşivi oluştur"
@echo " make version Sürüm bilgisini göster"
@echo ""
@echo "$(BOLD)Örnekler:$(RESET)"
@echo " make install DESTDIR=/tmp/pkg PREFIX=/usr"
@echo " make auto # answer-example.toml diskini kontrol edin!"
@echo ""