X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Tools%2FDiskTool%2Fsrc%2FMakefile;h=b2325672faab26a668ac9a1f9ebd219ccfc8989c;hb=7378996995784940b371210bf7167628551a3486;hp=150cdbae5cf93bd1485818d4d5a089544dc95fe3;hpb=3f76cec1a9c81a0ac06f0c64aa34ea7f3de9558a;p=tpg%2Facess2.git diff --git a/Tools/DiskTool/src/Makefile b/Tools/DiskTool/src/Makefile index 150cdbae..b2325672 100644 --- a/Tools/DiskTool/src/Makefile +++ b/Tools/DiskTool/src/Makefile @@ -1,32 +1,55 @@ TARGET := $(shell gcc -v 2>&1 | grep Targ | awk '{print $$2}') +include ../../../Makefile.Version.cfg +-include Makefile.BuildNum +ifeq ($(BUILD_NUM),) +BUILD_NUM = 1 +endif + + KERNEL_SRC = ../../../KernelLand/Kernel/ +MODULE_SRC = ../../../KernelLand/Modules/ BIN = ../DiskTool # Kernel Sources (compiled with -ffreestanding) -K_OBJ = vfs/main.o vfs/open.o vfs/acls.o vfs/io.o vfs/dir.o -K_OBJ += vfs/nodecache.o vfs/mount.o vfs/memfile.o vfs/select.o +K_OBJ := lib.o +K_OBJ += vfs/main.o vfs/open.o vfs/acls.o vfs/io.o vfs/dir.o +K_OBJ += vfs/nodecache.o vfs/mount.o vfs/memfile.o # vfs/select.o K_OBJ += vfs/fs/root.o vfs/fs/devfs.o -K_OBJ += drv/proc.o +K_OBJ += drvutil_disk.o drv/proc.o +# Modules +MODULES := Storage/LVM Filesystems/FAT Filesystems/Ext2 # Local kernel soruces (same as above, but located in same directory as Makefile) -L_OBJ = vfs_handles.o threads.o nativefs.o +L_OBJ = vfs_handles.o threads.o nativefs.o time.o actions.o # Native Sources (compiled as usual) -N_OBJ = main.o script.o logging.o +N_OBJ = main.o script.o logging.o helpers.o # Compilation Options -CFLAGS := -Wall +CFLAGS := -Wall -std=gnu99 -g -Werror CPPFLAGS := -I include/ -K_CPPFLAGS := -I $(KERNEL_SRC)include +K_CPPFLAGS := -I $(KERNEL_SRC)include -I $(MODULE_SRC) +LDFLAGS += -Wl,--defsym,__buildnum=$(BUILD_NUM) -g + +BUILDINFO_OBJ := obj/$(TARGET)/buildinfo.o +BUILDINFO_SRC := $(BUILDINFO_OBJ:%.o=%.c) +# ==================== # == Start of Magic == +# ==================== +# -- Load modules --- +$(foreach module,$(MODULES), $(eval include $(MODULE_SRC)$(module)/Makefile) $(eval M_OBJ += $(addprefix $(module)/,$(OBJ))) ) + +# -- Apply Prefixes to object paths OBJ_PREFIX = obj/$(TARGET)/ K_OBJ_PREFIX = $(OBJ_PREFIX)_Kernel/ +M_OBJ_PREFIX = $(OBJ_PREFIX)_Module/ K_OBJ := $(addprefix $(K_OBJ_PREFIX),$(K_OBJ)) +M_OBJ := $(addprefix $(M_OBJ_PREFIX),$(M_OBJ)) L_OBJ := $(addprefix $(OBJ_PREFIX),$(L_OBJ)) N_OBJ := $(addprefix $(OBJ_PREFIX),$(N_OBJ)) -OBJ := $(N_OBJ) $(L_OBJ) $(K_OBJ) +OBJ := $(N_OBJ) $(L_OBJ) $(K_OBJ) $(M_OBJ) $(BUILDINFO_OBJ) DEPFILES = $(filter %.o,$(OBJ)) DEPFILES := $(DEPFILES:%=%.dep) @@ -40,18 +63,40 @@ clean: $(RM) -f $(OBJ) $(DEPFILES) $(BIN) $(BIN): $(OBJ) - $(CC) -o $(BIN) $(OBJ) $(LDFLAGS) + @echo [CC Link] -o $(BIN) + @$(CC) -o $(BIN) $(OBJ) $(LDFLAGS) + @echo BUILD_NUM = $$(( $(BUILD_NUM) + 1 )) > Makefile.BuildNum + +$(M_OBJ): $(M_OBJ_PREFIX)%.o: $(MODULE_SRC)%.c + @mkdir -p $(dir $@) + @echo [CC Module] -o $@ + @$(CC) -c $< -o $@ -ffreestanding $(CFLAGS) $(CPPFLAGS) $(K_CPPFLAGS) -MMD -MP -MF $@.dep $(K_OBJ): $(K_OBJ_PREFIX)%.o: $(KERNEL_SRC)%.c @mkdir -p $(dir $@) - $(CC) -c $< -o $@ -ffreestanding $(CFLAGS) $(CPPFLAGS) $(K_CPPFLAGS) -MMD -MP -MF $@.dep + @echo [CC Kernel] -o $@ + @$(CC) -c $< -o $@ -ffreestanding $(CFLAGS) $(CPPFLAGS) $(K_CPPFLAGS) -MMD -MP -MF $@.dep $(L_OBJ): $(OBJ_PREFIX)%.o: %.c @mkdir -p $(dir $@) - $(CC) -c $< -o $@ -ffreestanding $(CFLAGS) $(CPPFLAGS) $(K_CPPFLAGS) -MMD -MP -MF $@.dep + @echo [CC Local] -o $@ + @$(CC) -c $< -o $@ -ffreestanding $(CFLAGS) $(CPPFLAGS) $(K_CPPFLAGS) -MMD -MP -MF $@.dep $(N_OBJ): $(OBJ_PREFIX)%.o: %.c @mkdir -p $(dir $@) - $(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS) -MMD -MP -MF $@.dep + @echo [CC Native] -o $@ + @$(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS) -MMD -MP -MF $@.dep + +# Hacky buildinfo.c file +$(BUILDINFO_SRC): $(filter-out $(BUILDINFO_OBJ), $(OBJ)) Makefile + @echo "" > $@ + @echo "const char gsKernelVersion[] = \"$(ACESS_VERSION)\";" >> $@ + @echo "const char gsGitHash[] = \""`git log -n 1 | head -n 1 | awk '{print $$2}'`"\";" >> $@ + @echo "const int giBuildNumber = $(BUILD_NUM);" >> $@ +$(BUILDINFO_OBJ): $(BUILDINFO_SRC) + @echo [CC] -o $@ + @$(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) + +$(OBJ): Makefile -include $(DEPFILES)