xref: /freebsd/contrib/bmake/make-bootstrap.sh.in (revision 4996ebdb720042239a197ebec2d265cdfdf1bbf3)
1#!/bin/sh
2
3set -e
4
5prefix=@prefix@
6srcdir=@srcdir@
7
8DEFAULT_SYS_PATH="@default_sys_path@"
9
10case "@use_meta@" in
11yes) XDEFS="-DUSE_META ${XDEFS}";;
12esac
13
14CC="@CC@"
15CFLAGS="@CFLAGS@ -I. -I${srcdir} @DEFS@ @CPPFLAGS@ -DMAKE_NATIVE ${XDEFS} -DBMAKE_PATH_MAX=@bmake_path_max@"
16
17MAKE_VERSION=@_MAKE_VERSION@
18
19MDEFS="-DMAKE_VERSION=\"$MAKE_VERSION\" \
20-D@force_machine@MACHINE=\"@machine@\" \
21-D@force_machine_arch@MACHINE_ARCH=\"@machine_arch@\" \
22-D@force_make_os@MAKE_OS=\"@make_os@\" \
23-D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\" \
24-DMAKE_SAVE_DOLLARS_DEFAULT=\"@save_dollars@\" \
25"
26
27
28LDFLAGS="@LDFLAGS@"
29LIBS="@LIBS@"
30
31toUpper() {
32    ${TR:-tr} abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
33}
34
35do_compile2() {
36	obj="$1"; shift
37	src="$1"; shift
38	echo ${CC} -c ${CFLAGS} "$@" -o "$obj" "$src"
39	${CC} -c ${CFLAGS} "$@" -o "$obj" "$src"
40}
41
42do_compile() {
43	obj="$1"; shift
44	case "$1" in
45	*.c) src=$1; shift;;
46	*) src=`basename "$obj" .o`.c;;
47	esac
48
49	for d in "$srcdir" "$srcdir/lst.lib"
50	do
51		test -s "$d/$src" || continue
52
53		do_compile2 "$obj" "$d/$src" "$@" || exit 1
54		return
55	done
56	echo "Unknown object file '$obj'" >&2
57	exit 1
58}
59
60do_link() {
61	output="$1"; shift
62	echo ${CC} ${LDSTATIC} ${LDFLAGS} -o "$output" "$@" ${LIBS}
63	${CC} ${LDSTATIC} ${LDFLAGS} -o "$output" "$@" ${LIBS}
64}
65
66BASE_OBJECTS="arch.o buf.o compat.o cond.o dir.o for.o hash.o \
67lst.o make.o make_malloc.o metachar.o parse.o sigcompat.o str.o \
68suff.o targ.o trace.o var.o util.o"
69
70LIB_OBJECTS="@LIBOBJS@"
71
72do_compile main.o ${MDEFS}
73
74for o in ${BASE_OBJECTS} ${LIB_OBJECTS}
75do
76	do_compile "$o"
77done
78
79case "@use_meta@" in
80yes)
81	case "@use_filemon@" in
82	no) MDEFS=;;
83	*)
84		MDEFS="-DUSE_FILEMON -DUSE_FILEMON_`echo @use_filemon@ | toUpper`"
85		case "@use_filemon@,@filemon_h@" in
86		dev,*/filemon.h) FDEFS="-DHAVE_FILEMON_H -I`dirname @filemon_h@`";;
87		*) FDEFS=;;
88		esac
89		do_compile filemon_@use_filemon@.o filemon/filemon_@use_filemon@.c ${FDEFS}
90		BASE_OBJECTS="filemon_@use_filemon@.o $BASE_OBJECTS"
91		;;
92	esac
93	do_compile meta.o ${MDEFS}
94	BASE_OBJECTS="meta.o ${BASE_OBJECTS}"
95	;;
96esac
97do_compile job.o ${MDEFS}
98
99do_link bmake main.o job.o ${BASE_OBJECTS} ${LST_OBJECTS} ${LIB_OBJECTS}
100