From 481748c279e0ea021d8a192c244db680a86874c1 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Sat, 7 Sep 2019 11:56:52 +0000 Subject: [PATCH 1/5] Make CI output Makefile commands This is good for debugging Makefiles on systems I don't have (eg. macOS) End users will not be affected by this, and CI provides a persistent log so clobbering isn't much of an issue. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4607e17b..90511425 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,8 @@ language: c sudo: required install: - ./.travis-deps.sh - - make - - sudo make install + - make Q= + - sudo make install Q= os: - linux - osx From 74673436a182e0fb4a6917d904f5cdfb7ef70ea4 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Sat, 7 Sep 2019 12:06:46 +0000 Subject: [PATCH 2/5] Separate LDFLAGS from CFLAGS --- Makefile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 9fec40b1..3dd6c18d 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,10 @@ CFLAGS := -g # Non-overridable CFLAGS REALCFLAGS := ${CFLAGS} ${WARNFLAGS} -std=c99 -D_POSIX_C_SOURCE=200809L \ -Iinclude -DBUILD_VERSION_STRING=\"${VERSION_STRING}\" +# Overridable LDFLAGS +LDFLAGS := +# Non-overridable LDFLAGS +REALLDFLAGS := ${LDFLAGS} ${WARNFLAGS} YFLAGS := LFLAGS := --nounistd @@ -96,16 +100,16 @@ rgbgfx_obj := \ src/version.o rgbasm: ${rgbasm_obj} - $Q${CC} ${REALCFLAGS} -o $@ ${rgbasm_obj} -lm + $Q${CC} ${REALLDFLAGS} -o $@ ${rgbasm_obj} -lm rgblink: ${rgblink_obj} - $Q${CC} ${REALCFLAGS} -o $@ ${rgblink_obj} + $Q${CC} ${REALLDFLAGS} -o $@ ${rgblink_obj} rgbfix: ${rgbfix_obj} - $Q${CC} ${REALCFLAGS} -o $@ ${rgbfix_obj} + $Q${CC} ${REALLDFLAGS} -o $@ ${rgbfix_obj} -rgbgfx: ${rgbgfx_obj} - $Q${CC} ${REALCFLAGS} ${PNGLDFLAGS} -o $@ ${rgbgfx_obj} ${PNGLDLIBS} +rgbgfx: ${rgblink_obj} + $Q${CC} ${REALLDFLAGS} ${PNGLDFLAGS} -o $@ ${rgblink_obj} ${PNGLDLIBS} # Rules to process files From 2fe4521a966883f6d06f4df2170ff96f82c1f2c9 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Sat, 7 Sep 2019 12:09:08 +0000 Subject: [PATCH 3/5] Remove locallex.o reference The file was deleted in 8e88659, finish eliminating it --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3dd6c18d..c07af573 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,7 @@ rgbasm_obj := \ src/version.o src/asm/asmy.h: src/asm/asmy.c -src/asm/locallex.o src/asm/globlex.o src/asm/lexer.o src/asm/constexpr.o: src/asm/asmy.h +src/asm/globlex.o src/asm/lexer.o src/asm/constexpr.o: src/asm/asmy.h rgblink_obj := \ src/link/assign.o \ From 59023062712deb0becdb4af588afa242fdea76a0 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Sat, 7 Sep 2019 12:14:56 +0000 Subject: [PATCH 4/5] Have `make clean` delete all generated .o files Especially important if the file structure changes, to avoid leaving stale object files in non-fresh repos. --- Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index c07af573..b3e9343b 100644 --- a/Makefile +++ b/Makefile @@ -129,12 +129,13 @@ rgbgfx: ${rgblink_obj} # for the html documentation. clean: - $Q${RM} rgbasm rgbasm.exe ${rgbasm_obj} - $Q${RM} rgblink rgblink.exe ${rgblink_obj} - $Q${RM} rgbfix rgbfix.exe ${rgbfix_obj} - $Q${RM} rgbgfx rgbgfx.exe ${rgbgfx_obj} + $Q${RM} rgbasm rgbasm.exe src/asm/*.o + $Q${RM} rgblink rgblink.exe src/link/*.o + $Q${RM} rgbfix rgbfix.exe src/fix/*.o + $Q${RM} rgbgfx rgbgfx.exe src/gfx/*.o $Q${RM} src/asm/asmy.c src/asm/asmy.h $Q${RM} src/link/lexer.c src/link/parser.c src/link/parser.h + $Q${RM} src/extern/*.o # Target used to remove all html files generated by the wwwman target From 1288737c0d195243b63fcbdd4c3b9a8ba3ce21ce Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Sat, 7 Sep 2019 12:19:04 +0000 Subject: [PATCH 5/5] Clean up suffix rules Generate .c files from .l files instead of directly a .o Improve yacc and lex header generation dependency --- Makefile | 24 +++++++++++++++--------- src/link/.gitignore | 2 ++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index b3e9343b..d95b6013 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,9 @@ # SPDX-License-Identifier: MIT # +.SUFFIXES: +.SUFFIXES: .h .l .y .c .o + # User-defined variables Q := @ @@ -66,7 +69,6 @@ rgbasm_obj := \ src/extern/utf8decoder.o \ src/version.o -src/asm/asmy.h: src/asm/asmy.c src/asm/globlex.o src/asm/lexer.o src/asm/constexpr.o: src/asm/asmy.h rgblink_obj := \ @@ -84,7 +86,6 @@ rgblink_obj := \ src/extern/err.o \ src/version.o -src/link/parser.h: src/link/parser.c src/link/lexer.o: src/link/parser.h rgbfix_obj := \ @@ -108,19 +109,24 @@ rgblink: ${rgblink_obj} rgbfix: ${rgbfix_obj} $Q${CC} ${REALLDFLAGS} -o $@ ${rgbfix_obj} -rgbgfx: ${rgblink_obj} - $Q${CC} ${REALLDFLAGS} ${PNGLDFLAGS} -o $@ ${rgblink_obj} ${PNGLDLIBS} +rgbgfx: ${rgbgfx_obj} + $Q${CC} ${REALLDFLAGS} ${PNGLDFLAGS} -o $@ ${rgbgfx_obj} ${PNGLDLIBS} # Rules to process files +# We want the yacc and lex invocations to pass through our rules +.y.o: +.l.o: + +# yacc- and lex-generated C files have an accompanying header +.c.h: + $Qtouch $@ + .y.c: $Q${YACC} -d ${YFLAGS} -o $@ $< -.l.o: - $Q${RM} $*.c - $Q${LEX} ${LFLAGS} -o $*.c $< - $Q${CC} ${REALCFLAGS} -c -o $@ $*.c - $Q${RM} $*.c +.l.c: + $Q${LEX} ${LFLAGS} -o $@ $< .c.o: $Q${CC} ${REALCFLAGS} ${PNGCFLAGS} -c -o $@ $< diff --git a/src/link/.gitignore b/src/link/.gitignore index d7814e41..1513db68 100644 --- a/src/link/.gitignore +++ b/src/link/.gitignore @@ -1,2 +1,4 @@ parser.c parser.h +lexer.c +lexer.h