Skip to content

Commit 6a0cfa6

Browse files
committed
Make compilation process quieter, use colors to highlight errors.
1 parent 756258c commit 6a0cfa6

2 files changed

Lines changed: 123 additions & 71 deletions

File tree

Makefile

Lines changed: 107 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ INTASM=-I build/gen/int $(ASMFLAGS)
3434
FPCXX=-DFASTBASIC_FP -Ibuild/gen/fp -Isrc/compiler
3535
INTCXX=-Ibuild/gen/int -Isrc/compiler
3636

37+
# By default use quiet build
38+
Q=@
39+
ECHO=@printf "\e[0;32m%s\e[0m\n"
40+
3741
# Detect Windows OS and set file extensions:
3842
ifeq ($(strip $(shell echo '_WIN32' | $(CROSS)$(CXX) -E - | grep "_WIN32")),_WIN32)
3943
# Linux / OS-X
@@ -507,32 +511,33 @@ all: $(ATR) $(COMPILER_COMMON) $(COMPILER_TARGET)
507511
dist: $(ATR) $(ZIPFILE)
508512

509513
clean: test-clean
510-
rm -f $(OBJS) $(LSTS) $(FILES) $(ATR) $(ZIPFILE) $(XEXS) $(MAPS) \
514+
$(Q)rm -f $(OBJS) $(LSTS) $(FILES) $(ATR) $(ZIPFILE) $(XEXS) $(MAPS) \
511515
$(LBLS) $(ASYNT) $(CSYNT) $(COMPILER_HOST) $(TARGET_OBJ) \
512516
$(COMPILER_HST_DEPS) $(COMPILER_TGT_DEPS) \
513517
$(SAMPLE_BAS:%.bas=build/gen/%.asm) \
514518
$(SAMP_OBJS) $(HOST_OBJ)
515519

516520
distclean: clean test-distclean
517-
rm -f build/gen/int/basic.asm build/gen/fp/basic.asm \
521+
$(Q)rm -f build/gen/int/basic.asm build/gen/fp/basic.asm \
518522
build/gen/int/basic.cc build/gen/fp/basic.cc \
519523
build/gen/int/basic.h build/gen/fp/basic.h \
520524
build/gen/int/basic.inc build/gen/fp/basic.inc \
521525
build/gen/int/editor.asm build/gen/fp/editor.asm \
522526
$(CMD_BAS_SRC) \
523527
$(CMD_BAS_SRC:build/gen/%.bas=build/gen/fp/%.asm) \
524528
$(COMPILER_HOST) $(COMPILER_TARGET) $(COMPILER_COMMON)
525-
-rmdir build/gen/fp build/gen/int \
529+
$(Q)-rmdir build/gen/fp build/gen/int \
526530
build/obj/fp/interp build/obj/int/interp build/obj/fp build/obj/int \
527531
build/obj/cxx-fp build/obj/cxx-int \
528532
build/obj/cxx-tgt-fp build/obj/cxx-tgt-int \
529533
build/compiler/asminc \
530534
build/bin build/gen build/obj build/disk build/compiler
531-
$(MAKE) -C testsuite distclean
535+
$(Q)$(MAKE) -C testsuite distclean
532536

533537
# Build an ATR disk image using "mkatr".
534538
$(ATR): $(DOS:%=$(DOSDIR)/%) $(FILES) | build
535-
mkatr $@ $(DOSDIR) -b $^
539+
$(ECHO) "Creating ATR disk image"
540+
$(Q)mkatr $@ $(DOSDIR) -b $^
536541

537542
# Build compiler ZIP file.
538543
$(ZIPFILE): $(COMPILER_COMMON) $(COMPILER_TARGET) | build
@@ -544,198 +549,238 @@ $(ZIPFILE): $(COMPILER_COMMON) $(COMPILER_TARGET) | build
544549

545550
# BAS sources also transformed to ATASCII (replace $0A with $9B)
546551
build/disk/%.bas: samples/fp/%.bas | build/disk
547-
LC_ALL=C tr '\n' '\233' < $< > $@
552+
$(Q)LC_ALL=C tr '\n' '\233' < $< > $@
548553

549554
build/disk/%.bas: samples/int/%.bas | build/disk
550-
LC_ALL=C tr '\n' '\233' < $< > $@
555+
$(Q)LC_ALL=C tr '\n' '\233' < $< > $@
551556

