M_F_SRCDIR=$(M_SRCDIR)/fs
M_F_BUILDDIR=$(M_BUILDDIR)/fs
M_F_DIRFILE=$(M_F_BUILDDIR)/.directory

$(M_F_DIRFILE): $(M_BUILDDIR)/.directory $(M_F_SRCDIR)/Makefile
	@echo [mkdir] $(M_F_BUILDDIR)
	@mkdir -p $(M_F_BUILDDIR)
	@touch $@

include $(M_F_SRCDIR)/vdisk/Makefile

$(M_F_BUILDDIR)/%.o: $(M_F_SRCDIR)/%.asm $(M_F_DIRFILE)
	@echo [$(AS)] $@
	@$(AS) $(ASPARMS) $< -o $@

$(M_F_BUILDDIR)/%.o: $(M_F_SRCDIR)/%.c $(M_F_DIRFILE)
	@echo [$(CC)] $@
	@$(CC) $(CCPARMS) $(CFLAGS)  $< -o $@

$(M_F_BUILDDIR)/%.o: $(M_F_SRCDIR)/%.bas $(M_F_DIRFILE)
	@echo [$(FB)] $@
	@$(FB) $(FBPARMS) $< -o $@

$(M_F_BUILDDIR)/%.o: $(M_F_BUILDDIR)/%.bas $(M_F_DIRFILE)
	@echo [$(FB)] $@
	@$(FB) $(FBPARMS) $< -o $@

$(M_F_BUILDDIR)/%.ho: $(M_F_SRCDIR)/%.c $(M_F_DIRFILE)
	@echo [$(HOSTCC)] $@
	@$(HOSTCC) $(HOSTCCCPARMS) $< -o $@

$(M_F_BUILDDIR)/%.asm: $(M_F_SRCDIR)/%.txt $(M_F_DIRFILE) $(BUILDROOT)/libudi/udigen
	@echo [udigen] $@
	@$(BUILDROOT)/libudi/udigen udiasm $(ARCH) $< $@

$(M_F_BUILDDIR)/fsdriver.bas: $(I_BUILDDIR)/fsdriver.bi $(M_F_SRCDIR)/fs.idl $(M_F_DIRFILE) $(BUILDROOT)/modules/libos/idlgen
	@echo [idlgen-bas] $@
	@$(BUILDROOT)/modules/libos/idlgen bas $(M_F_SRCDIR)/fs.idl $@

$(I_BUILDDIR)/fsdriver.bi: $(M_F_SRCDIR)/fs.idl $(M_F_DIRFILE) $(BUILDROOT)/modules/libos/idlgen
	@echo [idlgen-bi] $@
	@$(BUILDROOT)/modules/libos/idlgen bi $(M_F_SRCDIR)/fs.idl $@

#idl rules
$(M_F_BUILDDIR)/%_r.c: $(M_F_SRCDIR)/%.idl $(I_BUILDDIR)/%.h $(M_F_DIRFILE) $(BUILDROOT)/modules/libos/idlgen
	@echo [idlgen-udirx] $@
	@$(BUILDROOT)/modules/libos/idlgen udirx $< $@

$(M_F_BUILDDIR)/%_t.c: $(M_F_SRCDIR)/%.idl $(I_BUILDDIR)/%.h $(M_F_DIRFILE) $(BUILDROOT)/modules/libos/idlgen
	@echo [idlgen-uditx] $@
	@$(BUILDROOT)/modules/libos/idlgen uditx $< $@

$(I_BUILDDIR)/%.h: $(M_F_SRCDIR)/%.idl $(M_F_DIRFILE) $(BUILDROOT)/modules/libos/idlgen
	@echo [idlgen-udih] $@
	@$(BUILDROOT)/modules/libos/idlgen udih $< $@
	
$(I_BUILDDIR)/%_gen.h: $(M_F_SRCDIR)/%.idl $(M_F_DIRFILE) $(BUILDROOT)/modules/libos/idlgen
	@echo [idlgen-udih] $@
	@$(BUILDROOT)/modules/libos/idlgen udidef $< $@

$(M_F_BUILDDIR)/%_r.o: $(M_F_BUILDDIR)/%_r.c $(I_BUILDDIR)/%.h $(I_BUILDDIR)/%_gen.h $(M_F_DIRFILE) $(UDI_GEN_SYMBOLS)
	@echo [$(CC)] $@
	@$(CC) $(CCPARMS) $(IDLUDIFLAGS) $(CFLAGS) $< -o $@

$(M_F_BUILDDIR)/%_t.o: $(M_F_BUILDDIR)/%_t.c $(I_BUILDDIR)/%.h $(I_BUILDDIR)/%_gen.h $(M_F_DIRFILE) $(UDI_GEN_SYMBOLS)
	@echo [$(CC)] $@
	@$(CC) $(CCPARMS) $(IDLUDIFLAGS) $(CFLAGS) $< -o $@

$(M_F_BUILDDIR)/%_r.ho: $(M_F_BUILDDIR)/%_r.c $(I_BUILDDIR)/%.h $(I_BUILDDIR)/%_gen.h $(M_F_DIRFILE) $(UDI_GEN_SYMBOLS)        
	@echo [$(HOSTCC)] $@
	@$(HOSTCC) $(HOSTCCCPARMS) -I $(BUILDROOT)/include $(IDLUDIFLAGS) $< -o $@

$(M_F_BUILDDIR)/%_t.ho: $(M_F_BUILDDIR)/%_t.c $(I_BUILDDIR)/%.h $(I_BUILDDIR)/%_gen.h $(M_F_DIRFILE) $(UDI_GEN_SYMBOLS)
	@echo $(UDI_GEN_SYMBOLS)
	@echo [$(HOSTCC)] $@
	@$(HOSTCC) $(HOSTCCCPARMS) -I $(BUILDROOT)/include $(IDLUDIFLAGS) $< -o $@



$(M_F_BUILDDIR)/fat.o $(M_F_BUILDDIR)/fatmain.o: $(M_F_SRCDIR)/fat.bi
$(M_F_SRCDIR)/fat.bi: include/common/mos/channel.bi $(I_BUILDDIR)/fsdriver.bi $(I_BUILDDIR)/blockdriver.bi
