LIBPATH = ../../lib
BINPATH = ../../../bin
SRCPATH = ../../../lib
YABPATH = $(wildcard ../../../../yabasic-*)
YABASIC =  $(patsubst ../../../../%, %, $(YABPATH))

JABSRC = flex.c bison.c jabmain.c jab.h japi4bas.c

ALL : lib yabsrc japi_p.h libjapi.a $(JABSRC) copy yabasic examples

lib :
	make -C $(LIBPATH)
yabsrc :
	cp -r $(YABPATH) .

	
# Flex und Bison
jab.flex: $(BINPATH)/patchjabflex $(YABPATH)/yabasic.flex
	ln $(YABPATH)/yabasic.flex . ;\
	ln $(SRCPATH)/japilib.c . ;\
	$(BINPATH)/patchjabflex > jab.flex ;\
	rm japilib.c
jab.bison: $(BINPATH)/patchjabbison $(YABPATH)/yabasic.bison
	ln $(YABPATH)/yabasic.bison . ;\
	ln $(SRCPATH)/japilib.c . ;\
	$(BINPATH)/patchjabbison > jab.bison ;\
	rm japilib.c
	 

# Sources
japi_p.h : $(LIBPATH)/japi_p.h
	cp $(LIBPATH)/japi_p.h .
libjapi.a : $(LIBPATH)/libjapi.a
	cp $(LIBPATH)/libjapi.a .
japi4bas.c :  $(BINPATH)/makejapi4bas $(SRCPATH)/japilib.c  $(SRCPATH)/japiconst.def
	ln $(SRCPATH)/japiconst.def . ;\
	ln $(SRCPATH)/japilib.c . ;\
	$(BINPATH)/makejapi4bas > japi4bas.c ;\
	rm japilib.c japiconst.def	
flex.c: jab.flex 
	flex  -i -I -L -s -t jab.flex > flex.c
bison.c: jab.bison 
	bison -d -l -t -v --output-file bison.c jab.bison
jabmain.c:  $(BINPATH)/patchjabmain $(YABPATH)/main.c $(SRCPATH)/japilib.c $(SRCPATH)/japiconst.def
	ln $(SRCPATH)/japiconst.def . ;\
	ln $(SRCPATH)/japilib.c . ;\
	ln $(YABPATH)/main.c . ;\
	$(BINPATH)/patchjabmain > jabmain.c ;\
	rm japilib.c japiconst.def
jab.h:  $(BINPATH)/patchjabheader $(YABPATH)/yabasic.h $(SRCPATH)/japilib.c
	ln $(YABPATH)/yabasic.h . ;\
	ln $(SRCPATH)/japilib.c . ;\
	$(BINPATH)/patchjabheader > jab.h ;\
	rm japilib.c
	

copy : 
	rm yabasic.h main.c yabasic.flex yabasic.bison;\
	mv jab.flex yabasic.flex ;\
	mv jab.bison yabasic.bison ;\
	mv jabmain.c main.c ;\
	mv jab.h yabasic.h ;\
	mv -f *.flex $(YABASIC) ;\
	mv -f *.bison $(YABASIC) ;\
	mv -f *.c $(YABASIC) ;\
	mv -f *.h $(YABASIC) ;\
	mv -f *.a $(YABASIC) ;\
	cp -f Makefile.in $(YABASIC)
	
examples :
	ln -s ../../../basic/* . ;\
	ln -s ../../../../images . ;\
	makeyabexamples
	
yabasic :
	cd $(YABASIC) && ./configure && make && cd .. ;\
	cp $(YABASIC)/yabasic . ;\
	strip yabasic ;\
	make -C $(YABASIC) clean 

# cleanman
clean :
	rm -rf 1 JAPI.jar *.output yabasic *.c *.h *.a *.def \
	 *.bison *.flex *.bas $(YABASIC) images