552557
build/disk/%.bas: tests/%.bas | build/disk
553-
LC_ALL=C tr '\n' '\233' < $< > $@
558+
$(Q)LC_ALL=C tr '\n' '\233' < $< > $@
554559

555560
# Transform a text file to ATASCII (replace $0A with $9B)
556561
build/disk/%: % version.mk | build/disk
557-
LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< | LC_ALL=C tr '\n' '\233' > $@
562+
$(Q)LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< | LC_ALL=C tr '\n' '\233' > $@
558563

559564
build/disk/%.txt: %.md version.mk | build/disk
560-
LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< | LC_ALL=C awk 'BEGIN{for(n=0;n<127;n++)chg[sprintf("%c",n)]=128+n} {l=length($$0);for(i=1;i<=l;i++){c=substr($$0,i,1);if(c=="`"){x=1-x;if(x)c="\002";else c="\026";}else if(x)c=chg[c];printf "%c",c;}printf "\233";}' > $@
565+
$(Q)LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< | LC_ALL=C awk 'BEGIN{for(n=0;n<127;n++)chg[sprintf("%c",n)]=128+n} {l=length($$0);for(i=1;i<=l;i++){c=substr($$0,i,1);if(c=="`"){x=1-x;if(x)c="\002";else c="\026";}else if(x)c=chg[c];printf "%c",c;}printf "\233";}' > $@
561566

562567
# Copy ".XEX" as ".COM"
563568
build/disk/%.com: build/bin/%.xex | build/disk
564-
cp $< $@
569+
$(Q)cp $< $@
565570

566571
# Parser generator for 6502
567572
$(ASYNT): src/syntax/asynt.cc | build/gen
568-
$(CXX) $(CXXFLAGS) -o $@ $<
573+
$(ECHO) "Compile syntax parsing tool $<"
574+
$(Q)$(CXX) $(CXXFLAGS) -o $@ $<
569575

570576
# Parser generator for C++
571577
$(CSYNT): src/syntax/csynt.cc | build/gen
572-
$(CXX) $(CXXFLAGS) -o $@ $<
578+
$(ECHO) "Compile syntax parsing tool $<"
579+
$(Q)$(CXX) $(CXXFLAGS) -o $@ $<
573580

574581
# Host compiler build
575582
build/obj/cxx-int/%.o: src/compiler/%.cc | build/obj/cxx-int
576-
$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
583+
$(ECHO) "Compile INT $<"
584+
$(Q)$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
577585

578586
build/obj/cxx-int/%.o: build/gen/int/%.cc | build/obj/cxx-int
579-
$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
587+
$(ECHO) "Compile INT $<"
588+
$(Q)$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
580589

581590
$(COMPILER_HOST_INT): $(COMPILER_HST_INT_OBJ) | build/bin
582-
$(CXX) $(CXXFLAGS) $(INTCXX) -o $@ $^
591+
$(ECHO) "Linking INT compiler"
592+
$(Q)$(CXX) $(CXXFLAGS) $(INTCXX) -o $@ $^
583593

584594
build/obj/cxx-fp/%.o: src/compiler/%.cc | build/obj/cxx-fp
585-
$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
595+
$(ECHO) "Compile FP $<"
596+
$(Q)$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
586597

587598
build/obj/cxx-fp/%.o: build/gen/fp/%.cc | build/obj/cxx-fp
588-
$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
599+
$(ECHO) "Compile FP $<"
600+
$(Q)$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
589601

590602
$(COMPILER_HOST_FP): $(COMPILER_HST_FP_OBJ) | build/bin
591-
$(CXX) $(CXXFLAGS) $(FPCXX) -o $@ $^
603+
$(ECHO) "Linking FP compiler"
604+
$(Q)$(CXX) $(CXXFLAGS) $(FPCXX) -o $@ $^
592605

593606
$(CA65_HOST): $(CA65_SRC) | build/bin
594-
$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
607+
$(ECHO) "Compile CA65"
608+
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
595609

596610
$(LD65_HOST): $(LD65_SRC) | build/bin
597-
$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
611+
$(ECHO) "Compile LD65"
612+
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
598613

