######################## -*- Mode: Makefile-Automake -*- ###################### ## ## Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo ## ## The contents of this file are covered under the licence agreement in the ## file "LICENCE" distributed with Cforall. ## ## Makefile.am -- ## ## Author : Peter A. Buhr ## Created On : Sun May 31 09:08:15 2015 ## Last Modified By : Peter A. Buhr ## Last Modified On : Tue Nov 6 09:01:23 2018 ## Update Count : 26 ############################################################################### AUTOMAKE_OPTIONS = foreign # do not require all the GNU file names ACLOCAL_AMFLAGS = -I automake # applies to both programs include $(top_srcdir)/src/cfa.make AM_CFLAGS = -O2 -Wall -Wextra -Werror -I$(srcdir) -lrt -pthread AM_CFAFLAGS = -quiet -nodebug -in-tree AM_UPPFLAGS = -quiet -nodebug -multi -std=c++14 BENCH_V_CC = $(__bench_v_CC_$(__quiet)) BENCH_V_CFA = $(__bench_v_CFA_$(__quiet)) BENCH_V_CXX = $(__bench_v_CXX_$(__quiet)) BENCH_V_GOC = $(__bench_v_GOC_$(__quiet)) BENCH_V_JAVAC = $(__bench_v_JAVAC_$(__quiet)) BENCH_V_UPP = $(__bench_v_UPP_$(__quiet)) __quiet = verbose __bench_v_CC_quiet = @ __bench_v_CFA_quiet = @ __bench_v_CXX_quiet = @ __bench_v_GOC_quiet = @ __bench_v_JAVAC_quiet = @ __bench_v_UPP_quiet = @ __bench_v_CC_verbose = $(AM_V_CC) __bench_v_CFA_verbose = $(AM_V_CFA) __bench_v_CXX_verbose = $(AM_V_CXX) __bench_v_GOC_verbose = $(AM_V_GOC) __bench_v_JAVAC_verbose = $(AM_V_JAVAC) __bench_v_UPP_verbose = $(AM_V_UPP) TOOLSDIR = ${abs_top_builddir}/tools/ REPEAT = ${abs_top_builddir}/tools/repeat STATS = ${abs_top_srcdir}/tools/stat.py repeats = 30 skipcompile = no TIME_FORMAT = "%E" PRINT_FORMAT = %20s: #Comments needed for spacing # Dummy hack tricks EXTRA_PROGRAMS = dummy # build but do not install dummy_SOURCES = dummyC.c dummyCXX.cpp dummyC.c: @echo "int main() { return 0; }" > ${@} dummyCXX.cpp: @echo "int main() { return 0; }" > ${@} .NOTPARALLEL: .PHONY: compile.csv ctxswitch.csv mutex.csv signal.csv ## ========================================================================================================= all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT) %.run : %$(EXEEXT) ${REPEAT} @rm -f .result.log @echo "------------------------------------------------------" @echo $< @${REPEAT} ${repeats} ./a.out | tee -a .result.log @${STATS} .result.log @echo "------------------------------------------------------" @rm -f a.out .result.log *.class %.runquiet : @+make $(basename $@) CFLAGS="-w" __quiet=quiet @taskset -c 1 ./a.out @rm -f a.out %.make : @printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@)) @+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1 ${REPEAT} : @+make -C ${abs_top_builddir}/tools repeat ## ========================================================================================================= FIX_NEW_LINES = cat $@ | tr "\n" "\t" | sed -r 's/\t,/,/' | tr "\t" "\n" > $@ jenkins$(EXEEXT): @DOifskipcompile@ @+make compile.csv @DOendif@ @+make ctxswitch.csv @+make mutex.csv @+make signal.csv @DOifskipcompile@ @cat compile.csv @DOendif@ @cat ctxswitch.csv @cat mutex.csv @cat signal.csv compile.csv: @echo "array,attributes,empty,expression,io,monitor,operators,typeof" > $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-array.make >> $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-attributes.make >> $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-empty.make >> $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-expression.make >> $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-io.make >> $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-monitor.make >> $@ @+make TIME_FORMAT='%e,' PRINT_FORMAT='' compile-operators.make >> $@ @+make TIME_FORMAT='%e' PRINT_FORMAT='' compile-typeof.make >> $@ @$(srcdir)/fixcsv.sh $@ ctxswitch.csv: @echo "coroutine,thread" > $@ @+make ctxswitch-cfa_coroutine.runquiet >> $@ && echo -n ',' >> $@ @+make ctxswitch-cfa_thread.runquiet >> $@ @$(srcdir)/fixcsv.sh $@ mutex.csv: @echo "1-monitor,2-monitor" > $@ @+make mutex-cfa1.runquiet >> $@ && echo -n ',' >> $@ @+make mutex-cfa2.runquiet >> $@ @$(srcdir)/fixcsv.sh $@ signal.csv: @echo "signal-1,signal-2,waitfor-1,waitfor-2" > $@ @+make signal-cfa1.runquiet >> $@ && echo -n ',' >> $@ @+make signal-cfa2.runquiet >> $@ && echo -n ',' >> $@ @+make waitfor-cfa1.runquiet >> $@ && echo -n ',' >> $@ @+make waitfor-cfa2.runquiet >> $@ @$(srcdir)/fixcsv.sh $@ ## ========================================================================================================= loop$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/loop.c function$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=5000000000 $(srcdir)/function.c fetch_add$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000 $(srcdir)/fetch_add.c tls-fetch_add$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000000 $(srcdir)/tls-fetch_add.c ## ========================================================================================================= CTXSWITCH_DEPEND = \ loop.run \ function.run \ fetch_add.run \ tls-fetch_add.run \ ctxswitch-pthread.run \ ctxswitch-cfa_coroutine.run \ ctxswitch-cfa_thread.run \ ctxswitch-cfa_thread2.run \ ctxswitch-upp_coroutine.run \ ctxswitch-upp_thread.run \ ctxswitch-goroutine.run \ ctxswitch-java_thread.run if WITH_LIBFIBRE CTXSWITCH_DEPEND += \ ctxswitch-kos_fibre.run \ ctxswitch-kos_fibre2.run ctxswitch-kos_fibre$(EXEEXT): $(BENCH_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp -I$(LIBFIBRE_DIR) -lfibre ctxswitch-kos_fibre2$(EXEEXT): $(BENCH_V_CXX)$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre endif ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND) ctxswitch-pthread$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c ctxswitch-cfa_coroutine$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa ctxswitch-cfa_thread$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa ctxswitch-cfa_thread2$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa ctxswitch-upp_coroutine$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_cor.cc ctxswitch-upp_thread$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc ctxswitch-goroutine$(EXEEXT): $(BENCH_V_GOC)go build -o a.out $(srcdir)/ctxswitch/goroutine.go ctxswitch-java_thread$(EXEEXT): $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/ctxswitch/JavaThread.java @echo "#!/bin/sh" > a.out @echo "java JavaThread" >> a.out @chmod a+x a.out ## ========================================================================================================= mutex$(EXEEXT) :\ loop.run \ function.run \ fetch_add.run \ mutex-pthread_lock.run \ mutex-upp.run \ mutex-cfa1.run \ mutex-cfa2.run \ mutex-cfa4.run \ mutex-java_thread.run mutex-pthread_lock$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/pthreads.c mutex-upp$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/mutex/upp.cc mutex-cfa1$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000 $(srcdir)/mutex/cfa1.cfa mutex-cfa2$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000 $(srcdir)/mutex/cfa2.cfa mutex-cfa4$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000 $(srcdir)/mutex/cfa4.cfa mutex-java_thread$(EXEEXT): $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/mutex/JavaThread.java @echo "#!/bin/sh" > a.out @echo "java JavaThread" >> a.out @chmod a+x a.out ## ========================================================================================================= signal$(EXEEXT) :\ signal-pthread_cond.run \ signal-upp.run \ signal-cfa1.run \ signal-cfa2.run \ signal-cfa4.run \ signal-java_thread.run signal-pthread_cond$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=500000 $(srcdir)/schedint/pthreads.c signal-upp$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedint/upp.cc signal-cfa1$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedint/cfa1.cfa signal-cfa2$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedint/cfa2.cfa signal-cfa4$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedint/cfa4.cfa signal-java_thread$(EXEEXT): $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/schedint/JavaThread.java @echo "#!/bin/sh" > a.out @echo "java JavaThread" >> a.out @chmod a+x a.out ## ========================================================================================================= waitfor$(EXEEXT) :\ waitfor-upp.run \ waitfor-cfa1.run \ waitfor-cfa2.run \ waitfor-cfa4.run waitfor-upp$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=5000000 $(srcdir)/schedext/upp.cc waitfor-cfa1$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedext/cfa1.cfa waitfor-cfa2$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedext/cfa2.cfa waitfor-cfa4$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=500000 $(srcdir)/schedext/cfa4.cfa ## ========================================================================================================= creation$(EXEEXT) :\ creation-pthread.run \ creation-cfa_coroutine.run \ creation-cfa_coroutine_eager.run \ creation-cfa_thread.run \ creation-upp_coroutine.run \ creation-upp_thread.run \ creation-goroutine.run \ creation-java_thread.run creation-cfa_coroutine$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa creation-cfa_coroutine_eager$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa -DEAGER creation-cfa_thread$(EXEEXT): $(BENCH_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa creation-upp_coroutine$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_cor.cc creation-upp_thread$(EXEEXT): $(BENCH_V_UPP)$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/creation/upp_thrd.cc creation-pthread$(EXEEXT): $(BENCH_V_CC)$(COMPILE) -DBENCH_N=250000 $(srcdir)/creation/pthreads.c creation-goroutine$(EXEEXT): $(BENCH_V_GOC)go build -o a.out $(srcdir)/creation/goroutine.go creation-java_thread$(EXEEXT): $(BENCH_V_JAVAC)javac -d $(builddir) $(srcdir)/creation/JavaThread.java @echo "#!/bin/sh" > a.out @echo "java JavaThread" >> a.out @chmod a+x a.out ## ========================================================================================================= compile$(EXEEXT) :\ compile-array.make \ compile-attributes.make \ compile-empty.make \ compile-expression.make \ compile-io.make \ compile-monitor.make \ compile-operators.make \ compile-typeof.make testdir = $(top_srcdir)/tests compile-array$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa compile-attributes$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/attributes.cfa compile-empty$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa compile-expression$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa compile-io$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa compile-monitor$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa compile-operators$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa compile-thread$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa compile-typeof$(EXEEXT): @$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa