diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..31e93ab --- /dev/null +++ b/Makefile @@ -0,0 +1,45 @@ +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) + +# This repo's equivalent of effective qemu Unix user home +SRC_QEMU_HOME := qemu +SRC_QEMU_BIN := $(SRC_QEMU_HOME)/bin +# Actual qemu Unix user home +QEMU_HOME := $(shell echo ~$(QEMU_USER)) +QEMU_BIN := $(QEMU_HOME)/bin + +# Names of all qemush modules +SRC_MODULES_NAMES := $(notdir $(wildcard $(SRC_QEMU_BIN)/*)) +# Target location of modules +MODULES := $(addprefix $(QEMU_BIN)/,$(SRC_MODULES_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)) + +all: $(QEMUSH) $(MODULES) $(C_BINARIES) + +$(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) $(QEMU_USER) $(CC) $(CC_OPTIONS) -o $@ $^ + $(SUDO_QEMU) chmod $(BINS_MODE) $@