599614
$(AR65_HOST): $(AR65_SRC) | build/bin
600-
$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
615+
$(ECHO) "Compile AR65"
616+
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
601617

602618
# Target compiler build
603619
ifeq ($(CROSS),)
604620
$(COMPILER_TARGET): build/compiler/%$(EXT): build/bin/% | build/compiler
605-
cp -f $< $@
621+
$(Q)cp -f $< $@
606622
else
607623
build/obj/cxx-tgt-int/%.o: src/compiler/%.cc | build/obj/cxx-tgt-int
608-
$(CROSS)$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
624+
$(ECHO) "Compile INT $<"
625+
$(Q)$(CROSS)$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
609626

610627
build/obj/cxx-tgt-int/%.o: build/gen/int/%.cc | build/obj/cxx-tgt-int
611-
$(CROSS)$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
628+
$(ECHO) "Compile INT $<"
629+
$(Q)$(CROSS)$(CXX) $(CXXFLAGS) $(INTCXX) -c -o $@ $<
612630

613631
$(COMPILER_TARGET_INT): $(COMPILER_TGT_INT_OBJ) | build/compiler
614-
$(CROSS)$(CXX) $(CXXFLAGS) $(INTCXX) -o $@ $^
632+
$(ECHO) "Linking target INT compiler"
633+
$(Q)$(CROSS)$(CXX) $(CXXFLAGS) $(INTCXX) -o $@ $^
615634

616635
build/obj/cxx-tgt-fp/%.o: src/compiler/%.cc | build/obj/cxx-tgt-fp
617-
$(CROSS)$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
636+
$(ECHO) "Compile FP $<"
637+
$(Q)$(CROSS)$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
618638

619639
build/obj/cxx-tgt-fp/%.o: build/gen/fp/%.cc | build/obj/cxx-tgt-fp
620-
$(CROSS)$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
640+
$(ECHO) "Compile FP $<"
641+
$(Q)$(CROSS)$(CXX) $(CXXFLAGS) $(FPCXX) -c -o $@ $<
621642

622643
$(COMPILER_TARGET_FP): $(COMPILER_TGT_FP_OBJ) | build/compiler
623-
$(CROSS)$(CXX) $(CXXFLAGS) $(FPCXX) -o $@ $^
644+
$(ECHO) "Linking target FP compiler"
645+
$(Q)$(CROSS)$(CXX) $(CXXFLAGS) $(FPCXX) -o $@ $^
624646

625647
$(CA65_TARGET): $(CA65_SRC) | build/compiler
626-
$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
648+
$(ECHO) "Compile target CA65"
649+
$(Q)$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
627650

628651
$(LD65_TARGET): $(LD65_SRC) | build/compiler
629-
$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
652+
$(ECHO) "Compile target LD65"
653+
$(Q)$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
630654

631655
$(AR65_TARGET): $(AR65_SRC) | build/compiler
632-
$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
656+
$(ECHO) "Compile target AR65"
657+
$(Q)$(CROSS)$(CC) $(CFLAGS) $(CFLAGS_CC65) -o $@ $^
633658
endif
634659

635660
# Generator for syntax file - 6502 version - FLOAT
636661
build/gen/fp/%.asm: src/%.syn $(ASYNT) | build/gen/fp
637-
$(ASYNT) $(SYNTFLAGS_ASM) $(SYNTFP) $< -o $@
662+
$(ECHO) "Creating FP parsing bytecode"
663+
$(Q)$(ASYNT) $(SYNTFLAGS_ASM) $(SYNTFP) $< -o $@
638664

639665
# Generator for syntax file - 6502 version - INTEGER
640666
build/gen/int/%.asm: src/%.syn $(ASYNT) | build/gen/int
641-
$(ASYNT) $(SYNTFLAGS_ASM) $< -o $@
667+
$(ECHO) "Creating INT parsing bytecode"
668+
$(Q)$(ASYNT) $(SYNTFLAGS_ASM) $< -o $@
642669

643670
# Generator for syntax file - C++ version - FLOAT
644671
build/gen/fp/%.cc build/gen/fp/%.h: src/%.syn $(CSYNT) | build/gen/fp
645-
$(CSYNT) $(SYNTFLAGS_CPP) $(SYNTFP) $< -o build/gen/fp/$*.cc
672+
$(ECHO) "Creating FP cross parser"
673+
$(Q)$(CSYNT) $(SYNTFLAGS_CPP) $(SYNTFP) $< -o build/gen/fp/$*.cc
646674

