LGFX_A_SRCDIR=$(LGFX_SRCDIR)/ast
LGFX_A_BUILDDIR=$(LGFX_BUILDDIR)/ast
LGFX_A_DIRFILE=$(LGFX_A_BUILDDIR)/.directory

$(LGFX_A_DIRFILE): $(LGFX_DIRFILE) $(LGFX_A_SRCDIR)/Makefile $(LGFX_DIRFILE)
	@echo [mkdir] $(LGFX_A_BUILDDIR)
	@mkdir -p $(LGFX_A_BUILDDIR)
	@touch $@

LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/buildtree.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/clonetree.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/copyframebuffer.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/copylinearoffset.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/deletemap.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/fold_bb.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/fold_ca.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/freebit.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/freenode.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/printnode.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/retrievemap.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/substfb.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/substoffset.o
LGFX_LIBFILES += $(LGFX_A_BUILDDIR)/unfold_mad.o

#Build rules
$(LGFX_A_BUILDDIR)/%.o: $(LGFX_A_SRCDIR)/%.asm $(LGFX_A_DIRFILE)
	@echo [$(AS)] $@
	@$(AS) $(ASPARMS) $< -o $@

$(LGFX_A_BUILDDIR)/%.o: $(LGFX_A_SRCDIR)/%.c $(LGFX_A_DIRFILE)
	@echo [$(CC)] $@
	@$(CC) $(CCPARMS) $(LGFX_INCLUDE) $(CFLAGS)  $< -o $@

$(LGFX_A_BUILDDIR)/%.o: $(LGFX_A_SRCDIR)/%.bas $(LGFX_A_DIRFILE)
	@echo [$(FB)] $@
	@$(FB) $(FBPARMS) $< -o $@


#Test builds
T_LGFX_A_SRCDIR=$(T_LGFX_SRCDIR)/ast
T_LGFX_A_BUILDDIR=$(T_LGFX_BUILDDIR)/ast
T_LGFX_A_DIRFILE=$(T_LGFX_A_BUILDDIR)/.directory

$(T_LGFX_A_DIRFILE): $(T_LGFX_DIRFILE) $(T_LGFX_A_SRCDIR)/Makefile $(T_LGFX_DIRFILE)
	@echo -e '.\c'
	@mkdir -p $(T_LGFX_A_BUILDDIR)
	@touch $@

$(T_LGFX_A_BUILDDIR)/%.o: $(T_LGFX_A_SRCDIR)/%.c $(T_LGFX_A_DIRFILE)
	@$(HOSTCC) $(HOSTCCPARMS) $(LIBGFXTESTCC) -c $(LGFX_INCLUDE) $(CFLAGS) $< -o $@

$(T_LGFX_A_BUILDDIR)/%.o: $(T_LGFX_A_SRCDIR)/%.bas $(T_LGFX_A_DIRFILE)
	@$(HOSTFB) $(HOSTFBPARMS) $< -o $@
