LX86E_SRCDIR=libx86emu
LX86E_BUILDDIR=$(BUILDROOT)/libx86emu
LX86E_DIRFILE=$(LX86E_BUILDDIR)/.directory
# for the tests
T_LX86E_SRCDIR=libx86emu
T_LX86E_BUILDDIR=$(TESTDIR)/libx86emu
T_LX86E_DIRFILE=$(T_LX86E_BUILDDIR)/.directory


DIRECTORIES += $(LX86E_BUILDDIR)
LX86E_LIBFILES += $(LX86E_BUILDDIR)/api.o
LX86E_LIBFILES += $(LX86E_BUILDDIR)/decode.o
LX86E_LIBFILES += $(LX86E_BUILDDIR)/mem.o
LX86E_LIBFILES += $(LX86E_BUILDDIR)/prim_ops.o
LX86E_LIBFILES += $(LX86E_BUILDDIR)/ops.o
LX86E_LIBFILES += $(LX86E_BUILDDIR)/ops2.o

LIBX86ETESTCC = -I ./include/common -I ./include/$(ARCH)-$(TYPE)


$(LX86E_DIRFILE): $(BUILDROOT)/.directory $(LX86E_SRCDIR)/Makefile
	@echo [mkdir] $(LX86E_BUILDDIR)
	@mkdir -p $(LX86E_BUILDDIR)
	@touch $(LX86E_DIRFILE)

$(LX86E_BUILDDIR)/libx86emu.a: $(LX86E_LIBFILES) $(TARGETDIR) $(LX86E_DIRFILE)
	@echo [$(AR)] $@
	@$(RM) $(LX86E_BUILDDIR)/libx86emu.a
	@$(AR) rcs $(LX86E_BUILDDIR)/libx86emu.a $(LX86E_LIBFILES)

$(LX86E_BUILDDIR)/libtest.o: $(LX86E_SRCDIR)/libtest.c $(LX86E_DIRFILE)
	@echo [$(CC)] $@
	@$(CC) $(CCPARMS) $(CFLAGS)  $< -o $@

$(LX86E_BUILDDIR)/libgfxtest.elf: $(LX86E_LIBFILES) $(TARGETDIR) $(LX86E_DIRFILE) $(LX86E_BUILDDIR)/libtest.o
	@echo [$(LD)] $@
	@$(LD) $(LDPARMS) $(LX86E_LIBFILES) $(LX86E_BUILDDIR)/libtest.o -lgl -lc -o $@

# Hosted build

T_LX86E_LIBFILES = $(subst $(LX86E_BUILDDIR),$(T_LX86E_BUILDDIR),$(LX86E_LIBFILES))

$(T_LX86E_BUILDDIR)/libx86emu.a: $(T_LX86E_LIBFILES) $(T_LX86E_DIRFILE)
	@echo [$(HOSTAR)] $@
	@$(RM) $(T_LX86E_BUILDDIR)/libx86emu.a
	@$(HOSTAR) rcs $(T_LX86E_BUILDDIR)/libx86emu.a $(T_LX86E_LIBFILES)

$(T_LX86E_DIRFILE): $(TESTDIRFILE) $(LX86E_SRCDIR)/Makefile
	@echo [mkdir] $(T_LX86E_BUILDDIR)
	@mkdir -p $(T_LX86E_BUILDDIR)
	@touch $(T_LX86E_DIRFILE)

$(LX86E_BUILDDIR)/%.o: $(LX86E_SRCDIR)/%.c $(LX86E_DIRFILE)
	@echo [$(CC)] $@
	@$(CC) $(CCPARMS) $(CFLAGS)  $< -o $@

