*embedding:
-fsave-cfg %g.cfg \
-fsave-site-info %g.sites \
%{fadd-blast-markers:-fsave-blast-spec %g.spc} \
%{fsampler-implications:-fsave-implications %g.impls} \
%{fsampler-dataflow:-fsave-dataflow %g.dataflow}

*cpp_threads_yes:
-D CBI_THREADS

*cpp_threads:
%{fthreads:%(cpp_threads_yes)} \
%{!fthreads:%{!fno-threads:%{pthread:%(cpp_threads_yes)}}}

*cpp_timestamps:
%{ftimestamp-first:-D CBI_TIMESTAMP_FIRST} \
%{ftimestamp-last:-D CBI_TIMESTAMP_LAST} \
%{ftimestamp-*:-include sampler/timestamps.h%s}

*cpp_random:
%{fsampler-random=fixed:-include sampler/threads/random-fixed.h%s} \
%{fsampler-random=online:-include sampler/threads/random-online.h%s} \
%{fsampler-random=offline:-include sampler/threads/random-offline.h%s} \
%{!fsampler-random=*:-include sampler/threads/random-online.h%s}

*cpp_schemes:
%{fsampler-scheme=atoms:-include sampler/schemes/atoms-unit.h%s} \
%{fsampler-scheme=bounds:-include sampler/schemes/bounds-unit.h%s} \
%{fsampler-scheme=branches:-include sampler/schemes/branches-unit.h%s} \
%{fsampler-scheme=float-kinds:-include sampler/schemes/float-kinds-unit.h%s} \
%{fsampler-scheme=function-entries:-include sampler/schemes/function-entries-unit.h%s} \
%{fsampler-scheme=g-object-unref:-include sampler/schemes/g-object-unref-unit.h%s} \
%{fsampler-scheme=returns:-include sampler/schemes/returns-unit.h%s} \
%{fsampler-scheme=scalar-pairs:-include sampler/schemes/scalar-pairs-unit.h%s} \
%{fsampler-scheme=yields:-include sampler/schemes/yields-unit.h%s} \
%{fsampler-scheme=fun-reentries:-include sampler/schemes/fun-reentries-unit.h%s} \
%{fsampler-scheme=compare-swap:-include sampler/schemes/compare-swap-unit.h%s} \
%{fsampler-scheme=atoms-rw:-include sampler/schemes/atoms-rw-unit.h%s} \
%{fsampler-scheme=*:-include sampler/unit.h%s}

*cpp_blast:
%{fadd-blast-markers:-include sampler/blast-markers.h%s}

*cpp_tuple_counter_bits:


*cpp:
+ -DCIL \
%(cpp_blast) \
%(cpp_tuple_counter_bits) \
%(cpp_threads) \
%(cpp_timestamps) \
%{!fno-sample:-include sampler/threads/countdown.h%s} \
%(cpp_random) \
%(cpp_schemes)

*cc1:
+ %{v} \
%{!fno-threads:%{!fthreads:%{pthread:-fthreads}}} \
%{fsampler-scheme=atoms:-fisolate-shared-accesses} \
%{fsampler-scheme=compare-swap:-fisolate-shared-accesses} \
%{fsampler-scheme=atoms-rw:-fisolate-shared-accesses} \
-finstrumentor-input %u.i \
-finstrumentor-output %u.inst.i \
%(embedding)

*asm_final:
+ %{v:--verbose} \
%(embedding)

%rename lib original_lib

*lib_threads_yes:
%{fno-sample:-lsampler-always} \
%{fsampler-random=fixed:-lsampler-fixed_r} \
%{fsampler-random=online:-lsampler-online_r} \
%{fsampler-random=offline:-lsampler-offline_r} \
%{!fno-sample:%{!fsampler-random=*:-lsampler-online_r}} \
-lsampler_r \
-lpthread

*lib_threads_no:
%{fno-sample:-lsampler-always} \
%{fsampler-random=*:-lsampler-%*} \
%{!fno-sample:%{!fsampler-random=*:-lsampler-online}} \
-lsampler

*lib:
--undefined=cbi_initialize \
%{fsampler-lib-dir=*:-L%* -rpath %*} \
%{fsampler-scheme=*:-lsampler-%*} \
%{ftimestamp-*:-lsampler-schemes} \
%{fthreads:%(lib_threads_yes)} \
%{fno-threads:%(lib_threads_no)} \
%{!fthreads:%{!fno-threads:%{pthread:%(lib_threads_yes)}}} \
%{!fthreads:%{!fno-threads:%{!pthread:%(lib_threads_no)}}} \
%(original_lib)

