99MYCC ?= gcc
1010MYCXX ?= g++
1111D ?= #-D_XOPEN_SOURCE 700
12+ G ?= gdb3
1213I ?= #-I/usr/include
1314O ?= 0
1415STD ?= c11
1516PEDANTIC ?= -pedantic-errors
16- CFLAGS ?= $(D) -O$(O) -std=$(STD) -Wextra $(PEDANTIC) $(CFLAGS_EXTRA)
17- MYCXXFLAGS ?= $(D) -O$(O) -std=c++11 -Wextra $(PEDANTIC) $(CXXFLAGS_EXTRA)
17+ CFLAGS ?= $(D) -g$(G) - O$(O) -std=$(STD) -Wextra $(PEDANTIC) $(CFLAGS_EXTRA)
18+ MYCXXFLAGS ?= $(D) -g$(G) - O$(O) -std=c++11 -Wextra $(PEDANTIC) $(CXXFLAGS_EXTRA)
1819
19- LIBS ?= -lm #-lGL -lGLU -lglut
20+ LIBS ?= -lm -pthread #-lGL -lGLU -lglut
2021
2122# Fortran
2223FF ?= gfortran
@@ -40,10 +41,6 @@ RUN_INPUT ?= input
4041TEST ?= test
4142
4243ASSEMBLER_NOEXT ?= $(IN_DIR)$(RUN)
43- DEBUG_DEFINE ?=
44- DEBUG_FLAGS ?=
45- PROFILE_DEFINE ?= #-DDEBUG
46- PROFILE_FLAGS ?= #
4744
4845RUN_BNAME := $(RUN)$(OUT_EXT)
4946
@@ -53,7 +50,7 @@ OUTS_NODIR := $(basename $(INS_NODIR))
5350OUTS_NODIR := $(addsuffix $(OUT_EXT), $(OUTS_NODIR))
5451OUTS := $(addprefix $(OUT_DIR), $(OUTS_NODIR))
5552
56- .PHONY: all asm set_asm_flags clean debug set_debug_flags help mkdir objdump set_objdump_flags profile set_profile_flags test $(PHONY)
53+ .PHONY: all asm clean debug help mkdir objdump set_objdump_flags profile set_profile_flags test $(PHONY)
5754
5855all: mkdir $(OUTS)
5956 @#TODO ignore errors if not present
@@ -65,26 +62,26 @@ ifneq ($(strip $(run)),)
6562endif
6663
6764$(OUT_DIR)%$(OUT_EXT): $(IN_DIR)%.c
68- $(MYCC) $(CFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(DEBUG_DEFINE) $(DEBUG_FLAGS) $( I) -o "$@" "$<" $(LIBS)
65+ $(MYCC) $(CFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(I) -o "$@" "$<" $(LIBS)
6966
7067$(OUT_DIR)%$(OUT_EXT): $(IN_DIR)%.cpp
71- $(MYCXX) $(MYCXXFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(DEBUG_DEFINE) $(DEBUG_FLAGS) $( I) -o "$@" "$<" $(LIBS)
68+ $(MYCXX) $(MYCXXFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(I) -o "$@" "$<" $(LIBS)
7269
7370$(OUT_DIR)%$(OUT_EXT): $(IN_DIR)%.f
74- $(FF) $(FFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(DEBUG_DEFINE) $(DEBUG_FLAGS) -o "$@" "$<" $(FFLIBS)
71+ $(FF) $(FFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) -o "$@" "$<" $(FFLIBS)
7572
7673# Make assembly intermingled with original C code to stdout>
7774# TODO0: how not to rewrite the make rules?
78- # For bare asm: $(MYCC) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(DEBUG_DEFINE) $(DEBUG_FLAGS) $( CFLAGS) -fverbose-asm -S "$(ASSEMBLER_NOEXT)$$EXT"
75+ # For bare asm: $(MYCC) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(CFLAGS) -fverbose-asm -S "$(ASSEMBLER_NOEXT)$$EXT"
7976asm: mkdir set_asm_flags
8077 for EXT in $(IN_EXTS); do \
8178 if [ -f "$(ASSEMBLER_NOEXT)$$EXT" ]; then \
8279 case "$$EXT" in \
8380 .c)\
84- $(MYCC) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(DEBUG_DEFINE) $(DEBUG_FLAGS) $( CFLAGS) -c -fverbose-asm -Wa,-adhln "$(ASSEMBLER_NOEXT)$$EXT" $(LIBS) -o $(OUT_DIR)asm.o\
81+ $(MYCC) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(CFLAGS) -c -fverbose-asm -Wa,-adhln "$(ASSEMBLER_NOEXT)$$EXT" $(LIBS) -o $(OUT_DIR)asm.o\
8582 ;;\
8683 .cpp)\
87- $(MYCXX) $(MYCXXFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) $(DEBUG_DEFINE) $(DEBUG_FLAGS) -c -fverbose-asm -Wa,-adhln "$(ASSEMBLER_NOEXT)$$EXT" $(LIBS)\
84+ $(MYCXX) $(MYCXXFLAGS) $(PROFILE_DEFINE) $(PROFILE_FLAGS) -c -fverbose-asm -Wa,-adhln "$(ASSEMBLER_NOEXT)$$EXT" $(LIBS)\
8885 ;;\
8986 .f)\
9087 ;;\
@@ -93,9 +90,6 @@ asm: mkdir set_asm_flags
9390 fi;\
9491 done
9592
96- set_asm_flags:
97- $(eval DEBUG_FLAGS := -ggdb3)
98-
9993clean:
10094 if [ ! '$(OUT_DIR)' = './' ]; then \
10195 rm -rf '$(OUT_DIR)' ;\
@@ -106,21 +100,14 @@ clean:
106100debug: clean set_debug_flags all
107101 cd $(OUT_DIR) && gdb "$(RUN_BNAME)"
108102
109- set_debug_flags:
110- $(eval DEBUG_FLAGS := -ggdb3)
111- $(eval DEBUG_DEFINE := -DDEBUG)
112-
113103mkdir:
114104 @mkdir -p "$(OUT_DIR)"
115105
116106objdump: mkdir set_objdump_flags all
117- cd $(OUT_DIR) && objdump -S $(RUN_BNAME)
118-
119- set_objdump_flags:
120- $(eval DEBUG_FLAGS := -ggdb3)
107+ cd '$(OUT_DIR)' && objdump -CSr '$(RUN_BNAME)'
121108
122109profile: clean set_profile_flags all run
123- cd $(OUT_DIR) && gprof -b $(RUN_BNAME) gmon.out | tee "$(RUN_BNAME).profile_out" | less
110+ cd ' $(OUT_DIR)' && gprof -b ' $(RUN_BNAME)' gmon.out | tee "$(RUN_BNAME).profile_out" | less
124111
125112run: all
126113 @echo
0 commit comments