# -*-Makefile-*- for GNU make on Amiga
#
# NOTE: If you have no 'make' program at all to process this makefile, run
# 'build.sh' instead.
#
# Copyright (C) 1995-2016 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program.  If not, see <http://www.gnu.org/licenses/>.

#
#	Makefile for GNU Make
#

CC = sc
RM = delete

CFLAGS =
CPPFLAGS =
LDFLAGS =

# Define these for your system as follows:
#	-DNO_ARCHIVES		To disable 'ar' archive support.
#	-DNO_FLOAT		To avoid using floating-point numbers.
#	-DENUM_BITFIELDS	If the compiler isn't GCC but groks enum foo:2.
#				Some compilers apparently accept this
#				without complaint but produce losing code,
#				so beware.
# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
# See also 'config.h'.
defines =

# Which flavor of remote job execution support to use.
# The code is found in 'remote-$(REMOTE).c'.
REMOTE = stub

# If you are using the GNU C library, or have the GNU getopt functions in
# your C library, you can comment these out.
GETOPT = getopt.o getopt1.o
GETOPT_SRC = $(srcdir)getopt.c $(srcdir)getopt1.c $(srcdir)getopt.h

# If you are using the GNU C library, or have the GNU glob functions in
# your C library, you can comment this out.  GNU make uses special hooks
# into the glob functions to be more efficient (by using make's directory
# cache for globbing), so you must use the GNU functions even if your
# system's C library has the 1003.2 glob functions already.  Also, the glob
# functions in the AIX and HPUX C libraries are said to be buggy.
GLOB = glob/glob.lib

# If your system doesn't have alloca, or the one provided is bad, define this.
ALLOCA = alloca.o
ALLOCA_SRC = $(srcdir)alloca.c

# If your system needs extra libraries loaded in, define them here.
# System V probably need -lPW for alloca.  HP-UX 7.0's alloca in
# libPW.a is broken on HP9000s300 and HP9000s400 machines.  Use
# alloca.c instead on those machines.
LOADLIBES =

# Any extra object files your system needs.
extras = amiga.o

# Common prefix for machine-independent installed files.
prefix =
# Common prefix for machine-dependent installed files.
exec_prefix =

# Directory to install 'make' in.
bindir = sc:c
# Directory to find libraries in for '-lXXX'.
libdir = lib:
# Directory to search by default for included makefiles.
includedir = include:
# Directory to install the Info files in.
infodir = doc:
# Directory to install the man page in.
mandir = t:
# Number to put on the man page filename.
manext = 1
# Prefix to put on installed 'make' binary file name.
binprefix =
# Prefix to put on installed 'make' man page file name.
manprefix = $(binprefix)

# Whether or not make needs to be installed setgid.
# The value should be either 'true' or 'false'.
# On many systems, the getloadavg function (used to implement the '-l'
# switch) will not work unless make is installed setgid kmem.
install_setgid = false
# Install make setgid to this group so it can read /dev/kmem.
group = sys

# Program to install 'make'.
INSTALL_PROGRAM = copy
# Program to install the man page.
INSTALL_DATA = copy
# Generic install program.
INSTALL = copy

# Program to format Texinfo source into Info files.
MAKEINFO = makeinfo
# Program to format Texinfo source into DVI files.
TEXI2DVI = texi2dvi

# Programs to make tags files.
ETAGS = etags -w
CTAGS = ctags -w

#guile = guile.o

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 strcache.o hash.o   \
       remote-$(REMOTE).o $(GETOPT) $(ALLOCA) $(extras) $(guile)

srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c             \
       $(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c         \
       $(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c             \
       $(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c        \
       $(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c     \
       $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c           \
       $(srcdir)guile.c $(srcdir)remote-$(REMOTE).c                  \
       $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c           \
       $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC)           \
       $(srcdir)commands.h $(srcdir)dep.h $(srcdir)filedep.h         \
       $(srcdir)job.h $(srcdir)makeint.h $(srcdir)rule.h             \
       $(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in


.SUFFIXES:
.SUFFIXES: .o .c .h .ps .dvi .info .texinfo

all: make
info: make.info
dvi: make.dvi
# Some makes apparently use .PHONY as the default goal if it is before 'all'.
.PHONY: all check info dvi

make.info: make.texinfo
	$(MAKEINFO) -I$(srcdir) $(srcdir)make.texinfo -o make.info

make.dvi: make.texinfo
	$(TEXI2DVI) $(srcdir)make.texinfo

make.ps: make.dvi
	dvi2ps make.dvi > make.ps

make: $(objs) $(GLOB)
	$(CC) Link $(LDFLAGS) $(objs) Lib $(GLOB) $(LOADLIBES) To make.new
	-delete make
	rename make.new make

TMPFILE = t:Make$$

$(GLOB):
	cd glob @@\
	$(MAKE) -$(MAKEFLAGS) -f Makefile

# -I. is needed to find config.h in the build directory.
OUTPUT_OPTION =
.c.o:
	$(CC) $(defines) IDir "" IDir glob \
	      $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)

# For some losing Unix makes.
SHELL = /bin/sh
#@SET_MAKE@

glob/libglob.a: FORCE config.h
	cd glob; $(MAKE) libglob.a
FORCE:

.PHONY: install installdirs
install: installdirs \
	 $(bindir)$(binprefix)make $(infodir)make.info \
	 $(mandir)$(manprefix)make.$(manext)

installdirs:
	$(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(mandir)

$(bindir)$(binprefix)make: make
	$(INSTALL_PROGRAM) make $@.new
	@if $(install_setgid); then \
	   if chgrp $(group) $@.new && chmod g+s $@.new; then \
	     echo "chgrp $(group) $@.new && chmod g+s $@.new"; \
	   else \
	     echo "$@ needs to be owned by group $(group) and setgid;"; \
	     echo "otherwise the '-l' option will probably not work."; \
	     echo "You may need special privileges to install $@."; \
	   fi; \
	 else true; fi
# Some systems can't deal with renaming onto a running binary.
	-$(RM) $@.old
	-mv $@ $@.old
	mv $@.new $@

$(infodir)make.info: make.info
	if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
	for file in $${dir}/make.info*; do \
	  name="`basename $$file`"; \
	  $(INSTALL_DATA) $$file \
	    `echo $@ | sed "s,make.info\$$,$$name,"`; \
	done
# Run install-info only if it exists.
# Use 'if' instead of just prepending '-' to the
# line so we notice real errors from install-info.
# We use '$(SHELL) -c' because some shells do not
# fail gracefully when there is an unknown command.
	if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
	  if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
	  install-info --infodir=$(infodir) $$dir/make.info; \
	else true; fi

$(mandir)$(manprefix)make.$(manext): make.man
	$(INSTALL_DATA) $(srcdir)make.man $@


loadavg: loadavg.c config.h
	$(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \
	      loadavg.c $(LOADLIBES) -o $@
# We copy getloadavg.c into a different file rather than compiling it
# directly because some compilers clobber getloadavg.o in the process.
loadavg.c: getloadavg.c
	ln $(srcdir)getloadavg.c loadavg.c || \
	cp $(srcdir)getloadavg.c loadavg.c
check-loadavg: loadavg
	@echo The system uptime program believes the load average to be:
	-uptime
	@echo The GNU load average checking code believes:
	./loadavg
check: check-loadavg


.PHONY: clean realclean distclean mostlyclean
clean: glob-clean
	-$(RM) make loadavg "#?.o" core make.dvi

distclean: clean glob-realclean
	-$(RM) Makefile config.h config.status build.sh
	-$(RM) config.log config.cache
	-$(RM) TAGS tags
	-$(RM) make.?? make.??s make.log make.toc make.*aux
	-$(RM) loadavg.c

realclean: distclean
	-$(RM) make.info*
mostlyclean: clean

.PHONY: glob-clean glob-realclean
glob-clean glob-realclean:
	cd glob @@\
	$(MAKE) $@

# This tells versions [3.59,3.63) of GNU make not to export all variables.
.NOEXPORT:

# The automatically generated dependencies below may omit config.h
# because it is included with '#include <config.h>' rather than
# '#include "config.h"'.  So we add the explicit dependency to make sure.
$(objs): config.h

# Automatically generated dependencies will be put at the end of the file.

# Automatically generated dependencies.
commands.o: commands.c makeint.h dep.h filedef.h variable.h job.h \
 commands.h
job.o: job.c makeint.h job.h filedef.h commands.h variable.h
dir.o: dir.c makeint.h
file.o: file.c makeint.h dep.h filedef.h job.h commands.h variable.h
misc.o: misc.c makeint.h dep.h
main.o: main.c makeint.h dep.h filedef.h variable.h job.h commands.h \
 getopt.h
guile.o: guile.c makeint.h dep.h debug.h variable.h gmk-default.h
read.o: read.c makeint.h dep.h filedef.h job.h commands.h variable.h \
 glob/glob.h
remake.o: remake.c makeint.h filedef.h job.h commands.h dep.h
rule.o: rule.c makeint.h dep.h filedef.h job.h commands.h variable.h \
 rule.h
implicit.o: implicit.c makeint.h rule.h dep.h filedef.h
default.o: default.c makeint.h rule.h dep.h filedef.h job.h commands.h \
 variable.h
variable.o: variable.c makeint.h dep.h filedef.h job.h commands.h \
 variable.h
expand.o: expand.c makeint.h filedef.h job.h commands.h variable.h
function.o: function.c makeint.h filedef.h variable.h dep.h job.h \
 commands.h amiga.h
vpath.o: vpath.c makeint.h filedef.h variable.h
strcache.o: strcache.c makeint.h hash.h
version.o: version.c
ar.o: ar.c makeint.h filedef.h dep.h
arscan.o: arscan.c makeint.h
signame.o: signame.c signame.h
remote-stub.o: remote-stub.c makeint.h filedef.h job.h commands.h
getopt.o: getopt.c
getopt1.o : getopt1.c getopt.h
getloadavg.o: getloadavg.c
amiga.o: amiga.c makeint.h variable.h amiga.h
