scripts: Added make ctx, adopted ctx.py in the Makefile

make ctx now does what you expect it to, and ctx.py now replaces
structs.py in the summary rules (make funcs, make summary):

  $ make summary
  ... blablabla ...
              code     data    stack      ctx
  TOTAL      38100        0     2624      752

Also finally cleaned up SUMMARYFLAGS in make funcs. This should have
been cleaned up when cleaning up make summary...
This commit is contained in:
Christopher Haster
2024-12-01 23:47:59 -06:00
parent 512cf5ad4b
commit 94df6d47d4
+48 -21
View File
@@ -106,6 +106,7 @@ ifdef VERBOSE
CODEFLAGS += -v CODEFLAGS += -v
DATAFLAGS += -v DATAFLAGS += -v
STACKFLAGS += -v STACKFLAGS += -v
CTXFLAGS += -v
STRUCTSFLAGS += -v STRUCTSFLAGS += -v
COVFLAGS += -v COVFLAGS += -v
PERFFLAGS += -v PERFFLAGS += -v
@@ -121,6 +122,7 @@ endif
ifneq ($(OBJDUMP),objdump) ifneq ($(OBJDUMP),objdump)
CODEFLAGS += --objdump-path="$(OBJDUMP)" CODEFLAGS += --objdump-path="$(OBJDUMP)"
DATAFLAGS += --objdump-path="$(OBJDUMP)" DATAFLAGS += --objdump-path="$(OBJDUMP)"
CTXFLAGS += --objdump-path="$(OBJDUMP)"
STRUCTSFLAGS += --objdump-path="$(OBJDUMP)" STRUCTSFLAGS += --objdump-path="$(OBJDUMP)"
PERFFLAGS += --objdump-path="$(OBJDUMP)" PERFFLAGS += --objdump-path="$(OBJDUMP)"
PERFBDFLAGS += --objdump-path="$(OBJDUMP)" PERFBDFLAGS += --objdump-path="$(OBJDUMP)"
@@ -245,17 +247,33 @@ stack: $(CI) $(BUILDDIR)/lfs.stack.csv
stack-diff: $(CI) stack-diff: $(CI)
./scripts/stack.py $^ $(STACKFLAGS) -d $(BUILDDIR)/lfs.stack.csv ./scripts/stack.py $^ $(STACKFLAGS) -d $(BUILDDIR)/lfs.stack.csv
## Find the per-function context
.PHONY: ctx
ctx: CTXFLAGS+=-S
ctx: $(OBJ) $(BUILDDIR)/lfs.ctx.csv
./scripts/ctx.py $(OBJ) $(CTXFLAGS)
## Compare per-function context
.PHONY: ctx-diff
ctx-diff: $(CI)
./scripts/ctx.py $^ $(CTXFLAGS) -d $(BUILDDIR)/lfs.ctx.csv
## Find function sizes ## Find function sizes
.PHONY: funcs .PHONY: funcs
funcs: SUMMARYFLAGS+=-S funcs: SUMMARYFLAGS+=-S
funcs: SHELL=/bin/bash funcs: SHELL=/bin/bash
funcs: $(BUILDDIR)/lfs.code.csv $(BUILDDIR)/lfs.stack.csv funcs: \
$(BUILDDIR)/lfs.code.csv \
$(BUILDDIR)/lfs.stack.csv \
$(BUILDDIR)/lfs.ctx.csv
$(strip ./scripts/csv.py \ $(strip ./scripts/csv.py \
<(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \
-fcode=size -q $(SUMMARYFLAGS) -o-) \ -fcode=size -q -o-) \
<(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \
-fstack='max(limit)' -q $(SUMMARYFLAGS) -o-) \ -fstack='max(limit)' -q -o-) \
-bfunction -fcode -fstack='max(stack)' \ <(./scripts/csv.py $(BUILDDIR)/lfs.ctx.csv \
-fctx='max(size)' -q -o-) \
-bfunction -fcode -fstack='max(stack)' -fctx='max(ctx)' \
$(SUMMARYFLAGS)) $(SUMMARYFLAGS))
## Compare function sizes ## Compare function sizes
@@ -265,18 +283,23 @@ funcs-diff: $(OBJ) $(CI)
$(strip ./scripts/csv.py \ $(strip ./scripts/csv.py \
<(./scripts/csv.py \ <(./scripts/csv.py \
<(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \ <(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \
-fcode=size -q $(SUMMARYFLAGS) -o-) \ -fcode=size -q -o-) \
<(./scripts/csv.py \ <(./scripts/csv.py \
<(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \ <(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \
-fstack='max(limit)' -q $(SUMMARYFLAGS) -o-) \ -fstack='max(limit)' -q -o-) \
-bfunction -fcode -fstack='max(stack)' \ <(./scripts/csv.py \
<(./scripts/ctx.py $(OBJ) -q $(CTXFLAGS) -o-) \
-fctx='max(size)' -q -o-) \
-bfunction -fcode -fstack='max(stack)' -fctx='max(ctx)' \
$(SUMMARYFLAGS) -d <(./scripts/csv.py \ $(SUMMARYFLAGS) -d <(./scripts/csv.py \
<(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \
-fcode=size -q $(SUMMARYFLAGS) -o-) \ -fcode=size -q -o-) \
<(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \
-fstack='max(limit)' -q $(SUMMARYFLAGS) -o-) \ -fstack='max(limit)' -q -o-) \
-fcode -fstack='max(stack)' \ <(./scripts/csv.py $(BUILDDIR)/lfs.ctx.csv \
-q $(SUMMARYFLAGS) -o-)) -fctx='max(size)' -q -o-) \
-fcode -fstack='max(stack)' -fctx='max(ctx)' \
-q -o-))
## Find struct sizes ## Find struct sizes
.PHONY: structs .PHONY: structs
@@ -341,7 +364,7 @@ summary sizes: \
$(BUILDDIR)/lfs.code.csv \ $(BUILDDIR)/lfs.code.csv \
$(BUILDDIR)/lfs.data.csv \ $(BUILDDIR)/lfs.data.csv \
$(BUILDDIR)/lfs.stack.csv \ $(BUILDDIR)/lfs.stack.csv \
$(BUILDDIR)/lfs.structs.csv $(BUILDDIR)/lfs.ctx.csv
$(strip ./scripts/csv.py \ $(strip ./scripts/csv.py \
<(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \
-fcode=size -q -o-) \ -fcode=size -q -o-) \
@@ -349,9 +372,9 @@ summary sizes: \
-fdata=size -q -o-) \ -fdata=size -q -o-) \
<(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \
-fstack='max(limit)' -q -o-) \ -fstack='max(limit)' -q -o-) \
<(./scripts/csv.py $(BUILDDIR)/lfs.structs.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.ctx.csv \
-fstructs=size -q -o-) \ -fctx='max(size)' -q -o-) \
-bfunction -fcode -fdata -fstack='max(stack)' -fstructs \ -bfunction -fcode -fdata -fstack='max(stack)' -fctx='max(ctx)' \
-Y $(SUMMARYFLAGS)) -Y $(SUMMARYFLAGS))
## Compare compile-time sizes ## Compare compile-time sizes
@@ -370,9 +393,9 @@ summary-diff sizes-diff: $(OBJ) $(CI)
<(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \ <(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \
-fstack='max(limit)' -q -o-) \ -fstack='max(limit)' -q -o-) \
<(./scripts/csv.py \ <(./scripts/csv.py \
<(./scripts/structs.py $(OBJ) -q $(STRUCTSFLAGS) -o-) \ <(./scripts/ctx.py $(OBJ) -q $(CTXFLAGS) -o-) \
-fstructs=size -q -o-) \ -fctx='max(size)' -q -o-) \
-fcode -fdata -fstack='max(stack)' -fstructs \ -fcode -fdata -fstack='max(stack)' -fctx='max(ctx)' \
-bbuild='"AFTER"' -q -o-) \ -bbuild='"AFTER"' -q -o-) \
<(./scripts/csv.py \ <(./scripts/csv.py \
<(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.code.csv \
@@ -381,9 +404,9 @@ summary-diff sizes-diff: $(OBJ) $(CI)
-fdata=size -q -o-) \ -fdata=size -q -o-) \
<(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.stack.csv \
-fstack='max(limit)' -q -o-) \ -fstack='max(limit)' -q -o-) \
<(./scripts/csv.py $(BUILDDIR)/lfs.structs.csv \ <(./scripts/csv.py $(BUILDDIR)/lfs.ctx.csv \
-fstructs=size -q -o-) \ -fctx='max(size)' -q -o-) \
-fcode -fdata -fstack='max(stack)' -fstructs \ -fcode -fdata -fstack='max(stack)' -fctx='max(ctx)' \
-bbuild='"BEFORE"' -q -o-) \ -bbuild='"BEFORE"' -q -o-) \
-bbuild -cBEFORE -Y $(SUMMARYFLAGS)) -bbuild -cBEFORE -Y $(SUMMARYFLAGS))
@@ -492,6 +515,9 @@ $(BUILDDIR)/lfs.data.csv: $(OBJ)
$(BUILDDIR)/lfs.stack.csv: $(CI) $(BUILDDIR)/lfs.stack.csv: $(CI)
./scripts/stack.py $^ -q $(STACKFLAGS) -o $@ ./scripts/stack.py $^ -q $(STACKFLAGS) -o $@
$(BUILDDIR)/lfs.ctx.csv: $(OBJ)
./scripts/ctx.py $^ -q $(CTXFLAGS) -o $@
$(BUILDDIR)/lfs.structs.csv: $(OBJ) $(BUILDDIR)/lfs.structs.csv: $(OBJ)
./scripts/structs.py $^ -q $(STRUCTSFLAGS) -o $@ ./scripts/structs.py $^ -q $(STRUCTSFLAGS) -o $@
@@ -556,6 +582,7 @@ clean:
rm -f $(BUILDDIR)/lfs.code.csv rm -f $(BUILDDIR)/lfs.code.csv
rm -f $(BUILDDIR)/lfs.data.csv rm -f $(BUILDDIR)/lfs.data.csv
rm -f $(BUILDDIR)/lfs.stack.csv rm -f $(BUILDDIR)/lfs.stack.csv
rm -f $(BUILDDIR)/lfs.ctx.csv
rm -f $(BUILDDIR)/lfs.structs.csv rm -f $(BUILDDIR)/lfs.structs.csv
rm -f $(BUILDDIR)/lfs.cov.csv rm -f $(BUILDDIR)/lfs.cov.csv
rm -f $(BUILDDIR)/lfs.perf.csv rm -f $(BUILDDIR)/lfs.perf.csv