########################################################################## # makefile ########################################################################## A32 = $(wildcard *32*.s) E32 = $(basename $(A32)) A64 = $(wildcard *64*.s) E64 = $(basename $(A64)) ASM = $(wildcard *.s) SRC = $(wildcard *.c *.cc) EXE = $(basename $(ASM) $(SRC)) ATT = $(EXE:=.att) START = $(basename $(shell find *.s -exec grep -l '_start:' {} \;)) ########################################################################## CFLAGS = -g -Og -Wall CXXFLAGS = $(CFLAGS) ifneq ($(shell grep '^ID=.*$$' /etc/os-release | cut -d'=' -f2),fedora) CFLAGS += -no-pie endif ########################################################################## all: att att: $(ATT) clean: -rm -fv $(ATT) $(EXE) *~ exe: $(EXE) .PHONY: all att clean exe ########################################################################## $(E32): CFLAGS += -m32 $(E64): CFLAGS += -m64 addable% range%: CXXFLAGS += -std=c++20 %0: CXXFLAGS += -O0 %1: CXXFLAGS += -O1 %2: CXXFLAGS += -O2 %3: CXXFLAGS += -O3 %g: CXXFLAGS += -Og %s: CXXFLAGS += -Os %z: CXXFLAGS += -Oz variadic: CXXFLAGS += -O3 zmm: CXXFLAGS += -march=knl -O3 ########################################################################## %: %.s $(CC) $(CFLAGS) $< -o $@ $(START): %: %.s $(CC) $(CFLAGS) -nostartfiles $< -o $@ %: %.c $(CC) $(CFLAGS) $< -o $@ %: %.cc $(CXX) $(CXXFLAGS) $< -o $@ %.att: % objdump -Cd $< > $@ ##########################################################################