From fb522be854975d14de5d111559d7161dcaee2470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Thu, 4 Feb 2021 18:37:43 +0000 Subject: [PATCH] Add flex 2.6.4. --- README.md | 18 ++++++++------ rootfs.sh | 6 ++--- sysa/flex-2.5.11/flex-2.5.11.sh | 9 +++---- sysa/flex-2.5.11/mk/main2.mk | 28 --------------------- sysa/flex-2.5.14/flex-2.5.14.sh | 6 ----- sysa/flex-2.5.14/mk/main.mk | 29 ---------------------- sysa/flex-2.5.14/src/.placeholder | 0 sysa/flex-2.6.4/flex-2.6.4.sh | 19 ++++++++++++++ sysa/flex-2.6.4/mk/main.mk | 41 +++++++++++++++++++++++++++++++ sysa/run.sh | 8 +++--- 10 files changed, 80 insertions(+), 84 deletions(-) delete mode 100644 sysa/flex-2.5.11/mk/main2.mk delete mode 100755 sysa/flex-2.5.14/flex-2.5.14.sh delete mode 100644 sysa/flex-2.5.14/mk/main.mk delete mode 100644 sysa/flex-2.5.14/src/.placeholder create mode 100755 sysa/flex-2.6.4/flex-2.6.4.sh create mode 100644 sysa/flex-2.6.4/mk/main.mk diff --git a/README.md b/README.md index f34af0f..21d8173 100644 --- a/README.md +++ b/README.md @@ -262,8 +262,8 @@ cope here. #### Part 21: m4 1.4 -`m4` is the first piece of software we need in the autotools suite. It allows -macros to be defined and files to be generated from those macros. +`m4` is the first piece of software we need in the autotools suite and flex 2.6.4. +It allows macros to be defined and files to be generated from those macros. #### Part 22: flex 2.5.11 @@ -274,11 +274,7 @@ first flex 2.5.11 is compiled, with its scanner definition manually modified so it can be processed by lex for the Heirloom project (the required modifications are mostly syntactical, plus a few workarounds to avoid some flex advanced features). -#### Part 23 flex 2.5.14 - -Then we recompile unpatched `flex` using its own lexer. - -#### Part 24 musl 1.1.24 +#### Part 23 musl 1.1.24 `musl` is a C standard library that is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety. `musl` is used by some distributions of GNU/Linux @@ -289,8 +285,14 @@ newer or more complex programs. we replace all weak symbols with strong symbols and will patch `tcc` in the next step to ignore duplicate symbols. -#### Part 25 tcc 0.9.27 (musl) +#### Part 24 tcc 0.9.27 (musl) We recompile `tcc` against musl. This is a two stage process. First we build tcc-0.9.27 that itself links to Mes C library but produces binaries linked to musl. Then we recompile newly produced tcc with itself. Interestingly, tcc-0.9.27 linked against musl is self hosting. + +#### Part 25 flex 2.6.14 + +We recompile unpatched GNU `flex` using older flex 2.5.11. This is again two stage process, +first compile flex using scanner generated by old flex, then recompile scan.l using the new version +of flex to remove any buggy artificats from the old flex. diff --git a/rootfs.sh b/rootfs.sh index 2d2cc45..e39d40c 100755 --- a/rootfs.sh +++ b/rootfs.sh @@ -136,12 +136,12 @@ get_file https://ftp.gnu.org/gnu/m4/m4-1.4.tar.gz # flex 2.5.11 get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.11.tar.gz -# flex 2.5.14 -get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.14.tar.gz - # musl 1.1.24 get_file https://musl.libc.org/releases/musl-1.1.24.tar.gz +# flex 2.6.4 +get_file https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz + # General cleanup find tmp -name .git -exec rm -rf \; diff --git a/sysa/flex-2.5.11/flex-2.5.11.sh b/sysa/flex-2.5.11/flex-2.5.11.sh index e96a2ce..c185150 100755 --- a/sysa/flex-2.5.11/flex-2.5.11.sh +++ b/sysa/flex-2.5.11/flex-2.5.11.sh @@ -1,13 +1,10 @@ # When we rebuild flex it no longer needs patching # and can use simplified makefile src_prepare() { - if test -d /lex; then - default_src_prepare - else - cp ../../mk/main2.mk Makefile - fi + default_src_prepare + touch config.h - rm parse.c parse.h scan.c + rm parse.c parse.h scan.c skel.c } src_install() { diff --git a/sysa/flex-2.5.11/mk/main2.mk b/sysa/flex-2.5.11/mk/main2.mk deleted file mode 100644 index 0f33808..0000000 --- a/sysa/flex-2.5.11/mk/main2.mk +++ /dev/null @@ -1,28 +0,0 @@ -CFLAGS = -DVERSION=\"2.5.11\" - -all: flex - -flex: ccl.o dfa.o ecs.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o - tcc -o $@ $^ - -%.o: %.c - tcc -g -c $(CFLAGS) -o $@ $< - -scan.o: parse.h -yylex.o: parse.h - -parse.c parse.h: parse.y - yacc -d parse.y - mv y.tab.h parse.h - mv y.tab.c parse.c - -scan.c: scan.l - flex scan.l - mv lex.yy.c scan.c - -skel.c: mkskel.sh flex.skl - /bin/sh ./mkskel.sh ./flex.skl > skel.c - -install: all - install flex $(PREFIX)/bin - ln -sf $(PREFIX)/bin/flex $(PREFIX)/bin/lex diff --git a/sysa/flex-2.5.14/flex-2.5.14.sh b/sysa/flex-2.5.14/flex-2.5.14.sh deleted file mode 100755 index edf31de..0000000 --- a/sysa/flex-2.5.14/flex-2.5.14.sh +++ /dev/null @@ -1,6 +0,0 @@ -src_prepare() { - default_src_prepare - - touch config.h - rm parse.c parse.h scan.c -} diff --git a/sysa/flex-2.5.14/mk/main.mk b/sysa/flex-2.5.14/mk/main.mk deleted file mode 100644 index caf85a2..0000000 --- a/sysa/flex-2.5.14/mk/main.mk +++ /dev/null @@ -1,29 +0,0 @@ -CFLAGS = -I . \ - -DVERSION=\"2.5.14\" - -all: flex - -flex: ccl.o dfa.o ecs.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o - tcc -o $@ $^ - -%.o: %.c - tcc -g -c $(CFLAGS) -o $@ $< - -scan.o: parse.h -yylex.o: parse.h - -parse.c parse.h: parse.y - yacc -d parse.y - mv y.tab.h parse.h - mv y.tab.c parse.c - -scan.c: scan.l - flex scan.l - mv lex.yy.c scan.c - -skel.c: mkskel.sh flex.skl - /bin/sh ./mkskel.sh ./flex.skl > skel.c - -install: all - install flex $(PREFIX)/bin - ln -sf $(PREFIX)/bin/flex $(PREFIX)/bin/lex diff --git a/sysa/flex-2.5.14/src/.placeholder b/sysa/flex-2.5.14/src/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/sysa/flex-2.6.4/flex-2.6.4.sh b/sysa/flex-2.6.4/flex-2.6.4.sh new file mode 100755 index 0000000..9624d4f --- /dev/null +++ b/sysa/flex-2.6.4/flex-2.6.4.sh @@ -0,0 +1,19 @@ +src_prepare() { + default_src_prepare + + mv Makefile src/ + touch src/config.h + rm src/parse.c src/parse.h src/scan.c src/skel.c +} + +src_compile() { + cd src + default_src_compile + cd .. +} + +src_install() { + cd src + default_src_install + cd .. +} diff --git a/sysa/flex-2.6.4/mk/main.mk b/sysa/flex-2.6.4/mk/main.mk new file mode 100644 index 0000000..2064dab --- /dev/null +++ b/sysa/flex-2.6.4/mk/main.mk @@ -0,0 +1,41 @@ +CC := tcc +CFLAGS = -DVERSION=\"2.6.4\" \ + -DM4=\"m4\" \ + -DHAVE_LIMITS_H=1 + +all: flex + +flex: buf.o ccl.o dfa.o ecs.o filter.o gen.o main.o misc.o nfa.o options.o parse.o regex.o scan.o scanflags.o scanopt.o skel.o sym.o tables.o tables_shared.o tblcmp.o yylex.o + $(CC) -o $@ $^ -lm + +flex-tmp: buf.o ccl.o dfa.o ecs.o filter.o gen.o main.o misc.o nfa.o options.o parse.o regex.o scan-tmp.o scanflags.o scanopt.o skel.o sym.o tables.o tables_shared.o tblcmp.o yylex.o + $(CC) -o $@ $^ -lm + +%.o: %.c + $(CC) $(CFLAGS) -g -c -I. -o $@ $< + +main.o: parse.h +scan.o: parse.h +scan-tmp.o: parse.h +yylex.o: parse.h + +parse.c parse.h: parse.y + yacc -d parse.y + mv y.tab.h parse.h + mv y.tab.c parse.c + echo 'extern int yylval;' >> parse.h + +scan-tmp.c: scan.l + flex scan.l + mv lex.yy.c scan-tmp.c + +scan.c: scan.l flex-tmp + ./flex-tmp scan.l + mv lex.yy.c scan.c + +skel.c: mkskel.sh flex.skl + /bin/sh ./mkskel.sh . m4 2.6.4 > skel.c + +install: all + install flex $(PREFIX)/bin + ln -sf $(PREFIX)/bin/flex $(PREFIX)/bin/lex diff --git a/sysa/run.sh b/sysa/run.sh index f557e75..6e3d750 100755 --- a/sysa/run.sh +++ b/sysa/run.sh @@ -16,12 +16,12 @@ build m4-1.4 build flex-2.5.11 # Part 23 -build flex-2.5.14 - -# Part 24 build musl-1.1.24 -# Part 25 +# Part 24 build tcc-0.9.27 tcc-musl.sh +# Part 25 +build flex-2.6.4 + echo "Bootstrapping completed."