647675
# Generator for syntax file - C++ version - INTEGER
648676
build/gen/int/%.cc build/gen/int/%.h: src/%.syn $(CSYNT) | build/gen/int
649-
$(CSYNT) $(SYNTFLAGS_CPP) $< -o build/gen/int/$*.cc
677+
$(ECHO) "Creating INT cross parser"
678+
$(Q)$(CSYNT) $(SYNTFLAGS_CPP) $< -o build/gen/int/$*.cc
650679

651680
# Sets the version inside command line compiler source
652681
build/gen/cmdline-vers.bas: src/cmdline.bas version.mk
653-
LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< > $@
682+
$(Q)LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< > $@
654683

655684
# Main program file
656685
build/bin/fb.xex: $(IDE_OBJS_FP) $(COMMON_OBJS_FP) $(IDE_BAS_OBJS_FP) | build/bin $(LD65_HOST)
657-
$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
686+
$(ECHO) "Linking floating point IDE"
687+
$(Q)$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
658688

659689
build/bin/fbc.xex: $(CMD_OBJS_FP) $(COMMON_OBJS_FP) $(CMD_BAS_OBJS_FP) | build/bin $(LD65_HOST)
660-
$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
690+
$(ECHO) "Linking command line compiler"
691+
$(Q)$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
661692

662693
build/bin/fbi.xex: $(IDE_OBJS_INT) $(COMMON_OBJS_INT) $(IDE_BAS_OBJS_INT) | build/bin $(LD65_HOST)
663-
$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
694+
$(ECHO) "Linking integer IDE"
695+
$(Q)$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
664696

665697
# Compiled program files
666698
build/bin/%.xex: build/obj/fp/%.o $(LIB_FP) | build/bin $(LD65_HOST)
667-
$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
699+
$(ECHO) "Linking floating point $@"
700+
$(Q)$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
668701

669702
build/bin/%.xex: build/obj/int/%.o $(LIB_INT) | build/bin $(LD65_HOST)
670-
$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
703+
$(ECHO) "Linking integer $@"
704+
$(Q)$(LD65_HOST) $(LD65OPTS) -Ln $(@:.xex=.lbl) -vm -m $(@:.xex=.map) -o $@ $^
671705

672706
# Generates basic bytecode from source file
673707
build/gen/fp/%.asm: build/gen/%.bas $(COMPILER_HOST_FP) | build/gen/fp
674-
$(COMPILER_HOST_FP) $< $@
708+
$(ECHO) "Compiling FP BASIC $<"
709+
$(Q)$(COMPILER_HOST_FP) $< $@
675710

676711
build/gen/fp/%.asm: src/%.bas $(COMPILER_HOST_FP) | build/gen/fp
677-
$(COMPILER_HOST_FP) $< $@
712+
$(ECHO) "Compiling FP BASIC $<"
713+
$(Q)$(COMPILER_HOST_FP) $< $@
678714

679715
build/gen/int/%.asm: src/%.bas $(COMPILER_HOST_INT) | build/gen/int
680-
$(COMPILER_HOST_INT) $< $@
716+
$(ECHO) "Compiling INT BASIC $<"
717+
$(Q)$(COMPILER_HOST_INT) $< $@
681718

682719
build/gen/fp/%.asm: samples/fp/%.bas $(COMPILER_HOST_FP) | build/gen/fp
683-
$(COMPILER_HOST_FP) $< $@
720+
$(ECHO) "Compiling FP BASIC sample $<"
721+
$(Q)$(COMPILER_HOST_FP) $< $@
684722

685723
build/gen/int/%.asm: samples/int/%.bas $(COMPILER_HOST_INT) | build/gen/int
686-
$(COMPILER_HOST_INT) $< $@
724+
$(ECHO) "Compiling INT BASIC sample $<"
725+
$(Q)$(COMPILER_HOST_INT) $< $@
687726

