EC="$(ISE_EIFFEL)/studio/spec/$(ISE_PLATFORM)/bin/ec"
EWEASEL=..$(DIRSEP)..$(DIRSEP)..$(DIRSEP)eweasel
TOP=..

ELAPSED_TIME_DIR=$(TOP)/../tool/elapsed_time
ELAPSED_TIME=$(ELAPSED_TIME_DIR)/EIFGENs/elapsed_time/F_code/elapsed_time$(EXE)
MEASURE="$(ELAPSED_TIME)" -nologo -skip_first 1 -f c

benchmark benchmark_1::
	$(DO_MAKE) action.echo "MESSAGE=Name,Processors,Count,Minimum (ms),Maximum (ms),Average (ms),Standard deviation (ms),Command,Directory,Skip first count,Skip maximum count"

benchmark benchmark_1 build clean::
	$(DO_MAKE) ACTION=$@ chain
	$(DO_MAKE) ACTION=$@ chameneos
	$(DO_MAKE) ACTION=$@ condition
	$(DO_MAKE) ACTION=$@ mutex
	$(DO_MAKE) ACTION=$@ outer
	$(DO_MAKE) ACTION=$@ prodcons
	$(DO_MAKE) ACTION=$@ product
	$(DO_MAKE) ACTION=$@ randmat
	$(DO_MAKE) ACTION=$@ threadring
	$(DO_MAKE) ACTION=$@ thresh
	$(DO_MAKE) ACTION=$@ winnow
	
chain:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench004 ARGUMENT="-i $(EWEASEL_OUTPUT)/bench004/EIFGENs/test/F_code/test.in -bench" "REPEAT=-c 22"

chameneos:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench005 ARGUMENT="300000" "REPEAT=-c 22"

condition:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench006 ARGUMENT="18000 32" "REPEAT=-c 21"

mutex:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench007 ARGUMENT="500000 64" "REPEAT=-c 19"

outer:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench008 ARGUMENT="-i $(EWEASEL_OUTPUT)/bench008/EIFGENs/test/F_code/test.in -bench" "REPEAT=-c 22"

prodcons:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench009 ARGUMENT="33000 32" "REPEAT=-c 18"

product:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench010 ARGUMENT="-i $(EWEASEL_OUTPUT)/bench010/EIFGENs/test/F_code/test.in -bench" "REPEAT=-c 25"

randmat:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench011 ARGUMENT="-i $(EWEASEL_OUTPUT)/bench011/EIFGENs/test/F_code/test.in -bench" "REPEAT=-c 22"

threadring:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench012 ARGUMENT="2100000 64" "REPEAT=-c 19"

thresh:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench013 ARGUMENT="-i $(EWEASEL_OUTPUT)/bench013/EIFGENs/test/F_code/test.in -bench" "REPEAT=-c 20"

winnow:
	$(DO_MAKE) action.$(ACTION) TARGET=$@ TEST=bench014 ARGUMENT="-i $(EWEASEL_OUTPUT)/bench014/EIFGENs/test/F_code/test.in -bench" "REPEAT=-c 18"

action.benchmark: $(ELAPSED_TIME) action.build
	$(MEASURE) -w "$(EWEASEL_OUTPUT)/$(TEST)" -n $(TARGET) $(REPEAT) "$(COMMAND_PREFIX)$(EWEASEL_OUTPUT)/$(TEST)/EIFGENs/test/F_code/test$(EXE) $(ARGUMENT)" >> "$(OUTPUT)"

action.benchmark_1: $(ELAPSED_TIME) action.build
	$(MEASURE) -w "$(EWEASEL_OUTPUT)/$(TEST)" -n $(TARGET) -c 1 "$(COMMAND_PREFIX)$(EWEASEL_OUTPUT)/$(TEST)/EIFGENs/test/F_code/test$(EXE) $(ARGUMENT)" >> "$(OUTPUT)"

action.build: $(EWEASEL_OUTPUT)/$(TEST)/EIFGENs/test/F_code/test$(EXE)

action.clean:
	-$(RD) "$(EWEASEL_OUTPUT)/$(TEST)/EIFGENs"
	-$(RM) "$(EWEASEL_OUTPUT)/$(TEST)/test.rc"

$(EWEASEL_OUTPUT)/$(TEST)/EIFGENs/test/F_code/test$(EXE):
	set EWEASEL_OUTPUT=$(EWEASEL_OUTPUT)
	"$(EWEASEL)$(DIRSEP)bin$(DIRSEP)run_eweasel_filter" $(TEST)

$(ELAPSED_TIME): $(ELAPSED_TIME_DIR)/elapsed_time.e $(ELAPSED_TIME_DIR)/elapsed_time.ecf
	$(EC) -finalize -clean -config "$(ELAPSED_TIME_DIR)/elapsed_time.ecf" -project_path "$(ELAPSED_TIME_DIR)" -c_compile