#
# Xlanguage Compiler Makefile
#
include config.mak
PROLOGSRCS=opt.pl optimize.pl analyze.pl c_print.pl
PL=pl
PLCFLAGS+=-D_REENTRANT -D__SWI_PROLOG__ -D__SWI_EMBEDDED__
LDFLAGS+=${PLLDFLAGS}

CC=gcc
CFLAGS+=-g
LIBS=-ldl ${PLLIBS}

CFLAGS+=-mpreferred-stack-boundary=8
DISAS=objdump -d
INSTALL=install

PROGS=xc

# run local version of tcc with local libraries and includes
XC=./xc

all: $(PROGS)

Makefile: config.mak

.plstate: ${PROLOGSRCS}
	${PL} --stand_alone=true -f none -F none -g true -o $@ -c $^

xlang.o: xlang.c
	$(CC) $(PLCFLAGS) $(CFLAGS) -c $<

xc: tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h xlang.o xlang.h .plstate
	$(CC) $(LDFLAGS) -o $@ $< xlang.o $(LIBS)
	cat .plstate >> $@

%.o: %.c
	$(CC) -O2 -c -o $@ $<

install: xc_install

xc_install: $(PROGS) 
	mkdir -p "$(bindir)"
	$(INSTALL) -m755 $(PROGS) "$(bindir)"
	mkdir -p "$(tccdir)"
	mkdir -p "$(tccdir)/include"
	$(INSTALL) -m644 stdarg.h stddef.h stdbool.h float.h varargs.h \
                   tcclib.h "$(tccdir)/include"

clean:
	rm -f *~ *.o *.a xc .plstate

distclean: clean
	rm -f config.h config.mak

tcc.o: config.h xlang.h
