src/getopt.h src/getopt1.c src/gettext.h src/guile.c \
src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \
src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \
- src/os.h src/output.c src/output.h src/read.c src/remake.c \
- src/rule.c src/rule.h src/shuffle.h src/shuffle.c \
+ src/mkcustom.h src/os.h src/output.c src/output.h src/read.c \
+ src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \
src/signame.c src/strcache.c src/variable.c src/variable.h \
src/version.c src/vpath.c
# Allow building with dmalloc
AM_WITH_DMALLOC
+# Add custom header to config.h
+AH_BOTTOM([/* Include customized declarations. */
+#include "../src/mkcustom.h"])
+
# Forcibly disable SET_MAKE. If it's set it breaks things like the test
# scripts, etc.
SET_MAKE=
/* Define to `int' if <sys/types.h> does not define. */
#define ssize_t int
+
+/* Include customized declarations. */
+#include "../src/mkcustom.h"
/* Build host information. */
#define MAKE_HOST "VMS"
+
+/* Include customized declarations. */
+#include "../src/mkcustom.h"
#ifdef HAVE_CYGWIN_SHELL
#undef BATCH_MODE_ONLY_SHELL
#endif
+
+/* Include customized declarations. */
+#include "../src/mkcustom.h"
/* Define to 'unsigned long' or 'unsigned long long'
if <inttypes.h> doesn't define. */
#define uintmax_t unsigned long long
+
+/* Include customized declarations. */
+#include "../src/mkcustom.h"
using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
(which it would do because makeint.h was found in $srcdir). */
#include <config.h>
-#undef HAVE_CONFIG_H
-#define HAVE_CONFIG_H 1
-
-/* Specify we want GNU source code. This must be defined before any
- system headers are included. */
-
-#define _GNU_SOURCE 1
-
-/* AIX requires this to be the first thing in the file. */
-#if HAVE_ALLOCA_H
-# include <alloca.h>
-#else
-# ifdef _AIX
- #pragma alloca
-# else
-# if !defined(__GNUC__) && !defined(WINDOWS32)
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-# endif
-# endif
-# endif
-#endif
/* Some versions of GCC (e.g., 10.x) set the warn_unused_result attribute on
__builtin_alloca. This causes alloca(0) to fail and is not easily worked
# define __NO_STRING_INLINES
#endif
-#include <stddef.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
# define strcasecmp stricmp
# elif HAVE_STRCMPI
# define strcasecmp strcmpi
-# else
-/* Create our own, in misc.c */
-int strcasecmp (const char *s1, const char *s2);
# endif
#endif
# define strncasecmp strnicmp
# elif HAVE_STRNCMPI
# define strncasecmp strncmpi
-# else
-/* Create our own, in misc.c */
-int strncasecmp (const char *s1, const char *s2, size_t n);
# endif
#endif
-#if !HAVE_MEMPCPY
-/* Create our own, in misc.c */
-void *mempcpy (void *dest, const void *src, size_t n);
-#endif
-
-#if !HAVE_STPCPY
-/* Create our own, in misc.c */
-char *stpcpy (char *dest, const char *src);
-#endif
-
#define OUTPUT_SYNC_NONE 0
#define OUTPUT_SYNC_LINE 1
#define OUTPUT_SYNC_TARGET 2
--- /dev/null
+/* Miscellaneous global declarations and portability cruft for GNU Make.
+Copyright (C) 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/>. */
+
+/*
+ This file is included at the end of config.h
+
+ That means it's included _everywhere_ as the first thing,
+ INCLUDING content imported from gnulib. BE AWARE!!
+*/
+
+#undef HAVE_CONFIG_H
+#define HAVE_CONFIG_H 1
+
+/* Specify we want GNU source code. This must be defined before any
+ system headers are included. */
+
+#define _GNU_SOURCE 1
+
+/* AIX requires this to be the first thing in the file. */
+#if HAVE_ALLOCA_H
+# include <alloca.h>
+#else
+# ifdef _AIX
+ #pragma alloca
+# else
+# if !defined(__GNUC__) && !defined(WINDOWS32)
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+# endif
+# endif
+# endif
+#endif
+
+/* Declare function prototypes for src/misc.c functions if needed. */
+
+#include <stddef.h>
+
+#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI
+int strcasecmp (const char *s1, const char *s2);
+#endif
+
+#if !HAVE_STRNCASECMP && !HAVE_STRNICMP && !HAVE_STRNCMPI
+int strncasecmp (const char *s1, const char *s2, size_t n);
+#endif
+
+#if !HAVE_MEMPCPY
+void *mempcpy (void *dest, const void *src, size_t n);
+#endif
+
+#if !HAVE_STPCPY
+char *stpcpy (char *dest, const char *src);
+#endif