SRC_D = SRC_E = SRC_P = SRC_R = SRC_T = 01.e1_predicates.sol.cpp 01.e2_palindrome.sol.cpp 01.e3_pascal.sol.cpp 01.r1_wrap.sol.cpp 01.r2_digits.sol.cpp 01.r3_sieve.sol.cpp 01.r4_bsearch.sol.cpp 01.r5_qsort.sol.cpp 01.r6_radix.sol.cpp 02.e1_fibonacci.sol.cpp 02.e2_normalize.sol.cpp 02.e3_accumulate.sol.cpp 02.r1_euler.sol.cpp 02.r2_approx.sol.cpp 02.r3_solve.sol.cpp 02.r4_sort.sol.cpp 02.r5_permute.sol.cpp 02.r6_bsearch.sol.cpp 03.e1_unique.sol.cpp 03.e2_reflexive.sol.cpp 03.e3_normalize.sol.cpp 03.r1_mode.sol.cpp 03.r2_buckets.sol.cpp 03.r3_shortest.sol.cpp 03.r4_flood.sol.cpp 03.r5_colour.sol.cpp 03.r6_life.sol.cpp 04.e1_diameter.sol.cpp 04.e2_circle.sol.cpp 04.e3_index.sol.cpp 04.r1_complex.sol.cpp 04.r2_bsearch.sol.cpp 04.r3_search.sol.cpp 04.r4_bitptr.sol.cpp 04.r6_sort.sol.cpp 05.e1_cartesian.sol.cpp 05.e2_force.sol.cpp 05.e3_forcefmt.sol.cpp 05.r1_poly.sol.cpp 05.r2_csv.sol.cpp 05.r3_set.sol.cpp 05.r5_json.sol.cpp 05.r6_cpp.sol.cpp 06.e1_default.sol.cpp 06.e2_counter.sol.cpp 06.e3_coffee.sol.cpp 06.r1_printing.sol.cpp 06.r2_bsearch.sol.cpp 06.r4_tinyvec.sol.cpp 06.r5_lock.sol.cpp 06.r6_bounded.sol.cpp 07.e1_dynarray.sol.cpp 07.e2_list.sol.cpp 07.r1_circular.sol.cpp 07.r2_zipper.sol.cpp 07.r3_segment.sol.cpp 07.r4_diff.sol.cpp 08.e1_resistance.sol.cpp 08.e2_perimeter.sol.cpp 08.e3_fight.sol.cpp 08.r1_bom.sol.cpp 08.r2_circuit.sol.cpp 08.r3_loops.sol.cpp 08.r4_pretty.sol.cpp 08.r5_json.sol.cpp 08.r6_while.sol.cpp 09.e1_iota.sol.cpp 09.e2_quot.sol.cpp 09.e3_split.sol.cpp 09.r1_tfold.sol.cpp 09.r2_tmap.sol.cpp 09.r3_monoid.sol.cpp 09.r4_treap.sol.cpp 09.r6_finally.sol.cpp 10.e1_format.sol.cpp 10.e2_concat.sol.cpp 10.e3_select.sol.cpp 10.r1_icons.sol.cpp 10.r2_sorted.sol.cpp 10.r3_fsm.sol.cpp 10.r5_bimap.sol.cpp 10.r6_tinyvec.sol.cpp 11.e1_iota.sol.cpp 11.e2_view.sol.cpp 11.e3_skip.sol.cpp 11.r1_map.sol.cpp 11.r2_range.sol.cpp 11.r3_permute.sol.cpp 11.r5_matrix.sol.cpp 11.r6_bits.sol.cpp 12.e1_digraph.sol.cpp 12.e2_spelling.sol.cpp 12.e3_ternary.sol.cpp 12.r1_trie.sol.cpp 12.r2_cooking.sol.cpp 12.r3_cards.sol.cpp CXX = /packages/run.64/gcc-10.2/bin/c++ TIDY = /packages/run.64/llvm-10.0.1/bin/clang-tidy VALGRIND = valgrind CXXFLAGS = -std=c++17 -Wall -Wextra -Werror -g -MD -MP BIN_T = ${SRC_T:.cpp=} BIN_D = ${SRC_D:.cpp=} BIN_E = ${SRC_E:.cpp=} BIN_P = ${SRC_P:.cpp=} BIN_R = ${SRC_R:.cpp=} BIN = $(BIN_T) $(BIN_D) $(BIN_E) $(BIN_P) $(BIN_R) SRC = $(SRC_T) $(SRC_D) $(SRC_E) $(SRC_P) $(SRC_R) DEP = ${BIN_D:%=.%.d} ${BIN_E:%=.%.d} ${BIN_T:%=.%.d} ${BIN_E:%=.sol.%.d} _ENV = CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" TIDY="$(TIDY)" VALGRIND="$(VALGRIND)" all: $(BIN) clean: @rm -f $(BIN) $(DEP) @rm -f *.core core *~ a.out .check.*.out valgrind.out a.out .cpp: makefile .helper.sh $(CXX) -o $@ $(CXXFLAGS) -MD -MP -MF ${@:%=.%.d} $< @env $(_ENV) sh .helper.sh tidy $< @env $(_ENV) sh .helper.sh grind ./$@ $(BIN_T): makefile .helper.sh @echo building and testing $@ @env $(_ENV) sh .helper.sh cxx $@.cpp -o $@ @env $(_ENV) sh .helper.sh tidy $@.cpp @env $(_ENV) sh .helper.sh grind ./$@ -include $(DEP) .PHONY: all clean