milestone: desktop path Phases 1-5
Phase 1 (Runtime Substrate): 4 check binaries, --probe, POSIX tests Phase 2 (Wayland Compositor): bounded scaffold, zero warnings Phase 3 (KWin Session): preflight checker (KWin stub, gated on Qt6Quick) Phase 4 (KDE Plasma): 18 KF6 enabled, preflight checker Phase 5 (Hardware GPU): DRM/firmware/Mesa preflight checker Build: zero warnings, all scripts syntax-clean. Oracle-verified.
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
TARGET ?= x86_64-unknown-redox
|
||||
LINKER ?= $(shell redoxer env which $(shell redoxer env printenv LD))
|
||||
BOARD ?=
|
||||
BUILD_TYPE ?= release
|
||||
BUILD_FLAGS ?= --release
|
||||
CARGO ?= redoxer
|
||||
CARGO_HOST ?= env -u CARGO -u RUSTFLAGS cargo
|
||||
|
||||
SRC_DIR ?= $(CURDIR)
|
||||
BUILD_DIR ?= $(shell pwd)/target/$(TARGET)/build
|
||||
DESTDIR ?= ./sysroot
|
||||
SYSROOT ?= $(shell pwd)/target/$(TARGET)/sysroot
|
||||
TARGET_DIR = $(BUILD_DIR)/$(TARGET)/$(BUILD_TYPE)
|
||||
BUILD_FLAGS += --target-dir $(BUILD_DIR)
|
||||
|
||||
INITFS_BINS = init logd ramfs randd zerod \
|
||||
acpid fbbootlogd fbcond hwd inputd lived \
|
||||
pcid pcid-spawner rtcd vesad
|
||||
INITFS_DRIVERS_BINS = nvmed virtio-blkd virtio-gpud
|
||||
BASE_BINS = inputd pcid pcid-spawner redoxerd audiod dhcpd ipcd ptyd netstack
|
||||
DRIVERS_BINS = e1000d ihdad ihdgd ixgbed rtl8139d rtl8168d \
|
||||
usbctl usbhidd usbhubd usbscsid virtio-netd xhcid
|
||||
|
||||
ifneq (,$(filter i586-unknown-redox i686-unknown-redox x86_64-unknown-redox,$(TARGET)))
|
||||
INITFS_BINS += ps2d
|
||||
INITFS_DRIVERS_BINS += ahcid ided
|
||||
DRIVERS_BINS += ac97d sb16d vboxd
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET),aarch64-unknown-redox)
|
||||
ifeq ($(BOARD),raspi3b)
|
||||
INITFS_BINS += bcm2835-sdhcid
|
||||
endif
|
||||
endif
|
||||
|
||||
INITFS_CARGO_ARGS = $(foreach bin,$(INITFS_BINS),-p $(bin))
|
||||
INITFS_DRIVERS_CARGO_ARGS = $(foreach bin,$(INITFS_DRIVERS_BINS),-p $(bin))
|
||||
BASE_CARGO_ARGS = $(foreach bin,$(BASE_BINS),-p $(bin))
|
||||
DRIVERS_CARGO_ARGS = $(foreach bin,$(DRIVERS_BINS),-p $(bin))
|
||||
|
||||
.PHONY: all base install install-base test
|
||||
|
||||
all: base
|
||||
install: install-base
|
||||
|
||||
clean:
|
||||
rm -rf $(SRC_DIR)/target $(SRC_DIR)/sysroot $(SYSROOT) $(TARGET_DIR)
|
||||
|
||||
# test if booting
|
||||
test: all
|
||||
$(MAKE) install
|
||||
redoxer exec --folder ./sysroot/:/ true
|
||||
|
||||
# test with interactive gui
|
||||
test-gui: all
|
||||
$(MAKE) install
|
||||
redoxer exec --gui --folder ./sysroot/:/ ion
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# base
|
||||
# -----------------------------------------------------------------------------
|
||||
$(SYSROOT)/bin/redoxfs:
|
||||
REDOXER_SYSROOT=$(SYSROOT) redoxer pkg redoxfs
|
||||
|
||||
base:
|
||||
@mkdir -pv "$(BUILD_DIR)"
|
||||
# Build daemons and drivers
|
||||
CARGO_PROFILE_RELEASE_OPT_LEVEL=s CARGO_PROFILE_RELEASE_PANIC=abort \
|
||||
$(CARGO) build $(BUILD_FLAGS) \
|
||||
--manifest-path "$(SRC_DIR)/Cargo.toml" \
|
||||
$(BASE_CARGO_ARGS) $(DRIVERS_CARGO_ARGS)
|
||||
# Build initfs daemons and drivers
|
||||
# FIXME fix whatever issue (feature unification?) causes most logs to be omitted
|
||||
# if this is merged with the above build command.
|
||||
CARGO_PROFILE_RELEASE_OPT_LEVEL=s CARGO_PROFILE_RELEASE_PANIC=abort \
|
||||
$(CARGO) build $(BUILD_FLAGS) \
|
||||
--manifest-path "$(SRC_DIR)/Cargo.toml" \
|
||||
$(INITFS_CARGO_ARGS) $(INITFS_DRIVERS_CARGO_ARGS)
|
||||
# Build bootstrap
|
||||
cd "$(SRC_DIR)/bootstrap" && $(CARGO) rustc $(BUILD_FLAGS) \
|
||||
-- -Ctarget-feature=+crt-static -Clinker="$(LINKER)"
|
||||
|
||||
install-base: base $(SYSROOT)/bin/redoxfs
|
||||
@mkdir -pv "$(DESTDIR)/usr/bin" "$(DESTDIR)/usr/lib/drivers"
|
||||
# Distribute binaries
|
||||
@for bin in $(BASE_BINS); do \
|
||||
cp -v "$(TARGET_DIR)/$$bin" "$(DESTDIR)/usr/bin"; \
|
||||
done
|
||||
@for bin in $(DRIVERS_BINS); do \
|
||||
cp -v "$(TARGET_DIR)/$$bin" "$(DESTDIR)/usr/lib/drivers"; \
|
||||
done
|
||||
# Copy configurations
|
||||
@mkdir -pv "$(DESTDIR)/usr/lib/init.d/" "$(DESTDIR)/usr/lib/pcid.d/" "$(DESTDIR)/usr/lib/xhcid.d/"
|
||||
@cp -v "$(SRC_DIR)/init.d"/* "$(DESTDIR)/usr/lib/init.d/"
|
||||
@find "$(SRC_DIR)/drivers" -maxdepth 3 -type f -name 'config.toml' | while read -r conf; do \
|
||||
driver=$$(basename "$$(dirname "$$conf")"); \
|
||||
cp -v "$$conf" "$(DESTDIR)/usr/lib/pcid.d/$$driver.toml"; \
|
||||
done
|
||||
@cp -v "$(SRC_DIR)/drivers/usb/xhcid/drivers.toml" "$(DESTDIR)/usr/lib/xhcid.d/"
|
||||
|
||||
rm -rf "$(BUILD_DIR)/initfs"
|
||||
# Distribute initfs binaries
|
||||
@mkdir -pv "$(BUILD_DIR)/initfs/bin" "$(BUILD_DIR)/initfs/lib/drivers"
|
||||
for bin in $(INITFS_BINS); do \
|
||||
cp -v "$(TARGET_DIR)/$$bin" "$(BUILD_DIR)/initfs/bin"; \
|
||||
done
|
||||
for bin in $(INITFS_DRIVERS_BINS); do \
|
||||
cp -v "$(TARGET_DIR)/$$bin" "$(BUILD_DIR)/initfs/lib/drivers"; \
|
||||
done
|
||||
cp "$(SYSROOT)/bin/redoxfs" "$(BUILD_DIR)/initfs/bin"
|
||||
# Copy initfs config files
|
||||
@mkdir -p "$(BUILD_DIR)/initfs/lib/init.d" "$(BUILD_DIR)/initfs/lib/pcid.d"
|
||||
cp "$(SRC_DIR)/init.initfs.d"/* "$(BUILD_DIR)/initfs/lib/init.d/"
|
||||
cp "$(SRC_DIR)/drivers/initfs.toml" "$(BUILD_DIR)/initfs/lib/pcid.d/initfs.toml"
|
||||
# Build initfs
|
||||
$(CARGO_HOST) run --manifest-path "$(SRC_DIR)/initfs/tools/Cargo.toml" --bin redox-initfs-ar -- \
|
||||
"$(BUILD_DIR)/initfs" "$(TARGET_DIR)/bootstrap" -o "$(BUILD_DIR)/initfs.img"
|
||||
# Distribute initfs
|
||||
@mkdir -pv "$(DESTDIR)/usr/lib/boot"
|
||||
cp -v "$(BUILD_DIR)/initfs.img" "$(DESTDIR)/usr/lib/boot/initfs"
|
||||
|
||||
# Device file symlinks
|
||||
@mkdir -pv "$(DESTDIR)/dev"
|
||||
ln -s /scheme/null $(DESTDIR)/dev/null
|
||||
ln -s /scheme/rand $(DESTDIR)/dev/random
|
||||
ln -s /scheme/rand $(DESTDIR)/dev/urandom
|
||||
ln -s /scheme/zero $(DESTDIR)/dev/zero
|
||||
ln -s libc:tty $(DESTDIR)/dev/tty
|
||||
ln -s libc:stdin $(DESTDIR)/dev/stdin
|
||||
ln -s libc:stdout $(DESTDIR)/dev/stdout
|
||||
ln -s libc:stderr $(DESTDIR)/dev/stderr
|
||||
Reference in New Issue
Block a user