688727
# Object file rules
689728
build/obj/fp/%.o: src/%.asm | build/obj/fp build/obj/fp/interp $(CA65_HOST)
690-
$(CA65_HOST) $(CA65OPTS) $(FPASM) -l $(@:.o=.lst) -o $@ $<
729+
$(ECHO) "Assembly FP $<"
730+
$(Q)$(CA65_HOST) $(CA65OPTS) $(FPASM) -l $(@:.o=.lst) -o $@ $<
691731

692732
build/obj/fp/%.o: build/gen/fp/%.asm | build/obj/fp $(CA65_HOST)
693-
$(CA65_HOST) $(CA65OPTS) $(FPASM) -l $(@:.o=.lst) -o $@ $<
733+
$(ECHO) "Assembly FP $<"
734+
$(Q)$(CA65_HOST) $(CA65OPTS) $(FPASM) -l $(@:.o=.lst) -o $@ $<
694735

695736
build/obj/int/%.o: src/%.asm | build/obj/int build/obj/int/interp $(CA65_HOST)
696-
$(CA65_HOST) $(CA65OPTS) $(INTASM) -l $(@:.o=.lst) -o $@ $<
737+
$(ECHO) "Assembly INT $<"
738+
$(Q)$(CA65_HOST) $(CA65OPTS) $(INTASM) -l $(@:.o=.lst) -o $@ $<
697739

698740
build/obj/int/%.o: build/gen/int/%.asm | build/obj/int $(CA65_HOST)
699-
$(CA65_HOST) $(CA65OPTS) $(INTASM) -l $(@:.o=.lst) -o $@ $<
741+
$(ECHO) "Assembly INT $<"
742+
$(Q)$(CA65_HOST) $(CA65OPTS) $(INTASM) -l $(@:.o=.lst) -o $@ $<
700743

701744
build/gen build/obj build/obj/fp build/obj/int build/obj/fp/interp build/obj/int/interp \
702745
build/gen/fp build/gen/int build/obj/cxx-fp build/obj/cxx-int build/obj/cxx-tgt-fp \
703746
build/obj/cxx-tgt-int build/bin build/disk build/compiler/asminc build/compiler build:
704-
mkdir -p $@
747+
$(Q)mkdir -p $@
705748

706749
# Library files
707750
$(LIB_FP): $(RT_OBJS_FP) $(COMMON_OBJS_FP) | build/compiler $(AR65_HOST)
708-
rm -f $@
709-
$(AR65_HOST) a $@ $^
751+
$(ECHO) "Creating FP library $@"
752+
$(Q)rm -f $@
753+
$(Q)$(AR65_HOST) a $@ $^
710754

711755
$(LIB_INT): $(RT_OBJS_INT) $(COMMON_OBJS_INT) | build/compiler $(AR65_HOST)
712-
rm -f $@
713-
$(AR65_HOST) a $@ $^
756+
$(ECHO) "Creating INT library $@"
757+
$(Q)rm -f $@
758+
$(Q)$(AR65_HOST) a $@ $^
714759

715760
# Runs the test suite
716761
.PHONY: test
717762
.PHONY: test-clean
718763
.PHONY: test-distclean
719764
test: $(COMPILER_COMMON) $(COMPILER_HOST) build/bin/fbc.xex
720-
$(MAKE) -C testsuite
765+
$(Q)$(MAKE) -C testsuite
721766

722767
test-clean:
723-
$(MAKE) -C testsuite clean
768+
$(Q)$(MAKE) -C testsuite clean
724769

725770
test-distclean:
726-
$(MAKE) -C testsuite distclean
771+
$(Q)$(MAKE) -C testsuite distclean
727772

728773
# Copy manual to compiler changing the version string.
729774
build/compiler/MANUAL.md: manual.md version.mk | build/compiler
730-
LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< > $@
775+
$(Q)LC_ALL=C sed 's/%VERSION%/$(VERSION)/' < $< > $@
731776

732777
# Copy other files to compiler folder
733778
build/compiler/%: compiler/% | build/compiler
734-
cp -f $< $@
779+
$(Q)cp -f $< $@
735780

736781
# Copy assembly include files from CC65
737782
build/compiler/asminc/%: cc65/asminc/% | build/compiler/asminc
738-
cp -f $< $@
783+
$(Q)cp -f $< $@
739784

740785
# Dependencies
741786
$(COMMON_OBJS_FP): src/deftok.inc

0 commit comments

Comments
 (0)