CC := clang WRN := -Wall -Wextra -Wconversion -Wvla -Wformat ASM := rdtsc INF := main.c $(ASM).obj OUT := max LNK := -lm DBG := -g -gcodeview -gcolumn-info -fuse-ld=lld -g -Wl,--pdb=$(OUT).pdb default: asm com com: $(CC) $(WRN) $(LNK) $(INF) $(DBG) -O0 -o $(OUT) asm: nasm -w+all -f win64 $(ASM).S rdi: $(RAD)/radbin --rdi $(OUT).pdb o1: asm $(CC) $(WRN) $(LNK) $(INF) $(DBG) -o $(OUT) -O1 o2: asm $(CC) $(WRN) $(LNK) $(INF) $(DBG) -o $(OUT) -O2 o3: asm $(CC) $(WRN) $(LNK) $(INF) $(DBG) -o $(OUT) -O3 os: asm $(CC) $(WRN) $(LNK) $(INF) $(DBG) -o $(OUT) -Os ofast: asm $(CC) $(WRN) $(LNK) $(INF) $(DBG) -o $(OUT) -Ofast test: make default > /dev/null ./$(OUT) make o1 > /dev/null ./$(OUT) make o2 > /dev/null ./$(OUT) make o3 > /dev/null ./$(OUT) make os > /dev/null ./$(OUT) make ofast > /dev/null ./$(OUT) clean: rm -f $(OUT) $(OUT).exe $(OUT).pdb $(OUT).rdi $(ASM).o $(ASM).obj