O?=build STAGE=$(O)/stage KERNEL_HDRS?=kernel-hdr CC=x86_64-elf-yggdrasil-gcc DIRS=$(O) \ $(STAGE) \ $(O)/sh \ $(O)/ase HDRS=$(shell find $(S) -type f -name "*.h") STAGE_BIN=$(STAGE)/init \ $(STAGE)/bin/hexd \ $(STAGE)/bin/date \ $(STAGE)/bin/uname \ $(STAGE)/bin/mount \ $(STAGE)/bin/umount \ $(STAGE)/bin/login \ $(STAGE)/bin/sh \ $(STAGE)/bin/ls \ $(STAGE)/bin/rm \ $(STAGE)/bin/reboot \ $(STAGE)/bin/mkdir # $(STAGE)/bin/com \ # $(STAGE)/bin/ase \ # $(STAGE)/bin/su \ sh_OBJS=$(O)/sh/sh.o \ $(O)/sh/readline.o \ $(O)/sh/builtin.o \ $(O)/sh/cmd.o ase_OBJS=$(O)/ase/ase.o usr_CFLAGS=-ggdb \ -msse \ -msse2 \ -O2 \ -Wall \ -Werror \ -ffreestanding usr_LDFLAGS=-lgcc \ -static all: mkdirs $(O)/initrd.img clean: rm -rf $(O) #chmod 04711 $(STAGE)/bin/su $(O)/initrd.img: mkstage-etc $(STAGE_BIN) cd $(STAGE) && tar czf $(abspath $@) * mkdirs: mkdir -p $(DIRS) mkstage-etc: mkdir -p $(STAGE)/dev $(STAGE)/mnt $(STAGE)/bin cp -r etc $(STAGE) # Application building $(STAGE)/init: init.c @printf " CC\t%s\n" $(@:$(STAGE)/%=/%) $(CC) -o $@ $(usr_CFLAGS) $(usr_LDFLAGS) init.c $(STAGE)/bin/%: core/bin/%.c $(CC) -o $@ $(usr_CFLAGS) $(usr_LDFLAGS) $< $(STAGE)/bin/sh: $(sh_OBJS) $(CC) -o $@ $(usr_LDFLAGS) $(sh_OBJS) $(STAGE)/bin/ase: $(ase_OBJS) $(CC) -o $@ $(usr_LDFLAGS) $(ase_OBJS) $(O)/sh/%.o: sh/%.c $(shell find sh -name "*.h") $(CC) -c -o $@ $(usr_CFLAGS) $< $(O)/ase/%.o: ase/%.c $(shell find ase -name "*.h") $(CC) -c -o $@ $(usr_CFLAGS) $<