11.POSIX :
22
33ASM_EXT ?= .s
4- CCC ?= gcc -pedantic-errors -std=c89 -Wextra
4+ O ?= 0
5+ CCC ?= gcc -pedantic-errors -std=c99 -Wextra -ggdb -O$(O )
56CCC_CPP ?= g++ -pedantic-errors -std=c++11 -Wextra
67IN_EXT ?= .c
78IN_EXT_CPP ?= .cpp
9+ LIBS ?= -lm
810OBJ_EXT ?= .o
911OUT_EXT ?= .out
10- OBJ_READELF_EXT ?= .o_readelf
11- OUT_READELF_EXT ?= .out_readelf
12+ OBJ_READELF_EXT ?= $(OBJ_EXT ) .readelf
13+ OUT_READELF_EXT ?= $(OUT_EXT ) .readelf
14+ OBJ_OBJDUMP_EXT ?= $(OBJ_EXT ) .objdump
15+ OUT_OBJDUMP_EXT ?= $(OUT_EXT ) .objdump
1216RUN ?= hello_world
1317
1418INS := $(wildcard * $(IN_EXT ) )
@@ -22,18 +26,22 @@ OUTS_CPP := $(addsuffix $(OUT_EXT), $(basename $(INS_CPP)))
2226all : $(OUTS ) $(OUTS_CPP )
2327
2428% $(OUT_EXT ) : % $(IN_EXT )
25- $(CCC ) -S ' $<' -o ' $(basename $@)$(ASM_EXT)'
26- $(CCC ) -c ' $(basename $@)$(ASM_EXT)' -o ' $(basename $@)$(OBJ_EXT)'
27- $(CCC ) ' $(basename $@)$(OBJ_EXT)' -o ' $@'
28- readelf -a ' $(basename $@)$(OBJ_EXT)' > ' $(basename $@)$(OBJ_READELF_EXT)'
29- readelf -a ' $(basename $@)$(OUT_EXT)' > ' $(basename $@)$(OUT_READELF_EXT)'
29+ $(CCC ) -S ' $<' -o ' $(basename $@)$(ASM_EXT)' $(LIBS )
30+ $(CCC ) -c ' $(basename $@)$(ASM_EXT)' -o ' $(basename $@)$(OBJ_EXT)' $(LIBS )
31+ readelf -W -a ' $(basename $@)$(OBJ_EXT)' > ' $(basename $@)$(OBJ_READELF_EXT)'
32+ objdump -S ' $(basename $@)$(OBJ_EXT)' > ' $(basename $@)$(OBJ_OBJDUMP_EXT)'
33+ $(CCC ) ' $(basename $@)$(OBJ_EXT)' -o ' $@' $(LIBS )
34+ readelf -W -a ' $(basename $@)$(OUT_EXT)' > ' $(basename $@)$(OUT_READELF_EXT)'
35+ objdump -S ' $(basename $@)$(OUT_EXT)' > ' $(basename $@)$(OUT_OBJDUMP_EXT)'
3036
3137% $(OUT_EXT ) : % $(IN_EXT_CPP )
3238 $(CCC_CPP ) -S ' $<' -o ' $(basename $@)$(ASM_EXT)'
3339 $(CCC_CPP ) -c ' $(basename $@)$(ASM_EXT)' -o ' $(basename $@)$(OBJ_EXT)'
40+ readelf -W -a ' $(basename $@)$(OBJ_EXT)' > ' $(basename $@)$(OBJ_READELF_EXT)'
41+ objdump -S ' $(basename $@)$(OBJ_EXT)' > ' $(basename $@)$(OBJ_OBJDUMP_EXT)'
3442 $(CCC_CPP ) ' $(basename $@)$(OBJ_EXT)' -o ' $@'
35- readelf -a ' $(basename $@)$(OBJ_EXT )' > ' $(basename $@)$(OBJ_READELF_EXT )'
36- readelf -a ' $(basename $@)$(OUT_EXT)' > ' $(basename $@)$(OUT_READELF_EXT )'
43+ readelf -W - a ' $(basename $@)$(OUT_EXT )' > ' $(basename $@)$(OUT_READELF_EXT )'
44+ objdump -S ' $(basename $@)$(OUT_EXT)' > ' $(basename $@)$(OUT_OBJDUMP_EXT )'
3745
3846clean :
3947 rm -f * ' $(ASM_EXT)' * ' $(OBJ_EXT)' * ' $(OUT_EXT)' * ' $(OBJ_READELF_EXT)' * ' $(OUT_READELF_EXT)'
0 commit comments