all:: PROGS += rho rho_SRCS = rho.cc rho_LIBS = -lntl PROGS += factor factor_SRCS = factor.c factor_LIBS = -lpari TARGETS = CLEAN += $(TARGETS) .SECONDEXPANSION: V = 0 v_tag = $(call v_tag_$V,$1) v_tag_0 = @printf " %-6s %s\n" $1 $@; V_AT = $(V_AT_$V) V_AT_0 = @ CC = gcc CFLAGS = -O2 -g -Wall -Werror CCLD = $(CC) LDFLAGS = CCLINK = $(call v_tag,CCLD)$(CCLD) $(LDFLAGS) AS = $(CC) CXX = g++ CXXFLAGS = $(CFLAGS) -std=gnu++11 CXXLD = $(CXX) CXXLINK = $(call v_tag,CXXLD)$(CXXLD) $(LDFLAGS) CLEAN += *.o *.d %.o: %.c $(call v_tag,CC)$(CC) -c $(CFLAGS) -MD -o$@ $< %.o: %.cc $(call v_tag,CXX)$(CXX) -c $(CXXFLAGS) -MD -o$@ $< objify = \ $(patsubst %.c,%.o, \ $(patsubst %.cc,%.o, \ $(patsubst %.s,%.o, $(patsubst %.S,%.o, \ $1)))) TARGETS += $(PROGS) $(PROGS): %: $$(call objify,$$($$*_SRCS)) $(or $(and $(filter %.cc,$($*_SRCS)),$(CXXLINK)),$(CCLINK)) -o$@ \ $($*_LDFLAGS) $^ $($*_LIBS) $(LIBS) clean:: rm -f $(CLEAN) .PHONY: clean all:: $(TARGETS) .PHONY: all