(update_file_1): Do set_command_state (FILE, cs_not_started) only if old
[make.git] / build.sh.in
blobb789c6233b3ac2b8e1622b3e678b8a4d9f6cf535
1 #!/bin/sh
3 # Shell script to build GNU Make in the absence of any `make' program.
5 # Copyright (C) 1993, 1994 Free Software Foundation, Inc.
6 # This file is part of GNU Make.
7 #
8 # GNU Make is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2, or (at your option)
11 # any later version.
13 # GNU Make is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with GNU Make; see the file COPYING. If not, write to
20 # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22 # See Makefile.in for comments describing these variables.
24 srcdir='@srcdir@'
25 CC='@CC@'
26 CFLAGS='@CFLAGS@'
27 CPPFLAGS='@CPPFLAGS@'
28 LDFLAGS='@LDFLAGS@'
29 defines='@DEFS@ -DLIBDIR="${libdir}" -DINCLUDEDIR="${includedir}"'
30 ALLOCA='@ALLOCA@'
31 LOADLIBES='@LIBS@'
32 extras='@LIBOBJS@'
33 REMOTE='@REMOTE@'
35 # Common prefix for machine-independent installed files.
36 prefix=@prefix@
37 # Common prefix for machine-dependent installed files.
38 exec_prefix=@exec_prefix@
39 # Directory to find libraries in for `-lLIB'.
40 libdir=${exec_prefix}/lib
41 # Directory to search by default for included makefiles.
42 includedir=${prefix}/include
44 # Exit as soon as any command fails.
45 set -e
47 # These are all the objects we need to link together.
48 objs="commands.o job.o dir.o file.o misc.o main.o read.o remake.o rule.o implicit.o default.o variable.o expand.o function.o vpath.o version.o ar.o arscan.o signame.o getopt.o getopt1.o glob/glob.o glob/fnmatch.o remote-${REMOTE}.o ${extras} ${ALLOCA}"
50 # Compile the source files into those objects.
51 for file in `echo ${objs} | sed 's/\.o/.c/g'`; do
52 echo compiling ${file}...
53 $CC $CPPFLAGS $CFLAGS $defines -c \
54 -I. -I${srcdir} -I${srcdir}/glob ${srcdir}/$file
55 done
57 # The object files were actually all put in the current directory.
58 # Remove the source directory names from the list.
59 srcobjs="$objs"
60 objs=
61 for obj in $srcobjs; do
62 objs="$objs `basename $obj`"
63 done
65 # Link all the objects together.
66 echo linking make...
67 $CC $LDFLAGS $objs $LOADLIBES -o make.new
68 echo done
69 mv -f make.new make