diff --git a/Makefile b/Makefile index 3159aeb81..38c2248ab 100644 --- a/Makefile +++ b/Makefile @@ -39,9 +39,9 @@ LDFLAGS ?= REALLDFLAGS := ${LDFLAGS} ${WARNFLAGS} \ -DBUILD_VERSION_STRING=\"${VERSION_STRING}\" -YFLAGS ?= -Wall +# Wrapper around bison that passes flags depending on what the version supports +BISON := src/bison.sh -BISON := bison RM := rm -rf # Used for checking pull requests @@ -138,19 +138,7 @@ src/asm/parser.hpp: src/asm/parser.cpp $Qtouch $@ src/asm/parser.cpp: src/asm/parser.y - $QDEFS=; \ - add_flag(){ \ - if src/check_bison_ver.sh $$1 $$2; then \ - DEFS="-D$$3 $$DEFS"; \ - fi \ - }; \ - add_flag 3 5 api.token.raw=true; \ - add_flag 3 6 parse.error=detailed; \ - add_flag 3 0 parse.error=verbose; \ - add_flag 3 0 parse.lac=full; \ - add_flag 3 0 lr.type=ielr; \ - echo "DEFS=$$DEFS"; \ - ${BISON} $$DEFS -d ${YFLAGS} -o $@ $< + $Q${BISON} $@ $< # Only RGBGFX uses libpng (POSIX make doesn't support pattern rules to cover all these) src/gfx/main.o: src/gfx/main.cpp @@ -244,12 +232,12 @@ mingw32: $Q${MAKE} all test/gfx/randtilegen test/gfx/rgbgfx_test \ CXX=i686-w64-mingw32-g++ \ CXXFLAGS="-O3 -flto -DNDEBUG -static-libgcc" \ - BISON=bison PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=/usr/i686-w64-mingw32 pkg-config" + PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=/usr/i686-w64-mingw32 pkg-config" mingw64: $Q${MAKE} all test/gfx/randtilegen test/gfx/rgbgfx_test \ CXX=x86_64-w64-mingw32-g++ \ - BISON=bison PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-w64-mingw32 pkg-config" + PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=/usr/x86_64-w64-mingw32 pkg-config" wine-shim: $Qecho '#!/usr/bin/env bash' > rgbshim.sh diff --git a/src/bison.sh b/src/bison.sh new file mode 100755 index 000000000..e70608015 --- /dev/null +++ b/src/bison.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -e + +BISONFLAGS=-Wall + +readonly BISON_VER=$(bison -V) +add_flag () { + if awk <<<"$BISON_VER" -v major="$1" -v minor="$2" ' + /^bison.*[0-9]+(\.[0-9]+)(\.[0-9]+)?$/ { + match($0, /[0-9]+(\.[0-9]+)(\.[0-9]+)?$/); + split(substr($0, RSTART), ver, "."); + if (ver[1] == major && ver[2] >= minor) { exit 0 } else { exit 1 } + }'; then + BISONFLAGS="-D$3 $BISONFLAGS" + fi +} + +add_flag 3 5 api.token.raw=true +add_flag 3 6 parse.error=detailed +add_flag 3 0 parse.error=verbose +add_flag 3 0 parse.lac=full +add_flag 3 0 lr.type=ielr + +echo "BISONFLAGS=$BISONFLAGS" + +exec bison $BISONFLAGS -d -o "$1" "$2" diff --git a/src/check_bison_ver.sh b/src/check_bison_ver.sh deleted file mode 100755 index 2c7134df4..000000000 --- a/src/check_bison_ver.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -bison -V | awk -v major="$1" -v minor="$2" ' -/^bison.*[0-9]+(\.[0-9]+)(\.[0-9]+)?$/ { - match($0, /[0-9]+(\.[0-9]+)(\.[0-9]+)?$/); - split(substr($0, RSTART), ver, "."); - if (ver[1] == major && ver[2] >= minor) { exit 0 } else { exit 1 } -}' diff --git a/src/link/main.cpp b/src/link/main.cpp index 6b5753e26..e487eeb6f 100644 --- a/src/link/main.cpp +++ b/src/link/main.cpp @@ -360,7 +360,7 @@ int main(int argc, char *argv[]) break; case 'l': if (linkerScriptName) - warnx("Overriding linkerscript %s", musl_optarg); + warnx("Overriding linker script %s", musl_optarg); linkerScriptName = musl_optarg; break; case 'M': @@ -368,12 +368,12 @@ int main(int argc, char *argv[]) break; case 'm': if (mapFileName) - warnx("Overriding mapfile %s", musl_optarg); + warnx("Overriding map file %s", musl_optarg); mapFileName = musl_optarg; break; case 'n': if (symFileName) - warnx("Overriding symfile %s", musl_optarg); + warnx("Overriding sym file %s", musl_optarg); symFileName = musl_optarg; break; case 'O': @@ -504,7 +504,6 @@ int main(int argc, char *argv[]) reportErrors(); } - // then process them, obj_DoSanityChecks(); if (nbErrors != 0)