Update m4 to 1.4.7

This commit is contained in:
Andrius Štikonas 2021-02-07 15:39:42 +00:00
parent b88fbd1a2d
commit c9a390d67c
6 changed files with 66 additions and 52 deletions

View File

@ -254,13 +254,7 @@ Bash ships with a bison pre-generated file here which we delete. Unfortunately,
we have not bootstrapped bison but fortunately for us, heirloom yacc is able to we have not bootstrapped bison but fortunately for us, heirloom yacc is able to
cope here. cope here.
#### Part 19: m4 1.4.4 #### Part 19: flex 2.5.11
`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 20: flex 2.5.11
`flex` is a tool for generating lexers or scanners: programs that recognize `flex` is a tool for generating lexers or scanners: programs that recognize
lexical patters. lexical patters.
@ -271,7 +265,7 @@ that it can be processed by lex for the Heirloom project (the required
modifications are mostly syntactical, plus a few workarounds to avoid some flex modifications are mostly syntactical, plus a few workarounds to avoid some flex
advanced features). advanced features).
#### Part 21: musl 1.1.24 #### Part 20: musl 1.1.24
`musl` is a C standard library that is lightweight, fast, simple, free, and `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` strives to be correct in the sense of standards-conformance and safety. `musl`
@ -283,13 +277,19 @@ complex programs.
patches. In particular, we replace all weak symbols with strong symbols and will patches. In particular, we replace all weak symbols with strong symbols and will
patch `tcc` in the next step to ignore duplicate symbols. patch `tcc` in the next step to ignore duplicate symbols.
#### Part 22: tcc 0.9.27 (musl) #### Part 21: tcc 0.9.27 (musl)
We recompile `tcc` against musl. This is a two stage process. First we build 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 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, musl. Then we recompile newly produced tcc with itself. Interestingly,
tcc-0.9.27 linked against musl is self hosting. tcc-0.9.27 linked against musl is self hosting.
#### Part 22: m4 1.4.7
`m4` is the first piece of software we need in the autotools suite, flex
2.6.4 and bison. It allows macros to be defined and files to be generated from those
macros.
#### Part 23: flex 2.6.14 #### Part 23: flex 2.6.14
We recompile unpatched GNU `flex` using older flex 2.5.11. This is again a two We recompile unpatched GNU `flex` using older flex 2.5.11. This is again a two

View File

@ -124,15 +124,15 @@ get_file http://downloads.sourceforge.net/project/heirloom/heirloom-devtools/070
# bash 2.05b # bash 2.05b
get_file https://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz get_file https://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
# m4 1.4.4
get_file https://ftp.gnu.org/gnu/m4/m4-1.4.4.tar.gz
# flex 2.5.11 # flex 2.5.11
get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.11.tar.gz get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.11.tar.gz
# musl 1.1.24 # musl 1.1.24
get_file https://musl.libc.org/releases/musl-1.1.24.tar.gz get_file https://musl.libc.org/releases/musl-1.1.24.tar.gz
# m4 1.4.7
get_file https://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.gz
# flex 2.6.4 # flex 2.6.4
get_file https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz get_file https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz

View File

@ -103,13 +103,13 @@ default_src_configure() {
# Default function for compiling source. It simply runs make without any parameters. # Default function for compiling source. It simply runs make without any parameters.
default_src_compile() { default_src_compile() {
make make -f Makefile
} }
# Default installing function. PREFIX should be set by run.sh script. # Default installing function. PREFIX should be set by run.sh script.
# Note that upstream makefiles might ignore PREFIX and have to be configured in configure stage. # Note that upstream makefiles might ignore PREFIX and have to be configured in configure stage.
default_src_install() { default_src_install() {
make install PREFIX="${PREFIX}" make -f Makefile install PREFIX="${PREFIX}"
} }
# Check if bash function exists # Check if bash function exists

View File

@ -1,33 +0,0 @@
PRODUCT = m4
VERSION = 1.4
CC = tcc
LD = tcc
AR = tcc -ar
CFLAGS = -I lib \
-DPRODUCT=\"$(PRODUCT)\" \
-DVERSION=\"$(VERSION)\" \
-DHAVE_SIGNAL_H=1 \
-DPACKAGE_STRING=\"GNU\ M4\ 1.4.4\"
LDFLAGS = -L . -lm4
.PHONY: all
LIB_SRC = regex getopt getopt1 error obstack xmalloc xstrdup
LIB_OBJECTS = $(addprefix lib/, $(addsuffix .o, $(LIB_SRC)))
M4_SRC = m4 builtin debug eval format freeze input macro output path symtab
M4_OBJ = $(addprefix src/, $(addsuffix .o, $(M4_SRC)))
all: m4
m4: libm4.a $(M4_OBJ)
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
libm4.a: $(LIB_OBJECTS)
$(AR) cr $@ $^
install: all
install m4 $(PREFIX)/bin

47
sysa/m4-1.4.7/mk/main.mk Normal file
View File

@ -0,0 +1,47 @@
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-License-Identifier: GPL-3.0-or-later
CC = tcc
AR = tcc -ar
CFLAGS = -I lib \
-DVERSION=\"1.4.7\" \
-DPACKAGE_BUGREPORT=\"bug-m4@gnu.org\" \
-DPACKAGE_STRING=\"GNU\ M4\ 1.4.7\" \
-DPACKAGE=\"m4\" \
-DPACKAGE_NAME=\"GNU\ M4\" \
-DHAVE_STDINT_H=1 \
-DHAVE___FPENDING=1 \
-DHAVE_DECL___FPENDING=1 \
-D_GNU_SOURCE=1 \
-D_GL_UNUSED= \
-D__getopt_argv_const=const \
-DSYSCMD_SHELL=\"/bin/sh\"
LDFLAGS = -L . -lm4
.PHONY: all
LIB_SRC = cloexec close-stream dup-safer error exitfail fd-safer fopen-safer getopt getopt1 mkstemp-safer regex obstack tmpfile-safer verror xalloc-die xasprintf xmalloc xvasprintf
LIB_OBJECTS = $(addprefix lib/, $(addsuffix .o, $(LIB_SRC)))
M4_SRC = m4 builtin debug eval format freeze input macro output path symtab
M4_OBJ = $(addprefix src/, $(addsuffix .o, $(M4_SRC)))
all: src/m4
src/m4: libm4.a $(M4_OBJ)
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
libm4.a: $(LIB_OBJECTS)
$(AR) cr $@ $^
%.o : %.c lib/config.h
$(CC) -c -o $@ $< $(CFLAGS)
lib/config.h:
touch lib/config.h
install: all
install src/m4 $(PREFIX)/bin

View File

@ -10,17 +10,17 @@ set -e
export PREFIX=/after export PREFIX=/after
# Part 19 # Part 19
build m4-1.4.4
# Part 20
build flex-2.5.11 build flex-2.5.11
# Part 21 # Part 20
build musl-1.1.24 build musl-1.1.24
# Part 22 # Part 21
build tcc-0.9.27 tcc-musl.sh build tcc-0.9.27 tcc-musl.sh
# Part 22
build m4-1.4.7
# Part 23 # Part 23
build flex-2.6.4 build flex-2.6.4