GNAT_DIR= /usr/gnat
GNAT_LIB_DIR= $(GNAT_DIR)/lib
LIBSTDCPP= $(GNAT_LIB_DIR)/libstdc++.a

XMLADA_LFLAGS= `xmlada-config --libs`
YAMI4_LFLAGS= lib/libyamiada.a lib/libyamicore.a $(LIBSTDCPP)

# Default target
all: simulator spectator-gui simulator-gui manager-gui

# YAMI TARGETS
yami: yami4/lib/libyamicore.a yami4/lib/libyamiada.a yami4/lib/yami4.jar
yami4/lib/libyamiada.a: yami4/lib/libyamicore.a yami4/src/ada
	mkdir -p yami4/src/ada/obj
	cd yami4/src/ada; ln -sf $(LIBSTDCPP)
	cd yami4/src/ada; gnatmake -Pyami
yami4/lib/yami4.jar: lib yami4/src/java
	cd yami4/src/java; ant
yami4/lib/libyamicore.a: lib yami4/src/core
	mkdir -p obj/core
	cd yami4/src/core; make
lib:
	mkdir -p yami4/lib;	ln -sf yami4/lib

# SIMULATOR TARGETS
simulator:  billboard_out simulator_core billboard_in
billboard_out: yami4/lib/libyamiada.a billboard_output
	mkdir -p obj/billboard_output
	po_gnatdist config/ada_way billboard_out -Pbillboard_output.gpr \
	-largs $(YAMI4_LFLAGS)
simulator_core: yami4/lib/libyamiada.a core
	mkdir -p obj/core
	po_gnatdist config/ada_way.cfg simulator_core -Pcore.gpr \
	-largs $(YAMI4_LFLAGS) $(YAMI4_LFLAGS)
billboard_in: yami4/lib/libyamiada.a billboard_input
	mkdir -p obj/billboard_input
	po_gnatdist config/ada_way billboard_in -Pbillboard_input.gpr -p -gnat05 \
	-largs $(YAMI4_LFLAGS)

# GUI TARGETS
spectator-gui: yami4/lib/yami4.jar gui/spectator_gui
	cd gui; ant compile-spectator
simulator-gui: yami4/lib/yami4.jar gui/simulator_gui
	cd gui; ant compile-simulator
manager-gui: yami4/lib/yami4.jar gui/manager_gui
	cd gui; ant compile-manager

#START TARGETS
config/IOR.txt:
	@echo "\nSTARTING NAMESERVER..."
	./scripts/start-nameserver.sh & 
start-name_server: config/IOR.txt
start-billboard_out: billboard_out config/IOR.txt
	@sleep 2; echo "\nSTARTING BILLBOARD_OUTPUT..."
	./scripts/start-billboard_output.sh
start-core: simulator_core
	@echo "\nSTARTING SIMULATOR CORE..."
	clear; ./scripts/start-core.sh
start-billboard_in: billboard_in
	@sleep 2; echo "\nSTARTING BILLBOARD_INPUT..."
	./scripts/start-billboard_input.sh
start-simulator:
	@ mkdir -p log;
	@ echo "\nSTARTING SIMULATOR..."
	@ ./scripts/start-nameserver.sh > ./log/nameserver.log 2>&1 &
	@ sleep 2; ./scripts/start-billboard_output.sh > ./log/billboard_out.log & 2>&1 &
	@ sleep 2; ./scripts/start-core.sh > ./log/core.log & 2>&1 &
	@ sleep 2; ./scripts/start-billboard_input.sh > ./log/billboard_in.log & 2>&1 &
	@ top;
start-spectator-gui: spectator-gui
	@echo "\nSTARTING SPECTATOR GUI..."
	cd gui; ant run-spectator
start-simulator-gui: simulator-gui
	@echo "\nSTARTING SIMULATOR GUI..."
	cd gui; ant run-simulator
start-manager-gui: manager-gui
	@echo "\nSTARTING MANAGER GUI..."
	cd gui; ant run-manager

start-all: simulator spectator-gui simulator-gui manager-gui
	@echo "\nSTARTING ALL..."
	./scripts/start-all.sh

stop-name_server:
	./scripts/stop-nameserver.sh

stop-billboard_input:
	./scripts/stop-billboard_input.sh

stop-billboard_output:
	./scripts/stop-billboard_output.sh

stop-all:  
	@echo "\nSTOPPING ALL..."
	./scripts/stop-all.sh


clean:	
	gnatclean -Pcore
	gnatclean -Pbillboard_output
	gnatclean -Pbillboard_input
	cd gui; ant clean
	rm -f simulator_core billboard_in billboard_out
	#rm -f IOR.txt
	
# distclean also removes yami binaries and dsa folder
distclean: clean
	cd yami4/src/ada; gnatclean -Pyami
	cd yami4/src/java; ant clean
	cd yami4/src/core; make clean
	rm -rf ./dsa
	rm -rf yami4/lib
	rm -f lib
	cd yami4/src/ada; rm -f libstdc++.a


	

