NAME := qemush # qemu Unix user QEMU_USER := qemu # sudo as qemu SUDO_QEMU := sudo -u $(QEMU_USER) QEMUSH := /usr/local/bin/$(NAME) SRC_QEMUSH := bin/$(NAME) SRCD := src # This repo's equivalent of effective qemu Unix user home SRC_QEMU_HOME := qemu SRC_QEMU_BIN := $(SRC_QEMU_HOME)/bin SRC_LAUNCHERSD := $(SRC_QEMU_HOME)/launchers # Actual qemu Unix user home QEMU_HOME := $(shell echo ~$(QEMU_USER)) QEMU_BIN := $(QEMU_HOME)/bin LAUNCHERSD := $(QEMU_HOME)/launchers # Names of all qemush modules SRC_MODULES_NAMES := $(notdir $(wildcard $(SRC_QEMU_BIN)/*)) # Target location of modules MODULES := $(addprefix $(QEMU_BIN)/,$(SRC_MODULES_NAMES)) # Names of launchers scripts SRC_LAUNCHERS_NAMES := $(notdir $(wildcard $(SRC_LAUNCHERSD)/*)) # Target location of launchers LAUNCHERS := $(addprefix $(LAUNCHERSD)/,$(SRC_LAUNCHERS_NAMES)) # Mode to apply BINS_MODE := 740 # Compiler options CC := cc CC_OPTIONS = -O3 # C sources file format SRC_FMT := .c # Names of C programs to compile SRC_C_SOURCES_NAMES := $(notdir $(basename $(wildcard $(SRCD)/*$(SRC_FMT)))) # Location of C binaries C_BINARIES := $(addprefix $(QEMU_BIN)/,$(SRC_C_SOURCES_NAMES)) # Directories in ~qemu necessary for qemush to work QEMUSH_DIRS_NAMES := bin launchers images QEMUSH_DIRS := $(addprefix $(QEMU_HOME)/,$(QEMUSH_DIRS_NAMES)) install: $(QEMUSH_DIRS) $(MODULES) $(C_BINARIES) $(QEMUSH) $(LAUNCHERS) $(QEMUSH_DIRS): $(SUDO_QEMU) mkdir -p $@ $(SUDO_QEMU) chmod 750 $@ $(QEMUSH): $(SRC_QEMUSH) sudo install -m 755 $^ $@ $(MODULES): $(QEMU_HOME)%: $(SRC_QEMU_HOME)% $(SUDO_QEMU) install -m $(BINS_MODE) $^ $@ $(C_BINARIES): $(QEMU_BIN)%: $(SRCD)%$(SRC_FMT) $(SUDO_QEMU) $(CC) $(CC_OPTIONS) -o $@ $^ $(SUDO_QEMU) chmod $(BINS_MODE) $@ $(LAUNCHERS): $(LAUNCHERSD)%: $(SRC_LAUNCHERSD)% $(SUDO_QEMU) install -m $(BINS_MODE) $^ $@