John W. Eaton <jwe@bevo.che.wisc.edu>
Martin Zinser <zinser@decus.decus.de>
- Port to Amiga by:
- Aaron Digulla <digulla@fh-konstanz.de>
-
Port to MS-Windows (native/MinGW) maintained by:
Eli Zaretskii <eliz@gnu.org>
Joe Crayne <oh.hello.joe@gmail.com>
Jeremy Devenport <jeremy.devenport@gmail.com>
Pete Dietl <petedietl@gmail.com>
+ Aaron Digulla <digulla@fh-konstanz.de>
Martin Dorey <martin.dorey@hds.com>
Christian Eggers <ceggers@arri.de>
Paul Eggert <eggert@twinsun.com>
alloca_SOURCES = %alloca_SOURCES%
w32_SOURCES = %w32_SOURCES%
vms_SOURCES = %vms_SOURCES%
-amiga_SOURCES = %amiga_SOURCES%
remote_SOURCES = $(src)remote-stub.c
vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \
src/vmsdir.h src/vmsfunctions.c src/vmsify.c
-amiga_SRCS = src/amiga.c src/amiga.h
-
glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h
alloca_SRCS = lib/alloca.c
loadavg_SRCS = lib/getloadavg.c
make_SOURCES = $(make_SRCS)
-EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS)
+EXTRA_make_SOURCES = $(vms_SRCS)
if HAVE_GUILE
_GUILE_CFLAGS = $(GUILE_CFLAGS)
# Extra stuff to include in the distribution.
-mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk
+mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/VMS.mk mk/Windows32.mk
# We don't need this, since the standard automake output will do.
#mk/Posix.mk.in
EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \
src/mkconfig.h README.customs README.OS2 README.zOS \
- README.Amiga SCOPTIONS src/config.ami \
README.DOS builddos.bat src/configh.dos \
README.W32 build_w32.bat src/config.h.W32 \
README.VMS makefile.com src/config.h-vms src/vmsjobs.c \
https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=111&set=custom
+* WARNING: Removed AmigaOS support!
+ This version of GNU Make no longer supports AmigaOS. If you need support
+ for AmigaOS please use one of the older versions.
+
\f
Version 4.4.1 (26 Feb 2023)
+++ /dev/null
-Short: Port of GNU Make with SAS/C (no ixemul.library required)
-Author: GNU, Amiga port by Aaron "Optimizer" Digulla
-Uploader: Aaron "Optimizer" Digulla (digulla@fh-konstanz.de)
-Type: dev/c
-
-This is a pure Amiga port of GNU Make. It needs no extra libraries or
-anything. It has the following features (in addition to any features of
-GNU Make):
-
-- Runs Amiga-Commands with SystemTags() (Execute)
-- Can run multi-line statements
-- Allows to use Device-Names in targets:
-
- c:make : make.o
-
- is ok. To distinguish between device-names and target : or ::, MAKE
- looks for spaces. If there are any around :, it's taken as a target
- delimiter, if there are none, it's taken as the name of a device. Note
- that "make:make.o" tries to create "make.o" on the device "make:".
-- Replaces @@ by a newline in any command line:
-
- if exists make @@\
- delete make.bak quiet @@\
- rename make make.bak @@\
- endif @@\
- $(CC) Link Make.o To make
-
- works. Note that the @@ must stand alone (i.e., "make@@\" is illegal).
- Also be careful that there is a space after the "\" (i.e., at the
- beginning of the next line).
-- Can be made resident to save space and time
-- Amiga specific wildcards can be used in $(wildcard ...)
-
-BUGS:
-- The line
-
- dummy.h : src/*.c
-
-tries to make dummy.h from "src/*.c" (i.e., no wildcard-expansion takes
-place). You have to use "$(wildcard src/*.c)" instead.
-
-COMPILING FROM SCRATCH
-----------------------
-
-To recompile, you need SAS/C 6.51.
-
-As of GNU Make 4.3, the build environment has been cleaned up and alternate
-make files (including smakefiles) have been removed. If you have an existing
-version of GNU Make available you _should_ be able to run:
-
- make -f Basic.mk
-
-However this is untested.
-
-If you have an Amiga system and would like to collaborate on getting
-bootstrapping to work properly please contact bug-make@gnu.org.
-
-INSTALLATION
-
-Copy make somewhere in your search path (e.g., sc:c or sc:bin).
-If you plan to use recursive makes, install make resident:
-
- Resident make Add
-
-\f
--------------------------------------------------------------------------------
-Copyright (C) 1995-2023 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 <https://www.gnu.org/licenses/>.
- See README.VMS for details about GNU Make on OpenVMS.
- - See README.Amiga for details about GNU Make on AmigaDOS.
-
- See README.zOS for details about GNU Make on z/OS.
- See README.W32 for details about GNU Make on Windows NT, 95, or 98.
+++ /dev/null
-ERRORREXX
-OPTIMIZE
-NOVERSION
-OPTIMIZERTIME
-OPTIMIZERALIAS
-DEFINE HAVE_CONFIG_H
-DEFINE INCLUDEDIR="include:"
-DEFINE LIBDIR="lib:"
-DEFINE NO_ALLOCA
-DEFINE NO_ARCHIVES
-IGNORE=161
-IGNORE=100
-STARTUP=cres
sed -e 's@%make_SOURCES%@$(call cvt,src,$(make_SRCS))@g' \
-e 's@%w32_SOURCES%@$(call cvt,src,$(w32_SRCS))@g' \
-e 's@%vms_SOURCES%@$(call cvt,src,$(vms_SRCS))@g' \
- -e 's@%amiga_SOURCES%@$(call cvt,src,$(amiga_SRCS))@g' \
-e 's@%loadavg_SOURCES%@$(call cvt,lib,$(loadavg_SRCS))@g' \
-e 's@%alloca_SOURCES%@$(call cvt,lib,$(alloca_SRCS))@g' \
-e 's@%glob_SOURCES%@$(call cvt,lib,$(glob_SRCS))@g' \
+++ /dev/null
-# GNU -*-Makefile-*- to build GNU Make on Amiga
-#
-# Amiga overrides for use with Basic.mk.
-#
-# Copyright (C) 2017-2023 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 <https://www.gnu.org/licenses/>.
-
-CC = sc
-LD = $(CC) Link
-
-MKDIR.cmd = makedir $1
-RM.cmd = delete $1
-CP.cmd = copy $1 To $2
-
-CPPFLAGS =
-CFLAGS =
-LDFLAGS =
-
-prog_SOURCES += $(alloca_SOURCES) $(loadavg_SOURCES) $(glob_SOURCES) $(amiga_SOURCES)
-
-BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h
-
-extra_CPPFLAGS = IDir $(OUTDIR)src IDir $(SRCDIR)/src IDir $(OUTDIR)lib IDir $(SRCDIR)/lib
-
-C_SOURCE =
-OUTPUT_OPTION =
-LDFLAGS = From LIB:cres.o
-LDLIBS = Lib LIB:sc.lib LIB:amiga.lib
-LINK_OUTPUT = To $@
-
-$(OUTDIR)src/config.h: $(SRCDIR)/src/config.ami
- $(call CP.cmd,$<,$@)
+++ /dev/null
-/* Running commands on Amiga
-Copyright (C) 1995-2023 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 <https://www.gnu.org/licenses/>. */
-
-#include "makeint.h"
-#include "variable.h"
-#include "amiga.h"
-#include <assert.h>
-#include <exec/memory.h>
-#include <dos/dostags.h>
-#include <proto/exec.h>
-#include <proto/dos.h>
-
-static const char Amiga_version[] = "$VER: Make 3.74.3 (12.05.96) \n"
- "Amiga Port by A. Digulla (digulla@home.lake.de)";
-
-int
-MyExecute (char **argv)
-{
- char * buffer, * ptr;
- char ** aptr;
- int len = 0;
- int status;
-
- for (aptr=argv; *aptr; aptr++)
- {
- len += strlen (*aptr) + 4;
- }
-
- buffer = AllocMem (len, MEMF_ANY);
-
- if (!buffer)
- O (fatal, NILF, "MyExecute: Cannot allocate space for calling a command");
-
- ptr = buffer;
-
- for (aptr=argv; *aptr; aptr++)
- {
- if (((*aptr)[0] == ';' && !(*aptr)[1]))
- {
- *ptr ++ = '"';
- ptr = stpcpy (ptr, *aptr);
- *(ptr++) = '"';
- }
- else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2])
- {
- *ptr ++ = '\n';
- continue;
- }
- else
- ptr = stpcpy (ptr, *aptr);
- *ptr ++ = ' ';
- *ptr = 0;
- }
-
- ptr[-1] = '\n';
-
- status = SystemTags (buffer,
- SYS_UserShell, TRUE,
- TAG_END);
-
- FreeMem (buffer, len);
-
- if (SetSignal (0L,0L) & SIGBREAKF_CTRL_C)
- status = 20;
-
- /* Warnings don't count */
- if (status == 5)
- status = 0;
-
- return status;
-}
-
-char *
-wildcard_expansion (char *wc, char *o)
-{
-# define PATH_SIZE 1024
- struct AnchorPath * apath;
-
- if ( (apath = AllocMem (sizeof (struct AnchorPath) + PATH_SIZE,
- MEMF_CLEAR))
- )
- {
- apath->ap_Strlen = PATH_SIZE;
-
- if (MatchFirst (wc, apath) == 0)
- {
- do
- {
- o = variable_buffer_output (o, apath->ap_Buf,
- strlen (apath->ap_Buf));
- o = variable_buffer_output (o, " ",1);
- } while (MatchNext (apath) == 0);
- }
-
- MatchEnd (apath);
- FreeMem (apath, sizeof (struct AnchorPath) + PATH_SIZE);
- }
-
- return o;
-}
+++ /dev/null
-/* Definitions for amiga specific things
-Copyright (C) 1995-2023 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 <https://www.gnu.org/licenses/>. */
-
-int MyExecute (char ** argv);
-char * wildcard_expansion (char * wc, char * o);
remove_intermediates (1);
exit (EXIT_FAILURE);
#else /* not __MSDOS__ */
-#ifdef _AMIGA
- remove_intermediates (1);
- if (sig == SIGINT)
- fputs (_("*** Break.\n"), stderr);
-
- exit (10);
-#else /* not Amiga */
#ifdef WINDOWS32
extern HANDLE main_thread;
if (kill (make_pid (), sig) < 0)
pfatal_with_name ("kill");
#endif /* not WINDOWS32 */
-#endif /* not Amiga */
#endif /* not __MSDOS__ */
}
\f
+++ /dev/null
-/* config.h -- hand-massaged for Amiga -*-C-*-
-Copyright (C) 1995-2023 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 <https://www.gnu.org/licenses/>. */
-
-#include "mkconfig.h"
-
-#define MK_AMIGAOS 1
-
-/* Define if on AIX 3.
- System headers sometimes define this.
- We just want to avoid a redefinition error message. */
-#ifndef _ALL_SOURCE
-/* #undef _ALL_SOURCE */
-#endif
-
-/* Define if using alloca.c. */
-#define C_ALLOCA
-
-/* Define if the closedir function returns void instead of int. */
-/* #undef CLOSEDIR_VOID */
-
-/* Define to empty if the keyword does not work. */
-/* #undef const */
-
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
- This function is required for alloca.c support on those systems. */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define for DGUX with <sys/dg_sys_info.h>. */
-/* #undef DGUX */
-
-/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
- not define. */
-#define intmax_t long
-
-/* Define to 'unsigned long' or 'unsigned long long'
- if <inttypes.h> doesn't define. */
-#define uintmax_t unsigned long
-
-/* Define to 'int' if <sys/types.h> doesn't define. */
-#define gid_t int
-
-/* Define if you have alloca, as a function or macro. */
-/* #undef HAVE_ALLOCA */
-
-/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
-/* #undef HAVE_ALLOCA_H */
-
-/* Define to 1 if you have the declaration of 'getloadavg'. */
-/* #undef HAVE_DECL_GETLOADAVG */
-
-/* Define if your system has a working fnmatch function. */
-/* #undef HAVE_FNMATCH */
-
-/* Define if you have the getmntent function. */
-/* #undef HAVE_GETMNTENT */
-
-/* Embed GNU Guile support */
-/* #undef HAVE_GUILE */
-
-/* Define if the 'long double' type works. */
-/* #undef HAVE_LONG_DOUBLE */
-
-/* Define if you support file names longer than 14 characters. */
-#define HAVE_LONG_FILE_NAMES 1
-
-/* Define if you have a working 'mmap' system call. */
-/* #undef HAVE_MMAP */
-
-/* Define if system calls automatically restart after interruption
- by a signal. */
-/* #undef HAVE_RESTARTABLE_SYSCALLS */
-
-/* Define if your struct stat has st_blksize. */
-/* #undef HAVE_ST_BLKSIZE */
-
-/* Define if your struct stat has st_blocks. */
-/* #undef HAVE_ST_BLOCKS */
-
-/* Define if you have the strcoll function and it is properly defined. */
-#define HAVE_STRCOLL 1
-
-/* Define if your struct stat has st_rdev. */
-#define HAVE_ST_RDEV 1
-
-/* Define if you have the strftime function. */
-#define HAVE_STRFTIME 1
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
-/* #undef HAVE_SYS_WAIT_H */
-
-/* Define if your struct tm has tm_zone. */
-/* #undef HAVE_TM_ZONE */
-
-/* Define if you don't have tm_zone but do have the external array
- tzname. */
-#define HAVE_TZNAME 1
-
-/* Define if you have <unistd.h>. */
-#define HAVE_UNISTD_H 1
-
-/* Define if utime(file, NULL) sets file's timestamp to the present. */
-/* #undef HAVE_UTIME_NULL */
-
-/* Define if you have the wait3 system call. */
-/* #undef HAVE_WAIT3 */
-
-/* Define if on MINIX. */
-/* #undef _MINIX */
-
-/* Define if your struct nlist has an n_un member. */
-/* #undef NLIST_NAME_UNION */
-
-/* Define if you have <nlist.h>. */
-/* #undef NLIST_STRUCT */
-
-/* Define if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Define to 'int' if <sys/types.h> doesn't define. */
-#define pid_t int
-
-/* Define if the system does not provide POSIX.1 features except
- with this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define if you need to in order for stat and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown
- */
-#define STACK_DIRECTION -1
-
-/* Define if the 'S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef STAT_MACROS_BROKEN */
-
-/* Define if you have the ANSI C header files. */
-#define STDC_HEADERS
-
-/* Define on System V Release 4. */
-/* #undef SVR4 */
-
-/* Define if 'sys_siglist' is declared by <signal.h>. */
-/* #undef SYS_SIGLIST_DECLARED */
-
-/* Define to 'int' if <sys/types.h> doesn't define. */
-#define uid_t int
-
-/* Define for Encore UMAX. */
-/* #undef UMAX */
-
-/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
- instead of <sys/cpustats.h>. */
-/* #undef UMAX4_3 */
-
-/* Define to the name of the SCCS 'get' command. */
-#define SCCS_GET "get"
-
-/* Define this if the SCCS 'get' command understands the '-G<file>' option. */
-/* #undef SCCS_GET_MINUS_G */
-
-/* Define this to enable job server support in GNU Make. */
-/* #undef MAKE_JOBSERVER */
-
-/* Define to be the nanoseconds member of struct stat's st_mtim,
- if it exists. */
-/* #undef ST_MTIM_NSEC */
-
-/* Define this if the C library defines the variable 'sys_siglist'. */
-/* #undef HAVE_SYS_SIGLIST */
-
-/* Define this if the C library defines the variable '_sys_siglist'. */
-/* #undef HAVE__SYS_SIGLIST */
-
-/* Define this if you have the 'union wait' type in <sys/wait.h>. */
-/* #undef HAVE_UNION_WAIT */
-
-/* Define if you have the dup2 function. */
-/* #undef HAVE_DUP2 */
-
-/* Define if you have the getcwd function. */
-#define HAVE_GETCWD 1
-
-/* Define if you have the getgroups function. */
-/* #undef HAVE_GETGROUPS */
-
-/* Define if you have the gethostbyname function. */
-/* #undef HAVE_GETHOSTBYNAME */
-
-/* Define if you have the gethostname function. */
-/* #undef HAVE_GETHOSTNAME */
-
-/* Define if you have the memmove function. */
-#define HAVE_MEMMOVE 1
-
-/* Define if you have the mktemp function. */
-#define HAVE_MKTEMP 1
-
-/* Define if you have the psignal function. */
-/* #undef HAVE_PSIGNAL */
-
-/* Define if you have the pstat_getdynamic function. */
-/* #undef HAVE_PSTAT_GETDYNAMIC */
-
-/* Define if you have the setegid function. */
-/* #undef HAVE_SETEGID */
-
-/* Define if you have the seteuid function. */
-/* #undef HAVE_SETEUID */
-
-/* Define if you have the setlinebuf function. */
-/* #undef HAVE_SETLINEBUF */
-
-/* Define if you have the setregid function. */
-/* #undef HAVE_SETREGID */
-
-/* Define if you have the setreuid function. */
-/* #undef HAVE_SETREUID */
-
-/* Define if you have the sigsetmask function. */
-/* #undef HAVE_SIGSETMASK */
-
-/* Define if you have the socket function. */
-/* #undef HAVE_SOCKET */
-
-/* Define to 1 if you have the strcasecmp function. */
-/* #undef HAVE_STRCASECMP */
-
-/* Define to 1 if you have the strcmpi function. */
-/* #undef HAVE_STRCMPI */
-
-/* Define to 1 if you have the stricmp function. */
-/* #undef HAVE_STRICMP */
-
-/* Define if you have the strsignal function. */
-/* #undef HAVE_STRSIGNAL */
-
-/* Define if you have the strtoll function. */
-/* #undef HAVE_STRTOLL */
-
-/* Define if you have the wait3 function. */
-/* #undef HAVE_WAIT3 */
-
-/* Define if you have the waitpid function. */
-/* #undef HAVE_WAITPID */
-
-/* Define if you have the <dirent.h> header file. */
-#define HAVE_DIRENT_H 1
-
-/* Define if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define if you have the <mach/mach.h> header file. */
-/* #undef HAVE_MACH_MACH_H */
-
-/* Define if you have the <memory.h> header file. */
-/* #undef HAVE_MEMORY_H */
-
-/* Define if you have the <ndir.h> header file. */
-/* #undef HAVE_NDIR_H */
-
-/* Define if you have the <stdlib.h> header file. */
-/* #undef HAVE_STDLIB_H */
-
-/* Define if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <sys/dir.h> header file. */
-#define HAVE_SYS_DIR_H 1
-
-/* Define if you have the <sys/ndir.h> header file. */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define if you have the <sys/param.h> header file. */
-/* #undef HAVE_SYS_PARAM_H */
-
-/* Define if you have the <sys/timeb.h> header file. */
-/* #undef HAVE_SYS_TIMEB_H */
-
-/* Define if you have the <sys/wait.h> header file. */
-/* #undef HAVE_SYS_WAIT_H */
-
-/* Define if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the dgc library (-ldgc). */
-/* #undef HAVE_LIBDGC */
-
-/* Define if you have the kstat library (-lkstat). */
-/* #undef HAVE_LIBKSTAT */
-
-/* Define to 1 if you have the `isatty' function. */
-/* #undef HAVE_ISATTY */
-
-/* Define to 1 if you have the `ttyname' function. */
-/* #undef HAVE_TTYNAME */
-
-/* Define if you have the sun library (-lsun). */
-/* #undef HAVE_LIBSUN */
-
-/* Output sync support */
-#define NO_OUTPUT_SYNC
-
-/* Define for Case Insensitive behavior */
-#define HAVE_CASE_INSENSITIVE_FS
-
-/* Build host information. */
-#define MAKE_HOST "Amiga"
-
-/* Define to `int' if <sys/types.h> does not define. */
-#define ssize_t int
-
-/* Include customized declarations. */
-#include "../src/mkcustom.h"
"SCCS_OUTPUT_OPTION", "-G$@",
#endif
-#if defined(_AMIGA)
- ".LIBPATTERNS", "%.lib",
-#elif defined(__MSDOS__)
+#if defined(__MSDOS__)
".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a",
#elif defined(__APPLE__)
".LIBPATTERNS", "lib%.dylib lib%.a",
#include "pathstuff.h"
#endif
-#ifdef _AMIGA
-#include <ctype.h>
-#endif
-
#ifdef HAVE_CASE_INSENSITIVE_FS
static const char *
downcase (const char *filename)
}
#endif /* HAVE_DOS_PATHS */
if (dirend == NULL)
-#ifndef _AMIGA
return dir_file_exists_p (".", name);
-#else /* !AMIGA */
- return dir_file_exists_p ("", name);
-#endif /* AMIGA */
slash = dirend;
if (dirend == name)
}
#endif /* HAVE_DOS_PATHS */
if (dirend == NULL)
-#ifdef _AMIGA
- dir = find_directory ("");
-#else /* !AMIGA */
dir = find_directory (".");
-#endif /* AMIGA */
else
{
const char *dirname;
}
#endif /* HAVE_DOS_PATHS */
if (dirend == NULL)
-#ifdef _AMIGA
- dir = find_directory ("")->contents;
-#else /* !AMIGA */
dir = find_directory (".")->contents;
-#endif /* AMIGA */
else
{
const char *dirname;
if (*name == '\0')
{
/* It was all slashes after a dot. */
-#if defined(_AMIGA)
- name = "";
-#else
name = "./";
-#endif
#if defined(VMS)
/* TODO - This section is probably not needed. */
if (want_vmsify)
#include "commands.h"
#include "debug.h"
-#ifdef _AMIGA
-#include "amiga.h"
-#endif
-
struct function_table_entry
{
o = variable_buffer_output (o, "[]", 2);
}
#else
-#ifndef _AMIGA
o = variable_buffer_output (o, "./", 2);
-#else
- ; /* Just a nop... */
-#endif /* AMIGA */
#endif /* !VMS */
else
/* The entire name is the basename. */
static char *
func_wildcard (char *o, char **argv, const char *funcname UNUSED)
{
-#ifdef _AMIGA
- o = wildcard_expansion (argv[0], o);
-#else
char *p = string_glob (argv[0]);
o = variable_buffer_output (o, p, strlen (p));
-#endif
return o;
}
#define func_shell 0
#else
-#ifndef _AMIGA
char *
func_shell_base (char *o, char **argv, int trim_newlines)
{
return o;
}
-#else /* _AMIGA */
-
-/* Do the Amiga version of func_shell. */
-
-char *
-func_shell_base (char *o, char **argv, int trim_newlines)
-{
- /* Amiga can't fork nor spawn, but I can start a program with
- redirection of my choice. However, this means that we
- don't have an opportunity to reopen stdout to trap it. Thus,
- we save our own stdout onto a new descriptor and dup a temp
- file's descriptor onto our stdout temporarily. After we
- spawn the shell program, we dup our own stdout back to the
- stdout descriptor. The buffer reading is the same as above,
- except that we're now reading from a file. */
-
-#include <dos/dos.h>
-#include <proto/dos.h>
-
- BPTR child_stdout;
- char tmp_output[FILENAME_MAX];
- size_t maxlen = 200, i;
- int cc;
- char * buffer, * ptr;
- char ** aptr;
- size_t len = 0;
- char* batch_filename = NULL;
-
- /* Construct the argument list. */
- command_argv = construct_command_argv (argv[0], NULL, NULL, 0,
- &batch_filename);
- if (command_argv == 0)
- return o;
-
- /* Note the mktemp() is a security hole, but this only runs on Amiga.
- Ideally we would use get_tmpfile(), but this uses a special Open(), not
- fopen(), and I'm not familiar enough with the code to mess with it. */
- strcpy (tmp_output, "t:MakeshXXXXXXXX");
- mktemp (tmp_output);
- child_stdout = Open (tmp_output, MODE_NEWFILE);
-
- for (aptr=command_argv; *aptr; aptr++)
- len += strlen (*aptr) + 1;
-
- buffer = xmalloc (len + 1);
- ptr = buffer;
-
- for (aptr=command_argv; *aptr; aptr++)
- {
- strcpy (ptr, *aptr);
- ptr += strlen (ptr) + 1;
- *(ptr++) = ' ';
- *ptr = '\0';
- }
-
- ptr[-1] = '\n';
-
- Execute (buffer, NULL, child_stdout);
- free (buffer);
-
- Close (child_stdout);
-
- child_stdout = Open (tmp_output, MODE_OLDFILE);
-
- buffer = xmalloc (maxlen);
- i = 0;
- do
- {
- if (i == maxlen)
- {
- maxlen += 512;
- buffer = xrealloc (buffer, maxlen + 1);
- }
-
- cc = Read (child_stdout, &buffer[i], maxlen - i);
- if (cc > 0)
- i += cc;
- } while (cc > 0);
-
- Close (child_stdout);
-
- fold_newlines (buffer, &i, trim_newlines);
- o = variable_buffer_output (o, buffer, i);
- free (buffer);
- return o;
-}
-#endif /* _AMIGA */
-
static char *
func_shell (char *o, char **argv, const char *funcname UNUSED)
{
int batch_mode_shell = 1;
HANDLE main_thread;
-#elif defined (_AMIGA)
-
-const char *default_shell = "";
-extern int MyExecute (char **);
-int batch_mode_shell = 0;
-
#elif defined (__MSDOS__)
/* The default shell is a pointer so we can change it if Makefile
int dos_command_running;
#endif /* __MSDOS__ */
-#ifdef _AMIGA
-# include <proto/dos.h>
-static int amiga_pid = 123;
-static int amiga_status;
-static char amiga_bname[32];
-static int amiga_batch_file;
-#endif /* Amiga. */
-
#ifdef VMS
# ifndef __GNUC__
# include <processes.h>
else
{
/* No remote children. Check for local children. */
-#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32)
+#if !defined(__MSDOS__) && !defined(WINDOWS32)
if (any_local)
{
#ifdef VMS
/* We got a remote child. */
remote = 1;
}
-#endif /* !__MSDOS__, !Amiga, !WINDOWS32. */
+#endif /* !__MSDOS__, !WINDOWS32. */
#ifdef __MSDOS__
/* Life is very different on MSDOS. */
exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0;
coredump = 0;
#endif /* __MSDOS__ */
-#ifdef _AMIGA
- /* Same on Amiga */
- pid = amiga_pid - 1;
- status = amiga_status;
- exit_code = amiga_status;
- exit_sig = 0;
- coredump = 0;
-#endif /* _AMIGA */
#ifdef WINDOWS32
{
HANDLE hPID;
performed some action (makes a difference as to what messages are
printed, etc. */
-#if !defined(VMS) && !defined(_AMIGA)
+#if !defined(VMS)
if (
#if defined __MSDOS__ || defined (__EMX__)
unixy_shell /* the test is complicated and we already did it */
FREE_ARGV (argv);
goto next_command;
}
-#endif /* !VMS && !_AMIGA */
+#endif /* !VMS */
/* If -n was given, recurse to get the next line in the sequence. */
child->deleted = 0;
-#ifndef _AMIGA
/* Set up the environment for the child.
It's a slight inaccuracy to set the environment for recursive make even
for command lines that aren't recursive, but I don't want to have to
if (child->environment == 0)
child->environment = target_environment (child->file,
child->file->cmds->any_recurse);
-#endif
-#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32)
+#if !defined(__MSDOS__) && !defined(WINDOWS32)
#ifndef VMS
/* start_waiting_job has set CHILD->remote if we can start a remote job. */
#endif /* !VMS */
}
-#else /* __MSDOS__ or Amiga or WINDOWS32 */
+#else /* __MSDOS__ or WINDOWS32 */
#ifdef __MSDOS__
{
int proc_return;
child->pid = dos_pid++;
}
#endif /* __MSDOS__ */
-#ifdef _AMIGA
- amiga_status = MyExecute (argv);
-
- ++dead_children;
- child->pid = amiga_pid++;
- if (amiga_batch_file)
- {
- amiga_batch_file = 0;
- DeleteFile (amiga_bname); /* Ignore errors. */
- }
-#endif /* Amiga */
#ifdef WINDOWS32
{
HANDLE hPID;
}
}
#endif /* WINDOWS32 */
-#endif /* __MSDOS__ or Amiga or WINDOWS32 */
+#endif /* __MSDOS__ or WINDOWS32 */
/* Bump the number of jobs started in this second. */
if (child->pid >= 0)
static int
load_too_high (void)
{
-#if defined(__MSDOS__) || defined(VMS) || defined(_AMIGA) || defined(__riscos__)
+#if defined(__MSDOS__) || defined(VMS) || defined(__riscos__)
return 1;
#else
static double last_sec;
return pid;
}
-#elif !defined (_AMIGA) && !defined (__MSDOS__) && !defined (VMS)
+#elif !defined (__MSDOS__) && !defined (VMS)
/* POSIX:
Create a child process executing the command in ARGV.
return pid;
}
-#endif /* !AMIGA && !__MSDOS__ && !VMS */
+#endif /* !__MSDOS__ && !VMS */
#endif /* !WINDOWS32 */
\f
-#ifndef _AMIGA
/* Replace the current process with one running the command in ARGV,
with environment ENVP. This function does not return. */
#endif /* !WINDOWS32 */
#endif /* !VMS */
}
-#else /* On Amiga */
-void
-exec_command (char **argv)
-{
- MyExecute (argv);
-}
-
-void clean_tmp (void)
-{
- DeleteFile (amiga_bname);
-}
-
-#endif /* On Amiga */
\f
#ifndef VMS
/* Figure out the argument list necessary to run LINE as a command. Try to
const char *sh_chars;
const char **sh_cmds;
-#elif defined (_AMIGA)
- static const char *sh_chars = "#;\"|<>()?*$`";
- static const char *sh_cmds[] =
- { "cd", "eval", "if", "delete", "echo", "copy", "rename", "set", "setenv",
- "date", "makedir", "skip", "else", "endif", "path", "prompt", "unset",
- "unsetenv", "version", "command", 0 };
-
#elif defined (WINDOWS32)
/* We used to have a double quote (") in sh_chars_dos[] below, but
that caused any command line with quoted file names be run
execute_by_shell = 1; /* actually, call 'system' if shell isn't unixy */
#endif
-#ifdef _AMIGA
- {
- char *ptr;
- char *buffer;
- char *dptr;
-
- buffer = xmalloc (strlen (line)+1);
-
- ptr = line;
- for (dptr=buffer; *ptr; )
- {
- if (*ptr == '\\' && ptr[1] == '\n')
- ptr += 2;
- else if (*ptr == '@') /* Kludge: multiline commands */
- {
- ptr += 2;
- *dptr++ = '\n';
- }
- else
- *dptr++ = *ptr++;
- }
- *dptr = 0;
-
- new_argv = xmalloc (2 * sizeof (char *));
- new_argv[0] = buffer;
- new_argv[1] = 0;
- }
-#else /* Not Amiga */
#ifdef WINDOWS32
/*
* Not eating this whitespace caused things like
free (new_line);
}
-#endif /* ! AMIGA */
return new_argv;
}
return argv;
}
\f
-#if !defined(HAVE_DUP2) && !defined(_AMIGA)
+#if !defined(HAVE_DUP2)
int
dup2 (int old, int new)
{
return fd;
}
-#endif /* !HAVE_DUP2 && !_AMIGA */
+#endif /* !HAVE_DUP2 */
/* On VMS systems, include special VMS functions. */
pid_t child_execute_job (struct childbase *child, int good_stdin, char **argv);
-#ifdef _AMIGA
-void exec_command (char **argv) NORETURN;
-#else
pid_t exec_command (char **argv, char **envp);
-#endif
void unblock_all_sigs (void);
#include "shuffle.h"
#include <assert.h>
-#ifdef _AMIGA
-# include <dos/dos.h>
-# include <proto/dos.h>
-#endif
#ifdef WINDOWS32
# include <windows.h>
# include <io.h>
# include <fcntl.h>
#endif
-#ifdef _AMIGA
-int __stack = 20000; /* Make sure we have 20K of stack space */
-#endif
#ifdef VMS
int vms_use_mcr_command = 0;
int vms_always_use_cmd_file = 0;
extern char **environ;
#endif
-#if defined(_AMIGA) || defined(MK_OS_ZOS)
+#if defined(MK_OS_ZOS)
int
main (int argc, char **argv)
#else
char **envp = environ;
#endif
-#ifndef _AMIGA
{
unsigned int i;
define_variable_cname ("PATH", windows32_path ? windows32_path : "",
o_env, 1)->export = v_export;
#endif
-#else /* For Amiga, read the ENV: device, ignoring all dirs */
- {
- BPTR env, file, old;
- char buffer[1024];
- int len;
- __aligned struct FileInfoBlock fib;
-
- env = Lock ("ENV:", ACCESS_READ);
- if (env)
- {
- old = CurrentDir (DupLock (env));
- Examine (env, &fib);
-
- while (ExNext (env, &fib))
- {
- if (fib.fib_DirEntryType < 0) /* File */
- {
- /* Define an empty variable. It will be filled in
- variable_lookup(). Makes startup quite a bit faster. */
- define_variable (fib.fib_FileName,
- strlen (fib.fib_FileName),
- "", o_env, 1)->export = v_export;
- }
- }
- UnLock (env);
- UnLock (CurrentDir (old));
- }
- }
-#endif
/* Decode the switches. */
if (lookup_variable (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME)))
fflush (stdout);
}
-#ifndef _AMIGA
{
char **p;
for (p = environ; *p != 0; ++p)
}
}
}
-#else /* AMIGA */
- {
- char buffer[256];
-
- sprintf (buffer, "%u", makelevel);
- SetVar (MAKELEVEL_NAME, buffer, -1, GVF_GLOBAL_ONLY);
-
- sprintf (buffer, "%s%u", OUTPUT_IS_TRACED () ? "-" : "", restarts);
- SetVar ("MAKE_RESTARTS", buffer, -1, GVF_GLOBAL_ONLY);
- restarts = 0;
- }
-#endif
/* If we didn't set the restarts variable yet, add it. */
if (restarts)
/* The exec'd "child" will be another make, of course. */
jobserver_pre_child(1);
-#ifdef _AMIGA
- exec_command (nargv);
- exit (0);
-#elif defined (__EMX__)
+#if defined (__EMX__)
{
/* It is not possible to use execve() here because this
would cause the parent process to be terminated with
#define IO_STDOUT_OK 0x0008
#define IO_STDERR_OK 0x0010
-#if defined(VMS) || defined(_AMIGA) || defined(__MSDOS__)
+#if defined(VMS) || defined(__MSDOS__)
# define check_io_state() (IO_STDIN_OK|IO_STDOUT_OK|IO_STDERR_OK)
# define fd_inherit(_i) (0)
# define fd_noinherit(_i) (0)
#endif /* NO_OUTPUT_SYNC */
/* Create a "bad" file descriptor for stdin when parallel jobs are run. */
-#if defined(VMS) || defined(WINDOWS32) || defined(_AMIGA) || defined(__MSDOS__)
+#if defined(VMS) || defined(WINDOWS32) || defined(__MSDOS__)
# define get_bad_stdin() (-1)
#else
int get_bad_stdin (void);
#ifdef WINDOWS32
-#include <windows.h>
-#include "sub_proc.h"
-#else /* !WINDOWS32 */
-#ifndef _AMIGA
-#ifndef VMS
-#include <pwd.h>
-#else
+# include <windows.h>
+# include "sub_proc.h"
+#elif defined(VMS)
struct passwd *getpwnam (char *name);
+#else
+# include <pwd.h>
#endif
-#endif
-#endif /* !WINDOWS32 */
/* A 'struct ebuffer' controls the origin of the makefile we are currently
eval'ing.
#if defined(INCLUDEDIR)
INCLUDEDIR,
#endif
-#ifndef _AMIGA
"/usr/gnu/include",
"/usr/local/include",
"/usr/include",
-#endif
- 0
+ NULL
};
/* List of directories to search for include files in */
/* TODO: Above is not always true, this needs more work */
{ "makefile.vms", "gnumakefile", "makefile", 0 };
#else
-#ifdef _AMIGA
- { "GNUmakefile", "Makefile", "SMakefile", 0 };
-#else /* !Amiga && !VMS */
#ifdef WINDOWS32
{ "GNUmakefile", "makefile", "Makefile", "makefile.mak", 0 };
-#else /* !Amiga && !VMS && !WINDOWS32 */
+#else /* !VMS && !WINDOWS32 */
{ "GNUmakefile", "makefile", "Makefile", 0 };
-#endif /* !Amiga && !VMS && !WINDOWS32 */
-#endif /* AMIGA */
+#endif /* !VMS && !WINDOWS32 */
#endif /* VMS */
const char **p = default_makefiles;
while (*p != 0 && !file_exists_p (*p))
else
break;
}
-#ifdef _AMIGA
- /* Here, the situation is quite complicated. Let's have a look
- at a couple of targets:
-
- install: dev:make
-
- dev:make: make
-
- dev:make:: xyz
-
- The rule is that it's only a target, if there are TWO :'s
- OR a space around the :.
- */
- if (p && !(ISSPACE (p[1]) || !p[1] || ISSPACE (p[-1])))
- p = 0;
-#endif
#ifdef HAVE_DOS_PATHS
{
int check_again;
free (home_dir);
home_dir = getenv ("HOME");
}
-# if !defined(_AMIGA) && !defined(WINDOWS32)
+# if !defined(WINDOWS32)
if (home_dir == 0 || home_dir[0] == '\0')
{
char *logname = getlogin ();
home_dir = p->pw_dir;
}
}
-# endif /* !AMIGA && !WINDOWS32 */
+# endif /* !WINDOWS32 */
if (home_dir != 0)
{
char *new = xstrdup (concat (2, home_dir, name + 1));
return new;
}
}
-# if !defined(_AMIGA) && !defined(WINDOWS32)
+# if !defined(WINDOWS32)
else
{
struct passwd *pwent;
else if (userend != 0)
*userend = '/';
}
-# endif /* !AMIGA && !WINDOWS32 */
+# endif /* !WINDOWS32 */
#endif /* !VMS */
return 0;
}
if (p && *p == ',')
*p =' ';
#endif
-#ifdef _AMIGA
- /* If we stopped due to a device name, skip it. */
- if (p && p != s+1 && p[0] == ':')
- p = find_map_unquote (p+1, findmap);
-#endif
#ifdef HAVE_DOS_PATHS
/* If we stopped due to a drive specifier, skip it.
Tokens separated by spaces are treated as separate paths since make
if (s == p)
{
/* The name was stripped to empty ("./"). */
-#if defined(_AMIGA)
- /* PDS-- This cannot be right!! */
- tp[0] = '\0';
- nlen = 0;
-#else
tp[0] = '.';
tp[1] = '/';
tp[2] = '\0';
nlen = 2;
-#endif
}
else
{
{
static const char *dirs[] =
{
-#ifndef _AMIGA
"/lib",
"/usr/lib",
-#endif
#if defined(WINDOWS32) && !defined(LIBDIR)
/*
* This is completely up to the user at product install time. Just define