5bb9250e0a
The most awkward bit in this patch is the bootstrapping of m4: We can't simply use the host version of m4 since that is not compatible with the flags passed by lex (at least on macOS, possibly also on Linux). Therefore we need to bootstrap m4, but lex needs m4 to build and m4 also depends on lex (which needs m4 to generate any files). To work around this cyclic dependency we can build a bootstrap version of m4 (with pre-generated files) then use that to build the real m4. This patch also changes the xz/unxz/dd tools to always use the host version since the version in the source tree cannot easily be bootstrapped on macOS or Linux. Reviewed By: brooks, imp (earlier version) Differential Revision: https://reviews.freebsd.org/D25992
35 lines
769 B
Makefile
35 lines
769 B
Makefile
# $OpenBSD: Makefile,v 1.13 2014/05/12 19:11:19 espie Exp $
|
|
# $FreeBSD$
|
|
|
|
# -DEXTENDED
|
|
# if you want the paste & spaste macros.
|
|
|
|
.include <src.opts.mk>
|
|
|
|
PROG= m4
|
|
CFLAGS+=-DEXTENDED -I${.CURDIR} -I${SRCTOP}/lib/libopenbsd
|
|
LIBADD= m openbsd
|
|
|
|
NO_WMISSING_VARIABLE_DECLARATIONS=
|
|
|
|
SRCS= eval.c expr.c look.c main.c misc.c gnum4.c trace.c parser.y
|
|
.if target(bootstrap_m4_tokenizer)
|
|
# When crossbuilding on non-FreeBSD we need to first build m4 with pre-generated
|
|
# tokenizer files and the build the real m4 once we have lex+yacc.
|
|
SRCS+= tokenizer.c
|
|
.else
|
|
SRCS+= tokenizer.l
|
|
.endif
|
|
|
|
GENFILES= tokenizer.c parser.c parser.h
|
|
WARNS= 3
|
|
|
|
tokenizer.o: parser.h
|
|
|
|
CLEANFILES+= parser.c parser.h tokenizer.o tokenizer.c
|
|
|
|
HAS_TESTS=
|
|
SUBDIR.${MK_TESTS}+= tests
|
|
|
|
.include <bsd.prog.mk>
|