summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2017-11-19 13:49:26 -0500
committerPaul Smith <psmith@gnu.org>2017-11-19 14:07:22 -0500
commitfb779d2f1e26a280f381886f3cdf444102676249 (patch)
tree4e3dca8cf801845720296a02e2f9266e4c30164b
parent1af314465e5dfe3e8baa839a32a72e83c04f26ef (diff)
downloadmake-git-fb779d2f1e26a280f381886f3cdf444102676249.tar.gz
Rework directory structure to use GNU-recommended "src" directory.
Move the source code (other than glob) into the "src" subdirectory. Update all scripting and recommendations to support this change. * *.c, *.h, w32/*: Move to src/ * configure.ac, Makefile.am, maintMakefile: Locate new source files. * Basic.mk.template, mk/*: Update for new source file locations. * NEWS, README.DOS.template: Update for new locations. * build.template, build_w32.bat, builddos.bat: Ditto. * po/POTFILES.in: Ditto * tests/run_make_tests.pl, tests/scripts/features/load*: Ditto. * make.1: Move to doc. * mk/VMS.mk: Add support for building on VMS (hopefully). * makefile.vms, prepare_w32.bat: Remove. * SCOPTIONS: Update to define HAVE_CONFIG_H
-rw-r--r--.gitignore2
-rw-r--r--Basic.mk.template47
-rw-r--r--Makefile.am82
-rw-r--r--NEWS3
-rw-r--r--README.DOS.template2
-rw-r--r--SCOPTIONS1
-rw-r--r--build.template5
-rwxr-xr-xbuild_w32.bat113
-rw-r--r--builddos.bat56
-rw-r--r--config/acinclude.m4 (renamed from acinclude.m4)0
-rw-r--r--configure.ac9
-rw-r--r--doc/make.1 (renamed from make.1)0
-rw-r--r--maintMakefile78
-rw-r--r--makefile.vms180
-rw-r--r--mk/Amiga.mk11
-rw-r--r--mk/Posix.mk.in27
-rw-r--r--mk/VMS.mk91
-rw-r--r--mk/Windows32.mk32
-rw-r--r--mk/msdosdjgpp.mk24
-rw-r--r--po/POTFILES.in60
-rw-r--r--prepare_w32.bat6
-rw-r--r--src/alloca.c (renamed from alloca.c)0
-rw-r--r--src/amiga.c (renamed from amiga.c)0
-rw-r--r--src/amiga.h (renamed from amiga.h)0
-rw-r--r--src/ar.c (renamed from ar.c)0
-rw-r--r--src/arscan.c (renamed from arscan.c)0
-rw-r--r--src/commands.c (renamed from commands.c)0
-rw-r--r--src/commands.h (renamed from commands.h)0
-rw-r--r--src/config.ami.template (renamed from config.ami.template)0
-rw-r--r--src/config.h-vms.template (renamed from config.h-vms.template)0
-rw-r--r--src/config.h.W32.template (renamed from config.h.W32.template)0
-rw-r--r--src/configh.dos.template (renamed from configh.dos.template)0
-rw-r--r--src/debug.h (renamed from debug.h)0
-rw-r--r--src/default.c (renamed from default.c)0
-rw-r--r--src/dep.h (renamed from dep.h)0
-rw-r--r--src/dir.c (renamed from dir.c)0
-rw-r--r--src/expand.c (renamed from expand.c)0
-rw-r--r--src/file.c (renamed from file.c)0
-rw-r--r--src/filedef.h (renamed from filedef.h)0
-rw-r--r--src/function.c (renamed from function.c)0
-rw-r--r--src/getloadavg.c (renamed from getloadavg.c)0
-rw-r--r--src/getopt.c (renamed from getopt.c)0
-rw-r--r--src/getopt.h (renamed from getopt.h)0
-rw-r--r--src/getopt1.c (renamed from getopt1.c)0
-rw-r--r--src/gettext.h (renamed from gettext.h)0
-rw-r--r--src/gmk-default.scm (renamed from gmk-default.scm)0
-rw-r--r--src/gnumake.h (renamed from gnumake.h)0
-rw-r--r--src/guile.c (renamed from guile.c)0
-rw-r--r--src/hash.c (renamed from hash.c)0
-rw-r--r--src/hash.h (renamed from hash.h)0
-rw-r--r--src/implicit.c (renamed from implicit.c)0
-rw-r--r--src/job.c (renamed from job.c)0
-rw-r--r--src/job.h (renamed from job.h)0
-rw-r--r--src/load.c (renamed from load.c)0
-rw-r--r--src/loadapi.c (renamed from loadapi.c)0
-rw-r--r--src/main.c (renamed from main.c)0
-rw-r--r--src/makeint.h (renamed from makeint.h)0
-rw-r--r--src/misc.c (renamed from misc.c)0
-rw-r--r--src/os.h (renamed from os.h)0
-rw-r--r--src/output.c (renamed from output.c)0
-rw-r--r--src/output.h (renamed from output.h)0
-rw-r--r--src/posixos.c (renamed from posixos.c)0
-rw-r--r--src/read.c (renamed from read.c)0
-rw-r--r--src/remake.c (renamed from remake.c)0
-rw-r--r--src/remote-cstms.c (renamed from remote-cstms.c)0
-rw-r--r--src/remote-stub.c (renamed from remote-stub.c)0
-rw-r--r--src/rule.c (renamed from rule.c)0
-rw-r--r--src/rule.h (renamed from rule.h)0
-rw-r--r--src/signame.c (renamed from signame.c)0
-rw-r--r--src/strcache.c (renamed from strcache.c)0
-rw-r--r--src/variable.c (renamed from variable.c)0
-rw-r--r--src/variable.h (renamed from variable.h)0
-rw-r--r--src/version.c (renamed from version.c)0
-rw-r--r--src/vms_exit.c (renamed from vms_exit.c)0
-rw-r--r--src/vms_export_symbol.c (renamed from vms_export_symbol.c)0
-rw-r--r--src/vms_progname.c (renamed from vms_progname.c)0
-rw-r--r--src/vmsdir.h (renamed from vmsdir.h)0
-rw-r--r--src/vmsfunctions.c (renamed from vmsfunctions.c)0
-rw-r--r--src/vmsify.c (renamed from vmsify.c)0
-rw-r--r--src/vmsjobs.c (renamed from vmsjobs.c)0
-rw-r--r--src/vpath.c (renamed from vpath.c)0
-rw-r--r--src/w32/compat/dirent.c (renamed from w32/compat/dirent.c)0
-rw-r--r--src/w32/compat/posixfcn.c (renamed from w32/compat/posixfcn.c)0
-rw-r--r--src/w32/include/dirent.h (renamed from w32/include/dirent.h)0
-rw-r--r--src/w32/include/dlfcn.h (renamed from w32/include/dlfcn.h)0
-rw-r--r--src/w32/include/pathstuff.h (renamed from w32/include/pathstuff.h)0
-rw-r--r--src/w32/include/sub_proc.h (renamed from w32/include/sub_proc.h)0
-rw-r--r--src/w32/include/w32err.h (renamed from w32/include/w32err.h)0
-rw-r--r--src/w32/pathstuff.c (renamed from w32/pathstuff.c)0
-rw-r--r--src/w32/subproc/misc.c (renamed from w32/subproc/misc.c)0
-rw-r--r--src/w32/subproc/proc.h (renamed from w32/subproc/proc.h)0
-rw-r--r--src/w32/subproc/sub_proc.c (renamed from w32/subproc/sub_proc.c)0
-rw-r--r--src/w32/subproc/w32err.c (renamed from w32/subproc/w32err.c)0
-rw-r--r--src/w32/w32os.c (renamed from w32/w32os.c)0
-rw-r--r--tests/run_make_tests.pl6
-rw-r--r--tests/scripts/features/load2
-rw-r--r--tests/scripts/features/loadapi2
97 files changed, 435 insertions, 404 deletions
diff --git a/.gitignore b/.gitignore
index 89036d48..596f33d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,8 @@ config.log
config.status
configure
stamp-h1
+.dirstamp
+mk/Posix.mk
# Build artifacts
.deps
diff --git a/Basic.mk.template b/Basic.mk.template
index ab45f87f..64cd9c3a 100644
--- a/Basic.mk.template
+++ b/Basic.mk.template
@@ -28,20 +28,40 @@
all:
-make_SOURCES = %make_SOURCES% remote-stub.c
+src = src/
+glob = glob/
+
+make_SOURCES = %make_SOURCES%
glob_SOURCES = %glob_SOURCES%
+loadavg_SOURCES = %loadavg_SOURCES%
+alloca_SOURCES = %alloca_SOURCES%
w32_SOURCES = %w32_SOURCES%
vms_SOURCES = %vms_SOURCES%
amiga_SOURCES = %amiga_SOURCES%
-OUTDIR = .
+posix_SOURCES = $(src)posixos.c
+remote_SOURCES = $(src)remote-stub.c
+
+OUTDIR =
SRCDIR = .
OBJEXT = o
EXEEXT =
-PROG = $(OUTDIR)/make$(EXEEXT)
+PREFIX = /usr/local
+INCLUDEDIR = $(PREFIX)/include
+LIBDIR = $(PREFIX)/lib
+LOCALEDIR = $(PREFIX)/share
+
+PROG = $(OUTDIR)make$(EXEEXT)
+
+prog_SOURCES = $(make_SOURCES) $(remote_SOURCES)
+
+OBJECTS = $(patsubst %.c,$(OUTDIR)%.$(OBJEXT),$(prog_SOURCES))
+OBJDIRS = $(addsuffix .,$(sort $(dir $(OBJECTS))))
+
+# Use the default value of CC
LD = $(CC)
# Reserved for command-line override
@@ -49,9 +69,8 @@ CPPFLAGS =
CFLAGS = -g -O2
LDFLAGS =
-prog_SOURCES = $(make_SOURCES)
-
-extra_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR) -I$(SRCDIR)
+extra_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src \
+ -DLIBDIR=\"$(LIBDIR)\" -DINCLUDEDIR=\"$(INCLUDEDIR)\" -DLOCALEDIR=\"$(LOCALDIR)\"
extra_CFLAGS =
extra_LDFLAGS = $(extra_CFLAGS) $(CFLAGS)
@@ -65,7 +84,10 @@ COMPILE.cmd = $(CC) $(extra_CFLAGS) $(CFLAGS) $(extra_CPPFLAGS) $(CPPFLAGS) $(TA
LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) $(LINK_OUTPUT)
-CHECK.cmd = cd tests && ./run_make_tests -make $(shell cd $(<D) && pwd)/$(<F)
+CHECK.cmd = cd $(SRCDIR)/tests && ./run_make_tests -make $(shell cd $(<D) && pwd)/$(<F)
+
+CP = cp
+CP.cmd = $(CP) $< $@
MKDIR = mkdir -p
MKDIR.cmd = $(MKDIR) $@
@@ -74,7 +96,7 @@ RM = rm -f
RM.cmd = $(RM) $(OBJECTS) $(PROG)
# Load overrides for the above variables.
-include $(wildcard mk/$(lastword $(subst -, ,$(MAKE_HOST)).mk))
+include $(firstword $(wildcard $(SRCDIR)/mk/$(lastword $(subst -, ,$(MAKE_HOST)).mk) $(OUTDIR)mk/Posix.mk $(SRCDIR)/mk/Posix.mk))
VERSION = %VERSION%
@@ -82,16 +104,15 @@ VPATH = $(SRCDIR)
all: $(PROG)
-OBJECTS = $(patsubst %.c,$(OUTDIR)/%.$(OBJEXT),$(prog_SOURCES))
-
$(PROG): $(OBJECTS)
$(LINK.cmd)
-.SECONDEXPANSION:
-$(OBJECTS): $(OUTDIR)/%.$(OBJEXT): %.c | $$(@D)/.
+$(OBJECTS): $(OUTDIR)%.$(OBJEXT): %.c
$(COMPILE.cmd)
-$(addsuffix .,$(sort $(dir $(OBJECTS)))):
+$(OBJECTS): | $(OBJDIRS)
+
+$(OBJDIRS):
$(MKDIR.cmd)
check: $(PROG)
diff --git a/Makefile.am b/Makefile.am
index 89e345e7..28e21a5b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-AUTOMAKE_OPTIONS = dist-bzip2 silent-rules std-options subdir-objects
+AUTOMAKE_OPTIONS = dist-bzip2 silent-rules std-options subdir-objects nostdinc
ACLOCAL_AMFLAGS = -I config
MAKE_HOST = @MAKE_HOST@
@@ -24,29 +24,37 @@ MAKE_HOST = @MAKE_HOST@
SUBDIRS = glob config po doc
bin_PROGRAMS = make
-include_HEADERS = gnumake.h
+include_HEADERS = src/gnumake.h
-man_MANS = make.1
+man_MANS = doc/make.1
-make_SRCS = ar.c arscan.c commands.c commands.h debug.h default.c dep.h \
- dir.c expand.c file.c filedef.h function.c getopt.c getopt.h \
- getopt1.c gettext.h guile.c hash.c hash.h implicit.c job.c \
- job.h load.c loadapi.c main.c makeint.h misc.c os.h output.c \
- output.h read.c remake.c rule.c rule.h signame.c strcache.c \
- variable.c variable.h version.c vpath.c
+make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \
+ src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \
+ src/file.c src/filedef.h src/function.c src/getopt.c \
+ 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/signame.c src/strcache.c \
+ src/variable.c src/variable.h src/version.c src/vpath.c
glob_SRCS = glob/fnmatch.c glob/fnmatch.h glob/glob.c glob/glob.h
-w32_SRCS = w32/pathstuff.c w32/w32os.c w32/compat/dirent.c \
- w32/compat/posixfcn.c w32/include/dirent.h w32/include/dlfcn.h \
- w32/include/pathstuff.h w32/include/sub_proc.h \
- w32/include/w32err.h w32/subproc/misc.c w32/subproc/proc.h \
- w32/subproc/sub_proc.c w32/subproc/w32err.c
+loadavg_SRCS = src/getloadavg.c
-vms_SRCS = vms_exit.c vms_export_symbol.c vms_progname.c vmsdir.h \
- vmsfunctions.c vmsify.c vmsjobs.c
+alloca_SRCS = src/alloca.c
-amiga_SRCS = amiga.c amiga.h
+w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \
+ src/w32/compat/posixfcn.c src/w32/include/dirent.h \
+ src/w32/include/dlfcn.h src/w32/include/pathstuff.h \
+ src/w32/include/sub_proc.h src/w32/include/w32err.h \
+ src/w32/subproc/misc.c src/w32/subproc/proc.h \
+ src/w32/subproc/sub_proc.c src/w32/subproc/w32err.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
make_SOURCES = $(make_SRCS)
EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS)
@@ -56,42 +64,44 @@ make_LDADD = $(GUILE_LIBS) $(LIBOBJS) $(ALLOCA) $(GLOBLIB) \
localedir = $(datadir)/locale
-AM_CPPFLAGS = -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" \
- -DLOCALEDIR=\"$(localedir)\" $(GLOBINC)
+AM_CPPFLAGS = -Isrc -I$(srcdir)/src $(GLOBINC) -DLIBDIR=\"$(libdir)\" \
+ -DINCLUDEDIR=\"$(includedir)\" -DLOCALEDIR=\"$(localedir)\"
AM_CFLAGS = $(GUILE_CFLAGS)
if WINDOWSENV
make_SOURCES += $(w32_SRCS)
- AM_CPPFLAGS += -I $(top_srcdir)/w32/include
+ AM_CPPFLAGS += -I $(top_srcdir)/src/w32/include
else
- make_SOURCES += posixos.c
+ make_SOURCES += src/posixos.c
endif
if USE_CUSTOMS
- make_SOURCES += remote-cstms.c
+ make_SOURCES += src/remote-cstms.c
else
- make_SOURCES += remote-stub.c
+ make_SOURCES += src/remote-stub.c
endif
# Extra stuff to include in the distribution.
-mk_FILES = Basic.mk mk/Amiga.mk mk/Windows32.mk mk/msdosdjgpp.mk
+mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk
+# We don't need this, since the standard automake output will do.
+#mk/Posix.mk.in
-# test/scripts are added via dist-hook below.
test_FILES = tests/run_make_tests tests/run_make_tests.bat \
tests/run_make_tests.pl tests/test_driver.pl \
tests/config-flags.pm.in tests/config_flags_pm.com \
tests/mkshadow tests/jhelp.pl tests/guile.supp tests/README
+# test/scripts are added via dist-hook below.
EXTRA_DIST = ChangeLog README build.sh.in $(man_MANS) \
README.customs README.OS2 \
- README.Amiga SCOPTIONS config.ami \
- README.DOS builddos.bat configh.dos \
- README.W32 config.h.W32 build_w32.bat \
- README.VMS makefile.vms makefile.com config.h-vms \
+ 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 \
vms_export_symbol_test.com \
- gmk-default.scm gmk-default.h \
+ src/gmk-default.scm src/gmk-default.h \
$(mk_FILES) $(test_FILES)
@@ -130,12 +140,12 @@ install-exec-local:
# --------------- Generate the Guile default module content
-guile.$(OBJEXT): gmk-default.h
-gmk-default.h: $(srcdir)/gmk-default.scm
+src/guile.$(OBJEXT): src/gmk-default.h
+src/gmk-default.h: $(srcdir)/src/gmk-default.scm
(echo 'static const char *const GUILE_module_defn = " '\\ \
&& sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \
- $(srcdir)/gmk-default.scm \
- && echo '";') > $@
+ $(srcdir)/src/gmk-default.scm \
+ && echo '";') > src/gmk-default.h
# --------------- Local DIST Section
@@ -169,8 +179,8 @@ check-loadavg: loadavg$(EXEEXT)
# The loadavg function is invoked during "make check" to test getloadavg.
check_PROGRAMS = loadavg
-nodist_loadavg_SOURCES = getloadavg.c
-loadavg_CPPFLAGS = -DTEST
+nodist_loadavg_SOURCES = $(loadavg_SRCS)
+loadavg_CPPFLAGS = -Isrc -I$(srcdir)/src -DTEST
loadavg_LDADD = @GETLOADAVG_LIBS@
# > check-regression
diff --git a/NEWS b/NEWS
index a452faed..aa011914 100644
--- a/NEWS
+++ b/NEWS
@@ -43,6 +43,9 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set
N-processor systems with less fear of overload.
Patch provided by Sven C. Dack <sven.c.dack@sky.com>
+* Rework the source distribution to move source files into the src/*
+ subdirectory. This aligns with modern best practices in GNU.
+
* The previous limit of 63 jobs under -jN on MS-Windows is now
increased to 4095. That limit includes the subprocess started by
the $(shell) function.
diff --git a/README.DOS.template b/README.DOS.template
index ae15bd7c..5e75f9fa 100644
--- a/README.DOS.template
+++ b/README.DOS.template
@@ -67,7 +67,7 @@ To build from sources:
4. If you are building from outside of the source directory, you
need to tell Make where the sources are, like this:
- make srcdir=c:/djgpp/gnu/make
+ make -f c:/djgpp/gnu/make/Basic.mk SRCDIR=c:/djgpp/gnu/make
or:
diff --git a/SCOPTIONS b/SCOPTIONS
index 3d69fb42..758f82f9 100644
--- a/SCOPTIONS
+++ b/SCOPTIONS
@@ -3,6 +3,7 @@ OPTIMIZE
NOVERSION
OPTIMIZERTIME
OPTIMIZERALIAS
+DEFINE HAVE_CONFIG_H
DEFINE INCLUDEDIR="include:"
DEFINE LIBDIR="lib:"
DEFINE NO_ALLOCA
diff --git a/build.template b/build.template
index 4b146933..b16d397f 100644
--- a/build.template
+++ b/build.template
@@ -44,7 +44,6 @@ libdir=${exec_prefix}/lib
includedir=${prefix}/include
localedir=${prefix}/share/locale
-aliaspath=${localedir}${PATH_SEPARATOR}.
defines="-DLOCALEDIR=\"${localedir}\" -DLIBDIR=\"${libdir}\" -DINCLUDEDIR=\"${includedir}\""' @DEFS@'
@@ -52,7 +51,7 @@ defines="-DLOCALEDIR=\"${localedir}\" -DLIBDIR=\"${libdir}\" -DINCLUDEDIR=\"${in
set -e
# These are all the objects we need to link together.
-objs="%objs% remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
+objs="%objs% src/remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
if [ x"$GLOBLIB" != x ]; then
objs="$objs %globobjs%"
@@ -63,7 +62,7 @@ fi
for file in `echo ${objs} | sed 's/\.'${OBJEXT}'/.c/g'`; do
echo compiling ${file}...
$CC $defines $CPPFLAGS $CFLAGS \
- -c -I. -I${srcdir} ${globinc} ${srcdir}/$file
+ -c -Isrc -I${srcdir}/src ${globinc} ${srcdir}/$file
done
# The object files were actually all put in the current directory.
diff --git a/build_w32.bat b/build_w32.bat
index 73afa5d3..12a1d932 100755
--- a/build_w32.bat
+++ b/build_w32.bat
@@ -24,6 +24,7 @@ if "%1" == "--help" goto Usage
set MAKE=gnumake
set GUILE=Y
set COMPILER=cl.exe
+set O=obj
set ARCH=x64
set DEBUG=N
@@ -53,6 +54,7 @@ goto ParseSW
:SetCC
set COMPILER=gcc
+set O=o
echo Building with GCC
shift
goto ParseSW
@@ -146,58 +148,61 @@ if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR%
:: Recreate it
mkdir %OUTDIR%
+mkdir %OUTDIR%\src
+mkdir %OUTDIR%\src\w32
+mkdir %OUTDIR%\src\w32\compat
+mkdir %OUTDIR%\src\w32\subproc
mkdir %OUTDIR%\glob
-mkdir %OUTDIR%\w32
-mkdir %OUTDIR%\w32\compat
-mkdir %OUTDIR%\w32\subproc
if "%GUILE%" == "Y" call :ChkGuile
echo.
echo Compiling %OUTDIR% version
-if exist config.h.W32.template call :ConfigSCM
-copy config.h.W32 %OUTDIR%\config.h
-
-call :Compile ar
-call :Compile arscan
-call :Compile commands
-call :Compile default
-call :Compile dir
-call :Compile expand
-call :Compile file
-call :Compile function
-call :Compile getloadavg
-call :Compile getopt
-call :Compile getopt1
+if exist src\config.h.W32.template call :ConfigSCM
+copy src\config.h.W32 %OUTDIR%\src\config.h
+
+if exist %OUTDIR%\link.sc del %OUTDIR%\link.sc
+
+call :Compile src\ar
+call :Compile src\arscan
+call :Compile src\commands
+call :Compile src\default
+call :Compile src\dir
+call :Compile src\expand
+call :Compile src\file
+call :Compile src\function
+call :Compile src\getloadavg
+call :Compile src\getopt
+call :Compile src\getopt1
+call :Compile src\guile GUILE
+call :Compile src\hash
+call :Compile src\implicit
+call :Compile src\job
+call :Compile src\load
+call :Compile src\loadapi
+call :Compile src\main GUILE
+call :Compile src\misc
+call :Compile src\output
+call :Compile src\read
+call :Compile src\remake
+call :Compile src\remote-stub
+call :Compile src\rule
+call :Compile src\signame
+call :Compile src\strcache
+call :Compile src\variable
+call :Compile src\version
+call :Compile src\vpath
+call :Compile src\w32\pathstuff
+call :Compile src\w32\w32os
+call :Compile src\w32\compat\posixfcn
+call :Compile src\w32\subproc\misc
+call :Compile src\w32\subproc\sub_proc
+call :Compile src\w32\subproc\w32err
call :Compile glob\fnmatch
call :Compile glob\glob
-call :Compile guile GUILE
-call :Compile hash
-call :Compile implicit
-call :Compile job
-call :Compile load
-call :Compile loadapi
-call :Compile main GUILE
-call :Compile misc
-call :Compile output
-call :Compile read
-call :Compile remake
-call :Compile remote-stub
-call :Compile rule
-call :Compile signame
-call :Compile strcache
-call :Compile variable
-call :Compile version
-call :Compile vpath
-call :Compile w32\pathstuff
-call :Compile w32\w32os
-call :Compile w32\compat\posixfcn
-call :Compile w32\subproc\misc
-call :Compile w32\subproc\sub_proc
-call :Compile w32\subproc\w32err
-
-if not "%COMPILER%" == "gcc" call :Compile w32\compat\dirent
+
+if not "%COMPILER%" == "gcc" call :Compile src\w32\compat\dirent
call :Link
@@ -208,21 +213,21 @@ if exist %OUTDIR%\%MAKE%.exe copy /Y Basic.mk Makefile
goto :EOF
:Compile
+echo %OUTDIR%\%1.%O% >>%OUTDIR%\link.sc
set EXTRAS=
if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%"
if "%COMPILER%" == "gcc" goto GccCompile
:: MSVC Compile
echo on
-%COMPILER% /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR% /I . /I glob /I w32/include /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.obj /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c
+%COMPILER% /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR%/src /I src /I glob /I src/w32/include /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.%O% /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c
@echo off
-echo %OUTDIR%\%1.obj >>%OUTDIR%\link.sc
goto :EOF
:GccCompile
:: GCC Compile
echo on
-gcc -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%\%1.o -c %1.c
+gcc -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I./glob -I./src/w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%\%1.%O% -c %1.c
@echo off
goto :EOF
@@ -240,18 +245,19 @@ goto :EOF
:GccLink
:: GCC Link
echo on
-gcc -mthreads -gdwarf-2 -g3 -o %OUTDIR%\%MAKE%.exe %OUTDIR%\variable.o %OUTDIR%\rule.o %OUTDIR%\remote-stub.o %OUTDIR%\commands.o %OUTDIR%\file.o %OUTDIR%\getloadavg.o %OUTDIR%\default.o %OUTDIR%\signame.o %OUTDIR%\expand.o %OUTDIR%\dir.o %OUTDIR%\main.o %OUTDIR%\getopt1.o %OUTDIR%\guile.o %OUTDIR%\job.o %OUTDIR%\output.o %OUTDIR%\read.o %OUTDIR%\version.o %OUTDIR%\getopt.o %OUTDIR%\arscan.o %OUTDIR%\remake.o %OUTDIR%\misc.o %OUTDIR%\hash.o %OUTDIR%\strcache.o %OUTDIR%\ar.o %OUTDIR%\function.o %OUTDIR%\vpath.o %OUTDIR%\implicit.o %OUTDIR%\loadapi.o %OUTDIR%\load.o %OUTDIR%\glob\glob.o %OUTDIR%\glob\fnmatch.o %OUTDIR%\w32\pathstuff.o %OUTDIR%\w32\compat\posixfcn.o %OUTDIR%\w32\w32os.o %OUTDIR%\w32\subproc\misc.o %OUTDIR%\w32\subproc\sub_proc.o %OUTDIR%\w32\subproc\w32err.o %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -Wl,--out-implib=%OUTDIR%\libgnumake-1.dll.a
+echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc
+gcc -mthreads -gdwarf-2 -g3 %OPTS% -o %OUTDIR%\%MAKE%.exe @%OUTDIR%\link.sc -Wl,--out-implib=%OUTDIR%\libgnumake-1.dll.a
@echo off
goto :EOF
:ConfigSCM
echo Generating config from SCM templates
-sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\config.h.W32.sed
-echo s,%%PACKAGE%%,make,g >> %OUTDIR%\config.h.W32.sed
-sed -f %OUTDIR%\config.h.W32.sed config.h.W32.template > config.h.W32
-echo static const char *const GUILE_module_defn = ^" \> gmk-default.h
-sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" gmk-default.scm >> gmk-default.h
-echo ^";>> gmk-default.h
+sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\src\config.h.W32.sed
+echo s,%%PACKAGE%%,make,g >> %OUTDIR%\src\config.h.W32.sed
+sed -f %OUTDIR%\src\config.h.W32.sed src\config.h.W32.template > src\config.h.W32
+echo static const char *const GUILE_module_defn = ^" \ > src\gmk-default.h
+sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" src\gmk-default.scm >> src\gmk-default.h
+echo ^";>> src\gmk-default.h
goto :EOF
:ChkGuile
@@ -318,6 +324,7 @@ set GUILELIBS=
set LINKOPTS=
set MAKE=
set NOGUILE=
+set O=
set OPTS=
set OUTDIR=
set PKGMSC=
diff --git a/builddos.bat b/builddos.bat
index b96318d5..0902b0d9 100644
--- a/builddos.bat
+++ b/builddos.bat
@@ -31,39 +31,39 @@ if not "%XSRC%"=="%1" goto SmallEnv
:SrcDone
-copy /Y %XSRC%/configh.dos ./config.h
+copy /Y %XSRC%/src/configh.dos ./src/config.h
if not exist glob mkdir glob
rem Echo ON so they will see what is going on.
@echo on
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/commands.c -o commands.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/output.c -o output.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/job.c -o job.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/dir.c -o dir.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/file.c -o file.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/misc.c -o misc.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/main.c -o main.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g %XSRC%/read.c -o read.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g %XSRC%/remake.c -o remake.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/rule.c -o rule.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/implicit.c -o implicit.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/default.c -o default.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/variable.c -o variable.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/expand.c -o expand.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/function.c -o function.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/vpath.c -o vpath.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/hash.c -o hash.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/strcache.c -o strcache.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/version.c -o version.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/ar.c -o ar.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/arscan.c -o arscan.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/signame.c -o signame.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/remote-stub.c -o remote-stub.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/getopt.c -o getopt.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/getopt1.c -o getopt1.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/glob/glob.c -o glob/glob.o
-gcc -c -I%XSRC% -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/glob/fnmatch.c -o glob/fnmatch.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/commands.c -o commands.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/output.c -o output.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/job.c -o job.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/dir.c -o dir.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/file.c -o file.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/misc.c -o misc.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/main.c -o main.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g %XSRC%/src/read.c -o read.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g %XSRC%/src/remake.c -o remake.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/rule.c -o rule.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/implicit.c -o implicit.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/default.c -o default.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/variable.c -o variable.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/expand.c -o expand.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/function.c -o function.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/vpath.c -o vpath.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/hash.c -o hash.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/strcache.c -o strcache.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/version.c -o version.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/ar.c -o ar.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/arscan.c -o arscan.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/signame.c -o signame.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/remote-stub.c -o remote-stub.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt.c -o getopt.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt1.c -o getopt1.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/glob/glob.c -o glob/glob.o
+gcc -c -I%XSRC%/src -I%XSRC%/glob -DHAVE_CONFIG_H -O2 -g %XSRC%/glob/fnmatch.c -o glob/fnmatch.o
@echo off
echo commands.o > respf.$$$
for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
diff --git a/acinclude.m4 b/config/acinclude.m4
index 544fd862..544fd862 100644
--- a/acinclude.m4
+++ b/config/acinclude.m4
diff --git a/configure.ac b/configure.ac
index b7500ce4..8c72568c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,8 +22,11 @@ AC_PREREQ([2.69])
# Autoconf setup
AC_CONFIG_AUX_DIR([config])
-AC_CONFIG_SRCDIR([vpath.c])
-AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_SRCDIR([src/vpath.c])
+AC_CONFIG_HEADERS([src/config.h])
+
+# For now all our libobj code is in src/
+AC_CONFIG_LIBOBJ_DIR([src])
# Automake setup
# We have to enable "foreign" because ChangeLog is auto-generated
@@ -505,6 +508,8 @@ AS_IF([test "x$make_cv_load" = xno && test "x$user_load" = xyes],
# Specify what files are to be created.
AC_CONFIG_FILES([Makefile glob/Makefile po/Makefile.in config/Makefile \
doc/Makefile tests/config-flags.pm])
+# We don't need this, since the standard automake output will do.
+#mk/Posix.mk
# OK, do it!
diff --git a/make.1 b/doc/make.1
index 031321e4..031321e4 100644
--- a/make.1
+++ b/doc/make.1
diff --git a/maintMakefile b/maintMakefile
index 19a154f4..c9e552e5 100644
--- a/maintMakefile
+++ b/maintMakefile
@@ -36,7 +36,7 @@ AM_CPPFLAGS += $(MAKE_MAINTAINER_MODE)
# -Wwrite-strings
TEMPLATES = README README.DOS README.W32 README.OS2 \
- config.ami configh.dos config.h.W32 config.h-vms
+ src/config.ami src/configh.dos src/config.h.W32 src/config.h-vms
# Create preprocessor output files--GCC specific!
%.i : %.c
@@ -53,19 +53,22 @@ $(TEMPLATES) : % : %.template Makefile
# Construct Makefiles by adding on dependencies, etc.
#
+srccvt = $(patsubst src/%,$$(src)%,$(filter %.c,$1))
Basic.mk: Basic.mk.template .dep_segment Makefile
rm -f $@
sed -e 's@%VERSION%@$(VERSION)@g' \
- -e 's@%make_SOURCES%@$(filter %.c,$(make_SRCS))@g' \
- -e 's@%glob_SOURCES%@$(filter %.c,$(glob_SRCS))@g' \
- -e 's@%w32_SOURCES%@$(filter %.c,$(w32_SRCS))@g' \
- -e 's@%vms_SOURCES%@$(filter %.c,$(vms_SRCS))@g' \
- -e 's@%amiga_SOURCES%@$(filter %.c,$(amiga_SRCS))@g' \
+ -e 's@%make_SOURCES%@$(call srccvt,$(make_SRCS))@g' \
+ -e 's@%glob_SOURCES%@$(patsubst glob/%,$$(glob)%,$(filter %.c,$(glob_SRCS)))@g' \
+ -e 's@%loadavg_SOURCES%@$(call srccvt,$(loadavg_SRCS))@g' \
+ -e 's@%alloca_SOURCES%@$(call srccvt,$(alloca_SRCS))@g' \
+ -e 's@%w32_SOURCES%@$(call srccvt,$(w32_SRCS))@g' \
+ -e 's@%vms_SOURCES%@$(call srccvt,$(vms_SRCS))@g' \
+ -e 's@%amiga_SOURCES%@$(call srccvt,$(amiga_SRCS))@g' \
$< > $@
echo >>$@; echo '# --------------- DEPENDENCIES' >>$@; echo '#' >>$@; \
- sed -e 's@^\([^ ]*\)\.o:@$$(OUTDIR)/\1.$$(OBJEXT):@' \
+ sed -e 's@^\([^ ]*\)\.o:@$$(OUTDIR)\1.$$(OBJEXT):@' \
-e 's@\([^ ]*\.[ch]\)@$$(SRCDIR)/\1@g' \
- -e 's@$$(SRCDIR)/config.h@$$(OUTDIR)/config.h@g' \
+ -e 's@$$(SRCDIR)/src/config.h@$$(OUTDIR)src/config.h@g' \
$(word 2,$^) >>$@
chmod a-w $@
@@ -73,7 +76,7 @@ Basic.mk: Basic.mk.template .dep_segment Makefile
#
build.sh.in: build.template Makefile
rm -f $@
- sed -e 's@%objs%@$(patsubst %.o,%.$${OBJEXT},$(filter-out remote-%,$(make_OBJECTS)))@g' \
+ sed -e 's@%objs%@$(patsubst %.o,%.$${OBJEXT},$(filter-out src/remote-%,$(make_OBJECTS)))@g' \
-e 's@%globobjs%@$(patsubst %.c,%.$${OBJEXT},$(filter %.c,$(glob_SRCS)))@g' \
$< > $@
chmod a-w+x $@
@@ -84,10 +87,10 @@ build.sh.in: build.template Makefile
# Automake used to have a --generate-deps flag but it's gone now, so we have
# to do it ourselves.
#
-DEP_FILES := $(wildcard $(DEPDIR)/*.Po)
+DEP_FILES := $(wildcard src/$(DEPDIR)/*.Po)
.dep_segment: Makefile.am maintMakefile $(DEP_FILES)
rm -f $@
- (for f in $(DEPDIR)/*.Po; do \
+ (for f in src/$(DEPDIR)/*.Po; do \
echo ""; \
echo "# $$f"; \
sed -e '/^[^:]*\.[ch] *:/d' \
@@ -157,7 +160,7 @@ move_if_change = if test -r $(target) && cmp -s $(target).t $(target); then \
# ftp://tiger.informatik.hu-berlin.de/pub/po/maint/
po_wget_flags = --recursive --level=1 --no-directories --no-check-certificate
-po_repo = http://translationproject.org/latest/$(PACKAGE)
+po_repo = https://translationproject.org/latest/$(PACKAGE)
po_sync = translationproject.org::tp/latest/$(PACKAGE)/
.PHONY: do-po-update po-update
@@ -182,8 +185,8 @@ po-update:
# with each of the files that belongs to some other package and is
# regularly updated from the specified URL.
-cvs-url = http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~
-git-url = http://git.savannah.gnu.org/cgit
+cvs-url = https://savannah.gnu.org/cgi-bin/viewcvs/~checkout~
+git-url = https://git.savannah.gnu.org/cgit
target = $(patsubst get-%,%,$@)
config-url = $(git-url)/config.git/plain/$(patsubst get-config/%,%,$@)
@@ -231,22 +234,51 @@ check-alt-config: \
# Trick GNU make so it doesn't run the submake as a recursive make.
NR_MAKE = $(MAKE)
-# Check builds both with build.sh and with make
+# Check builds both with build.sh and with make and with Basic.mk
checkcfg.%: distdir
@echo "Building $@ (output in checkcfg.$*.log)"
- @exec >'checkcfg.$*.log' 2>&1; \
+ exec >'checkcfg.$*.log' 2>&1; \
rm -rf $(distdir)/_build \
&& mkdir $(distdir)/_build \
&& cd $(distdir)/_build \
&& echo "Testing configure with $(subst ^,=,$*)" \
&& ../configure --srcdir=.. $(subst ^,=,$*) \
- $(AM_DISTCHECK_CONFIGURE_FLAGS) $(DISTCHECK_CONFIGURE_FLAGS) \
- CFLAGS='$(AM_CFLAGS)' \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) $(DISTCHECK_CONFIGURE_FLAGS)
+ exec >>'checkcfg.$*.log' 2>&1; \
+ cd $(distdir)/_build \
&& ./build.sh \
&& ./make $(AM_MAKEFLAGS) check \
- && rm -f *.o make \
- && $(NR_MAKE) $(AM_MAKEFLAGS) \
- && ./make $(AM_MAKEFLAGS) check
+ && ./make $(AM_MAKEFLAGS) clean
+ exec >>'checkcfg.$*.log' 2>&1; \
+ cd $(distdir)/_build \
+ && $(NR_MAKE) $(AM_MAKEFLAGS) CFLAGS='$(AM_CFLAGS)' \
+ && ./make $(AM_MAKEFLAGS) check \
+ && ./make $(AM_MAKEFLAGS) clean
+
+# Try the different build methods
+checkcfg.basicmk: checkcfg.% : distdir
+ @echo "Building $@ (output in checkcfg.$*.log)"
+ exec >'checkcfg.$*.log' 2>&1; \
+ rm -rf $(distdir)/_build \
+ && mkdir $(distdir)/_build \
+ && cd $(distdir)/_build \
+ && echo "Testing Basic.mk SRCDIR=.." \
+ && ../configure --srcdir=.. \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) $(DISTCHECK_CONFIGURE_FLAGS)
+ exec >>'checkcfg.$*.log' 2>&1; \
+ cd $(distdir)/_build \
+ && $(NR_MAKE) $(AM_MAKEFLAGS) -f ../Basic.mk CFLAGS='$(AM_CFLAGS)' SRCDIR=.. \
+ && ./make $(AM_MAKEFLAGS) -f ../Basic.mk SRCDIR=.. check \
+ && ./make $(AM_MAKEFLAGS) -f ../Basic.mk SRCDIR=.. clean
+ exec >>'checkcfg.$*.log' 2>&1; \
+ echo "Testing Basic.mk SRCDIR=." \
+ && rm -rf $(distdir)/_build \
+ && cd $(distdir) \
+ && ./configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(NR_MAKE) $(AM_MAKEFLAGS) -f Basic.mk CFLAGS='$(AM_CFLAGS)' \
+ && ./make $(AM_MAKEFLAGS) -f Basic.mk check \
+ && ./make $(AM_MAKEFLAGS) -f Basic.mk clean
## --------------- ##
@@ -273,11 +305,11 @@ changelog-check:
fi
# Verify that all source files using _() are listed in po/POTFILES.in.
-# Ignore makeint.h; it defines _().
+# Ignore src/makeint.h; it defines _().
po-check:
if test -f po/POTFILES.in; then \
grep '^[^#]' po/POTFILES.in | sort > $@-1; \
- $(PERL) -wn -e 'if (/\b_\(/) { $$ARGV eq "./makeint.h" || print "$$ARGV\n" and close ARGV }' `find . -name '*.[ch]'` | sed 's,^\./,,' | sort > $@-2; \
+ $(PERL) -wn -e 'if (/\b_\(/) { $$ARGV eq "./src/makeint.h" || print "$$ARGV\n" and close ARGV }' `find . -name '*.[ch]'` | sed 's,^\./,,' | sort > $@-2; \
diff -u $@-1 $@-2 || exit 1; \
rm -f $@-1 $@-2; \
fi
diff --git a/makefile.vms b/makefile.vms
deleted file mode 100644
index 6670a0bc..00000000
--- a/makefile.vms
+++ /dev/null
@@ -1,180 +0,0 @@
-# -*-Makefile-*- to build GNU make on VMS
-#
-# Copyright (C) 1996-2017 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/>.
-
-# VMS extensions from GNU Make 3.60 imported by
-# Klaus Kämpf (kkaempf@rmi.de)
-# Modified for version 3.78.1 by Hartmut.Becker@compaq.com.
-# Modified for version 3.80 by zinser@decus.de
-# Modified for versions 3.81, 3.99.90 by Hartmut Becker
-
-CC = cc
-CP = copy
-
-%.obj: %.c
- $(CC) $(CFLAGS)/obj=$@ $<
-#
-# Makefile for GNU Make
-#
-
-ifeq ($(CC),cc)
-cinclude = /nested=none/include=([],[.glob])
-cprefix = /prefix=(all,except=(glob,globfree))
-cwarn = /standard=relaxed/warn=(disable=questcompare)
-CFLAGS = $(defines) $(cinclude)$(cprefix)$(cwarn)
-else
-CFLAGS = $(defines) $(cinclude)
-endif
-#LDFLAGS = /deb
-LDFLAGS =
-
-ifeq ($(CC),cc)
-defines = /define=("unlink=remove","HAVE_CONFIG_H","VMS","allocated_variable_expand_for_file=alloc_var_expand_for_file")
-else
-ifeq ($(ARCH),VAX)
-defines = /define=("HAVE_CONFIG_H","GCC_IS_NATIVE","VAX")
-else
-defines = /define=("HAVE_CONFIG_H","GCC_IS_NATIVE")
-endif
-endif
-
-LOAD_AVG = /define="NO_LDAV"
-
-# If you don't want archive support, comment these out.
-ARCHIVES = ,ar.obj,arscan.obj
-ARCHIVES_SRC = ar.c arscan.c
-
-# If your system needs extra libraries loaded in, define them here.
-# System V probably need -lPW for alloca.
-# if on vax, uncomment the following line
-#LOADLIBES = ,c.opt/opt
-ifeq ($(CC),cc)
-#LOADLIBES =,sys$$library:vaxcrtl.olb/lib
-CRT0 =
-else
-LOADLIBES =,gnu_cc_library:libgcc.olb/lib
-endif
-
-# If your system doesn't have alloca, or the one provided is bad,
-# get it from the Emacs distribution and define these.
-#ALLOCA = ,alloca.obj
-#ALLOCASRC = alloca.c
-
-# If there are remote execution facilities defined,
-# enable them with switches here (see remote-*.c).
-REMOTE =
-
-# Any extra object files your system needs.
-extras = ,signame.obj,remote-stub.obj,vmsfunctions.obj,vmsify.obj
-#,directory.obj
-# as an alternative:
-glob = ,[.glob]glob.obj,[.glob]fnmatch.obj
-getopt = ,getopt.obj,getopt1.obj
-# Directory to install 'make' in.
-bindir = []
-# Directory to install the man page in.
-mandir = []
-# Number to put on the man page filename.
-manext = 1
-
-guile = ,guile.obj
-
-objs = commands.obj,job.obj,output.obj,dir.obj,file.obj,misc.obj,hash.obj,\
- load.obj,main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
- default.obj,variable.obj,expand.obj,function.obj,strcache.obj,\
- vpath.obj,version.obj,vms_progname.obj,vms_exit.obj,\
- vms_export_symbol.obj$(guile)$(ARCHIVES)$(extras)$(getopt)$(glob)
-
-srcs = commands.c job.c output.c dir.c file.c misc.c guile.c hash.c \
- load.c main.c read.c remake.c rule.c implicit.c \
- default.c variable.c expand.c function.c strcache.c \
- vpath.c version.c vmsfunctions.c vmsify.c vms_progname.c vms_exit.c \
- vms_export_symbol.c $(ARCHIVES_SRC) $(ALLOCASRC) \
- commands.h dep.h filedef.h job.h output.h makeint.h rule.h variable.h
-
-
-.PHONY: all doc
-all: config.h make.exe
-
-doc: make.info make.dvi
-
-
-make.exe: $(objs)
- $(LD)$(LDFLAGS)/exe=$@ $^$(LOADLIBES)$(CRT0)
-
-.PHONY: clean realclean
-clean:
- -purge [...]
- -$(RM) make.exe;,*.obj;
- -$(RM) [.glob]*.obj;
-
-ar.obj: ar.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h dep.h \
- [.glob]fnmatch.h
-arscan.obj: arscan.c makeint.h config.h gnumake.h gettext.h
-commands.obj: commands.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h dep.h variable.h job.h output.h commands.h
-default.obj: default.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h variable.h rule.h dep.h job.h output.h commands.h
-dir.obj: dir.c makeint.h config.h gnumake.h gettext.h hash.h filedef.h \
- dep.h [.glob]glob.h
-expand.obj: expand.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h job.h output.h commands.h variable.h rule.h
-file.obj: file.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h job.h output.h commands.h variable.h debug.h
-[.glob]fnmatch.obj: [.glob]fnmatch.c config.h [.glob]fnmatch.h
-function.obj: function.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h variable.h dep.h job.h output.h commands.h debug.h
-getopt.obj: getopt.c config.h gettext.h getopt.h
-getopt1.obj: getopt1.c config.h getopt.h
-[.glob]glob.obj: [.glob]glob.c config.h [.glob]fnmatch.h [.glob]glob.h
-guile.obj: guile.c makeint.h config.h gnumake.h gettext.h
-hash.obj: hash.c makeint.h config.h gnumake.h gettext.h hash.h
-implicit.obj: implicit.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h rule.h dep.h debug.h variable.h job.h output.h commands.h
-job.obj: job.c makeint.h config.h gnumake.h gettext.h job.h output.h debug.h \
- filedef.h hash.h commands.h variable.h debug.h vmsjobs.c
-load.obj: load.c makeint.h config.h gnumake.h gettext.h
-main.obj: main.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h variable.h job.h output.h commands.h rule.h debug.h getopt.h
-misc.obj: misc.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h debug.h
-output.obj: output.c makeint.h config.h gnumake.h gettext.h job.h output.h
-read.obj: read.c makeint.h config.h gnumake.h gettext.h [.glob]glob.h \
- filedef.h hash.h dep.h job.h output.h commands.h variable.h rule.h \
- debug.h
-remake.obj: remake.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h job.h output.h commands.h dep.h variable.h debug.h
-remote-stub.obj: remote-stub.c makeint.h config.h gnumake.h gettext.h \
- filedef.h hash.h job.h output.h commands.h
-rule.obj: rule.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h job.h output.h commands.h variable.h rule.h
-signame.obj: signame.c makeint.h config.h gnumake.h gettext.h
-strcache.obj: strcache.c makeint.h config.h gnumake.h gettext.h hash.h
-variable.obj: variable.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h dep.h job.h output.h commands.h variable.h rule.h
-version.obj: version.c config.h
-vmsfunctions.obj: vmsfunctions.c makeint.h config.h gnumake.h gettext.h \
- debug.h job.h output.h vmsdir.h
-vmsify.obj: vmsify.c
-vpath.obj: vpath.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- variable.h
-vms_progname.obj: vms_progname.c
-vms_exit.obj: vms_exit.c
-vms_export_symbol.obj: vms_export_symbol.c
-
-config.h: config.h-vms
- $(CP) $< $@
diff --git a/mk/Amiga.mk b/mk/Amiga.mk
index fe2a1f64..180cc784 100644
--- a/mk/Amiga.mk
+++ b/mk/Amiga.mk
@@ -20,16 +20,19 @@
CC = sc
LD = $(CC) Link
+
RM = delete
MKDIR = makedir
+CP = copy
+CP.cmd = $(CP) $< To $@
CPPFLAGS =
CFLAGS =
LDFLAGS =
-prog_SOURCES += alloca.c getloadavg.c $(glob_SOURCES) $(amiga_SOURCES)
+prog_SOURCES += $(alloca_SOURCES) $(loadavg_SOURCES) $(glob_SOURCES) $(amiga_SOURCES)
-extra_CPPFLAGS = IDir "" IDir $(SRCDIR)/glob
+extra_CPPFLAGS = IDir $(OUTDIR)src IDir $(SRCDIR)/src IDir $(SRCDIR)/glob
C_SOURCE =
OUTPUT_OPTION =
@@ -37,5 +40,5 @@ LDFLAGS = From LIB:cres.o
LDLIBS = Lib LIB:sc.lib LIB:amiga.lib
LINK_OUTPUT = To $@
-$(OUTDIR)/config.h: $(SRCDIR)/config.ami
- copy $< To $@
+$(OUTDIR)src/config.h: $(SRCDIR)/src/config.ami
+ $(CP.cmd)
diff --git a/mk/Posix.mk.in b/mk/Posix.mk.in
new file mode 100644
index 00000000..45951f28
--- /dev/null
+++ b/mk/Posix.mk.in
@@ -0,0 +1,27 @@
+# GNU -*-Makefile-*- to build GNU make on POSIX systems
+#
+# POSIX overrides for use with Basic.mk.
+#
+# Copyright (C) 2017 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/>.
+
+# Very little is needed here since the default Basic.mk assumes POSIX
+
+prog_SOURCES += $(posix_SOURCES)
+
+extra_CPPFLAGS += @GUILE_CFLAGS@ @GLOBINC@
+extra_LDFLAGS += @AM_LDFLAGS@
+LDLIBS += @GUILE_LIBS@ @LIBOBJS@ @GETLOADAVG_LIBS@ @GLOBLIB@ @ALLOCA@ @LIBINTL@ @LIBS@
diff --git a/mk/VMS.mk b/mk/VMS.mk
new file mode 100644
index 00000000..a436239f
--- /dev/null
+++ b/mk/VMS.mk
@@ -0,0 +1,91 @@
+# GNU -*-Makefile-*- to build GNU make on VMS
+#
+# VMS overrides for use with Basic.mk.
+#
+# Copyright (C) 2017 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/>.
+
+src = [.src]
+glob = [.glob]
+SRCDIR = []
+
+OBJEXT = .obj
+EXEEXT = .exe
+
+CP = copy
+MKDIR = create/dir
+RM = delete
+
+e =
+s = $e $e
+c = ,
+
+defs = HAVE_CONFIG_H
+
+ifeq ($(CC),cc)
+defs += VMS unlink=remove allocated_variable_expand_for_file=alloc_var_expand_for_file
+else
+defs += GCC_IS_NATIVE
+ifeq ($(ARCH),VAX)
+defs += VAX
+endif
+endif
+
+extra_CPPFLAGS = /define=($(subst $s,$c,$(patsubst %,"%",$(defs))))
+
+cinclude = /nested=none/include=($(src),$(glob))
+ifeq ($(CC),cc)
+cprefix = /prefix=(all,except=(glob,globfree))
+cwarn = /standard=relaxed/warn=(disable=questcompare)
+endif
+
+extra_CFLAGS = $(cinclude)$(cprefix)$(cwarn)
+
+#extra_LDFLAGS = /deb
+extra_LDFLAGS =
+
+# If your system needs extra libraries loaded in, define them here.
+# System V probably need -lPW for alloca.
+# if on vax, uncomment the following line
+#LDLIBS = ,c.opt/opt
+ifeq ($(CC),cc)
+#LDLIBS =,sys$$library:vaxcrtl.olb/lib
+else
+LDLIBS =,gnu_cc_library:libgcc.olb/lib
+endif
+
+# If your system doesn't have alloca, or the one provided is bad,
+# uncomment this
+#ALLOCA = $(alloca_SOURCES)
+
+prog_SOURCES += $(ALLOCA) $(glob_SOURCES) $(vms_SOURCES)
+
+COMPILE.cmd = $(CC) $(extra_CFLAGS)$(CFLAGS)/obj=$@ $(extra_CPPFLAGS)$(CPPFLAGS) $<
+
+LINK.cmd = $(LD)$(extra_LDFLAGS)$(LDFLAGS)/exe=$@ $(subst $s,$c,$^)$(LDLIBS)
+
+# Don't know how to do this
+CHECK.cmd =
+
+define RM.cmd
+ -purge [...]
+ -$(RM) $(PROG);
+ -$(RM) $(src)*.$(OBJEXT);
+endef
+
+
+$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h.W32
+ $(CP.cmd)
diff --git a/mk/Windows32.mk b/mk/Windows32.mk
index 8848827b..fb643174 100644
--- a/mk/Windows32.mk
+++ b/mk/Windows32.mk
@@ -1,6 +1,6 @@
# GNU -*-Makefile-*- to build GNU make on Windows
#
-# Windows overrides for use with Makebase.mk.
+# Windows overrides for use with Basic.mk.
#
# Copyright (C) 2017 Free Software Foundation, Inc.
# This file is part of GNU Make.
@@ -25,7 +25,7 @@ TARGET_TYPE = release
TOOLCHAIN = msvc
-prog_SOURCES += getloadavg.c $(glob_SOURCES) $(w32_SOURCES)
+prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES) $(w32_SOURCES)
w32_LIBS = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 \
oleaut32 uuid odbc32 odbccp32
@@ -39,7 +39,7 @@ msvc_CC = cl.exe
msvc_LD = link.exe
msvc_CPPFLAGS = /DHAVE_CONFIG_H /DWINDOWS32 /DWIN32 /D_CONSOLE
-msvc_CPPFLAGS += /I$(OUTDIR) /I$(SRCDIR) /I$(SRCDIR)/glob /I$(SRCDIR)/w32/include
+msvc_CPPFLAGS += /I$(OUTDIR)src /I$(SRCDIR)/src /I$(SRCDIR)/glob /I$(SRCDIR)/src/w32/include
msvc_CFLAGS = /nologo /MT /W4 /EHsc
msvc_CFLAGS += /FR$(OUTDIR) /Fp$(BASE_PROG).pch /Fd$(BASE_PROG).pdb
@@ -52,11 +52,11 @@ msvc_C_SOURCE = /c
msvc_OUTPUT_OPTION = /Fo$@
msvc_LINK_OUTPUT = /OUT:$@
-release_msvc_OUTDIR = ./WinRel
+release_msvc_OUTDIR = ./WinRel/
release_msvc_CPPFLAGS = /D NDEBUG
release_msvc_CFLAGS = /O2
-debug_msvc_OUTDIR = ./WinDebug
+debug_msvc_OUTDIR = ./WinDebug/
debug_msvc_CPPFLAGS = /D _DEBUG
debug_msvc_CFLAGS = /Zi /Od
debug_msvc_LDFLAGS = /DEBUG
@@ -65,10 +65,10 @@ debug_msvc_LDFLAGS = /DEBUG
gcc_CC = gcc
gcc_LD = $(gcc_CC)
-release_gcc_OUTDIR = ./GccRel
-debug_gcc_OUTDIR = ./GccDebug
+release_gcc_OUTDIR = ./GccRel/
+debug_gcc_OUTDIR = ./GccDebug/
-gcc_CPPFLAGS = -DHAVE_CONFIG_H -I$(OBJDIR) -I$(SRCDIR) -I$(SRCDIR)/glob -I$(SRCDIR)/w32/include
+gcc_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(SRCDIR)/glob -I$(SRCDIR)/src/w32/include
gcc_CFLAGS = -mthreads -Wall -std=gnu99 -gdwarf-2 -g3
gcc_LDFLAGS = -mthreads -gdwarf-2 -g3
gcc_LDLIBS = $(addprefix -l,$(w32_libs))
@@ -86,8 +86,14 @@ LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $^ $(LDLIBS) $(LINK_
CHECK.cmd = cmd /c cd tests \& .\run_make_tests.bat -make ../$(PROG)
-MKDIR.cmd = cmd /c mkdir $(subst /,\\,$@)
-RM.cmd = cmd /c del /F /Q $(subst /,\\,$(OBJECTS) $(PROG))
+MKDIR = cmd /c mkdir
+MKDIR.cmd = $(MKDIR) $(subst /,\\,$@)
+
+RM = cmd /c del /F /Q
+RM.cmd = $(RM) $(subst /,\\,$(OBJECTS) $(PROG))
+
+CP = cmd /c copy /Y
+CP.cmd = $(CP) $(subst /,\\,$< $@)
CC = $($(TOOLCHAIN)_CC)
LD = $($(TOOLCHAIN)_LD)
@@ -104,7 +110,7 @@ EXEEXT = .exe
_CUSTOM = $($(TOOLCHAIN)_$1) $($(TARGET_TYPE)_$1) $($(TARGET_TYPE)_$(TOOLCHAIN)_$1)
# I'm not sure why this builds gnumake rather than make...?
-PROG = $(OUTDIR)/gnumake$(EXEEXT)
+PROG = $(OUTDIR)gnumake$(EXEEXT)
BASE_PROG = $(basename $(PROG))
extra_CPPFLAGS = $(call _CUSTOM,CPPFLAGS)
@@ -112,5 +118,5 @@ extra_CFLAGS = $(call _CUSTOM,CFLAGS)
extra_LDFLAGS = $(call _CUSTOM,LDFLAGS)
LDLIBS = $(call _CUSTOM,LDLIBS)
-$(OUTDIR)/config.h: $(SRCDIR)/config.h.W32
- cmd /c copy /Y $(subst /,\\,$< $@)
+$(OUTDIR)src/config.h: $(SRCDIR)/src/config.h.W32
+ $(CP.cmd)
diff --git a/mk/msdosdjgpp.mk b/mk/msdosdjgpp.mk
index a9dd2501..7d617938 100644
--- a/mk/msdosdjgpp.mk
+++ b/mk/msdosdjgpp.mk
@@ -1,6 +1,6 @@
# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP
#
-# MS-DOS overrides for use with Makebase.mk.
+# MS-DOS overrides for use with Basic.mk.
#
# Copyright (C) 2017 Free Software Foundation, Inc.
# This file is part of GNU Make.
@@ -23,12 +23,22 @@ EXEEXT = .exe
CC = gcc
-prog_SOURCES += getloadavg.c $(glob_SOURCES)
+prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES)
-extra_CPPFLAGS += -I$(SRCDIR)/glob -DINCLUDEDIR=\"c:/djgpp/include\" -DLIBDIR=\"c:/djgpp/lib\"
+INCLUDEDIR = c:/djgpp/include
+LIBDIR = c:/djgpp/lib
+LOCALEDIR = c:/djgpp/share
-MKDIR.cmd = command.com /c mkdir $(subst /,\\,$@)
-RM.cmd = command.com /c del /F /Q $(subst /,\\,$(OBJECTS) $(PROG))
+extra_CPPFLAGS = -I$(SRCDIR)/glob
-$(OUTDIR)/config.h: $(SRCDIR)/configh.dos
- command.com /c copy /Y $(subst /,\\,$< $@)
+MKDIR = command.com /c mkdir
+MKDIR.cmd = $(MKDIR) $(subst /,\\,$@)
+
+RM = command.com /c del /F /Q
+RM.cmd = $(RM) $(subst /,\\,$(OBJECTS) $(PROG))
+
+CP = command.com /c copy /Y
+CP.cmd = $(CP) $(subst /,\\,$< $@)
+
+$(OUTDIR)src/config.h: $(SRCDIR)/src/configh.dos
+ $(CP.cmd)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 214fdf1f..87f6fcd9 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -15,33 +15,33 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-ar.c
-arscan.c
-commands.c
-dir.c
-expand.c
-file.c
-function.c
-getopt.c
-guile.c
-hash.c
-implicit.c
-job.c
-load.c
-main.c
-misc.c
-output.c
-output.h
-posixos.c
-read.c
-remake.c
-remote-cstms.c
-rule.c
-signame.c
-strcache.c
-variable.c
-variable.h
-vmsfunctions.c
-vmsjobs.c
-vpath.c
-w32/w32os.c
+src/ar.c
+src/arscan.c
+src/commands.c
+src/dir.c
+src/expand.c
+src/file.c
+src/function.c
+src/getopt.c
+src/guile.c
+src/hash.c
+src/implicit.c
+src/job.c
+src/load.c
+src/main.c
+src/misc.c
+src/output.c
+src/output.h
+src/posixos.c
+src/read.c
+src/remake.c
+src/remote-cstms.c
+src/rule.c
+src/signame.c
+src/strcache.c
+src/variable.c
+src/variable.h
+src/vmsfunctions.c
+src/vmsjobs.c
+src/vpath.c
+src/w32/w32os.c
diff --git a/prepare_w32.bat b/prepare_w32.bat
deleted file mode 100644
index 7591e27d..00000000
--- a/prepare_w32.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-@echo off
-@echo Windows32 SCM build preparation of config.h.W32 and NMakefile.
-if not exist config.h.W32 copy config.h.W32.template config.h.W32
-if not exist config.h copy config.h.W32 config.h
-if not exist NMakefile copy NMakefile.template NMakefile
-@echo Preparation complete. Run build_w32.bat to compile and link.
diff --git a/alloca.c b/src/alloca.c
index 02ac9211..02ac9211 100644
--- a/alloca.c
+++ b/src/alloca.c
diff --git a/amiga.c b/src/amiga.c
index c1b31db2..c1b31db2 100644
--- a/amiga.c
+++ b/src/amiga.c
diff --git a/amiga.h b/src/amiga.h
index 940bc3aa..940bc3aa 100644
--- a/amiga.h
+++ b/src/amiga.h
diff --git a/ar.c b/src/ar.c
index 65ea01cc..65ea01cc 100644
--- a/ar.c
+++ b/src/ar.c
diff --git a/arscan.c b/src/arscan.c
index af3c96f3..af3c96f3 100644
--- a/arscan.c
+++ b/src/arscan.c
diff --git a/commands.c b/src/commands.c
index 75a9d2d2..75a9d2d2 100644
--- a/commands.c
+++ b/src/commands.c
diff --git a/commands.h b/src/commands.h
index 59838291..59838291 100644
--- a/commands.h
+++ b/src/commands.h
diff --git a/config.ami.template b/src/config.ami.template
index 8141f0d3..8141f0d3 100644
--- a/config.ami.template
+++ b/src/config.ami.template
diff --git a/config.h-vms.template b/src/config.h-vms.template
index 3cb9a74a..3cb9a74a 100644
--- a/config.h-vms.template
+++ b/src/config.h-vms.template
diff --git a/config.h.W32.template b/src/config.h.W32.template
index 4b5da003..4b5da003 100644
--- a/config.h.W32.template
+++ b/src/config.h.W32.template
diff --git a/configh.dos.template b/src/configh.dos.template
index 72c501cb..72c501cb 100644
--- a/configh.dos.template
+++ b/src/configh.dos.template
diff --git a/debug.h b/src/debug.h
index 2213c95d..2213c95d 100644
--- a/debug.h
+++ b/src/debug.h
diff --git a/default.c b/src/default.c
index 483339f3..483339f3 100644
--- a/default.c
+++ b/src/default.c
diff --git a/dep.h b/src/dep.h
index 99d3f88e..99d3f88e 100644
--- a/dep.h
+++ b/src/dep.h
diff --git a/dir.c b/src/dir.c
index c343e4c2..c343e4c2 100644
--- a/dir.c
+++ b/src/dir.c
diff --git a/expand.c b/src/expand.c
index 3341f9ef..3341f9ef 100644
--- a/expand.c
+++ b/src/expand.c
diff --git a/file.c b/src/file.c
index fe58ebad..fe58ebad 100644
--- a/file.c
+++ b/src/file.c
diff --git a/filedef.h b/src/filedef.h
index 7de6ac00..7de6ac00 100644
--- a/filedef.h
+++ b/src/filedef.h
diff --git a/function.c b/src/function.c
index a22352ff..a22352ff 100644
--- a/function.c
+++ b/src/function.c
diff --git a/getloadavg.c b/src/getloadavg.c
index 663a7def..663a7def 100644
--- a/getloadavg.c
+++ b/src/getloadavg.c
diff --git a/getopt.c b/src/getopt.c
index 5d4b89e2..5d4b89e2 100644
--- a/getopt.c
+++ b/src/getopt.c
diff --git a/getopt.h b/src/getopt.h
index bb756faf..bb756faf 100644
--- a/getopt.h
+++ b/src/getopt.h
diff --git a/getopt1.c b/src/getopt1.c
index 5d0240ad..5d0240ad 100644
--- a/getopt1.c
+++ b/src/getopt1.c
diff --git a/gettext.h b/src/gettext.h
index 10992fb1..10992fb1 100644
--- a/gettext.h
+++ b/src/gettext.h
diff --git a/gmk-default.scm b/src/gmk-default.scm
index a827caee..a827caee 100644
--- a/gmk-default.scm
+++ b/src/gmk-default.scm
diff --git a/gnumake.h b/src/gnumake.h
index c1a44ec0..c1a44ec0 100644
--- a/gnumake.h
+++ b/src/gnumake.h
diff --git a/guile.c b/src/guile.c
index a5936664..a5936664 100644
--- a/guile.c
+++ b/src/guile.c
diff --git a/hash.c b/src/hash.c
index c138aaf6..c138aaf6 100644
--- a/hash.c
+++ b/src/hash.c
diff --git a/hash.h b/src/hash.h
index 667d6508..667d6508 100644
--- a/hash.h
+++ b/src/hash.h
diff --git a/implicit.c b/src/implicit.c
index e5046a47..e5046a47 100644
--- a/implicit.c
+++ b/src/implicit.c
diff --git a/job.c b/src/job.c
index a13aadaf..a13aadaf 100644
--- a/job.c
+++ b/src/job.c
diff --git a/job.h b/src/job.h
index 0b7730ba..0b7730ba 100644
--- a/job.h
+++ b/src/job.h
diff --git a/load.c b/src/load.c
index 814764d3..814764d3 100644
--- a/load.c
+++ b/src/load.c
diff --git a/loadapi.c b/src/loadapi.c
index db61e77f..db61e77f 100644
--- a/loadapi.c
+++ b/src/loadapi.c
diff --git a/main.c b/src/main.c
index 9fa2c840..9fa2c840 100644
--- a/main.c
+++ b/src/main.c
diff --git a/makeint.h b/src/makeint.h
index 2adab63b..2adab63b 100644
--- a/makeint.h
+++ b/src/makeint.h
diff --git a/misc.c b/src/misc.c
index 441db8d7..441db8d7 100644
--- a/misc.c
+++ b/src/misc.c
diff --git a/os.h b/src/os.h
index b68b0055..b68b0055 100644
--- a/os.h
+++ b/src/os.h
diff --git a/output.c b/src/output.c
index 93b3dc72..93b3dc72 100644
--- a/output.c
+++ b/src/output.c
diff --git a/output.h b/src/output.h
index 8adec4ac..8adec4ac 100644
--- a/output.h
+++ b/src/output.h
diff --git a/posixos.c b/src/posixos.c
index 1c18daf4..1c18daf4 100644
--- a/posixos.c
+++ b/src/posixos.c
diff --git a/read.c b/src/read.c
index db1a42d0..db1a42d0 100644
--- a/read.c
+++ b/src/read.c
diff --git a/remake.c b/src/remake.c
index b4bf1cba..b4bf1cba 100644
--- a/remake.c
+++ b/src/remake.c
diff --git a/remote-cstms.c b/src/remote-cstms.c
index dea02764..dea02764 100644
--- a/remote-cstms.c
+++ b/src/remote-cstms.c
diff --git a/remote-stub.c b/src/remote-stub.c
index 02c7a884..02c7a884 100644
--- a/remote-stub.c
+++ b/src/remote-stub.c
diff --git a/rule.c b/src/rule.c
index 1fe77e12..1fe77e12 100644
--- a/rule.c
+++ b/src/rule.c
diff --git a/rule.h b/src/rule.h
index b6adc9ad..b6adc9ad 100644
--- a/rule.h
+++ b/src/rule.h
diff --git a/signame.c b/src/signame.c
index 9ee00e27..9ee00e27 100644
--- a/signame.c
+++ b/src/signame.c
diff --git a/strcache.c b/src/strcache.c
index 19f43c93..19f43c93 100644
--- a/strcache.c
+++ b/src/strcache.c
diff --git a/variable.c b/src/variable.c
index 2c68ceac..2c68ceac 100644
--- a/variable.c
+++ b/src/variable.c
diff --git a/variable.h b/src/variable.h
index 12aea395..12aea395 100644
--- a/variable.h
+++ b/src/variable.h
diff --git a/version.c b/src/version.c
index 039d5ab8..039d5ab8 100644
--- a/version.c
+++ b/src/version.c
diff --git a/vms_exit.c b/src/vms_exit.c
index 988ac8aa..988ac8aa 100644
--- a/vms_exit.c
+++ b/src/vms_exit.c
diff --git a/vms_export_symbol.c b/src/vms_export_symbol.c
index 38daf12d..38daf12d 100644
--- a/vms_export_symbol.c
+++ b/src/vms_export_symbol.c
diff --git a/vms_progname.c b/src/vms_progname.c
index 47d12a77..47d12a77 100644
--- a/vms_progname.c
+++ b/src/vms_progname.c
diff --git a/vmsdir.h b/src/vmsdir.h
index f1d52d6d..f1d52d6d 100644
--- a/vmsdir.h
+++ b/src/vmsdir.h
diff --git a/vmsfunctions.c b/src/vmsfunctions.c
index 356524db..356524db 100644
--- a/vmsfunctions.c
+++ b/src/vmsfunctions.c
diff --git a/vmsify.c b/src/vmsify.c
index 249aa06a..249aa06a 100644
--- a/vmsify.c
+++ b/src/vmsify.c
diff --git a/vmsjobs.c b/src/vmsjobs.c
index 717861da..717861da 100644
--- a/vmsjobs.c
+++ b/src/vmsjobs.c
diff --git a/vpath.c b/src/vpath.c
index 16496649..16496649 100644
--- a/vpath.c
+++ b/src/vpath.c
diff --git a/w32/compat/dirent.c b/src/w32/compat/dirent.c
index 8c9fd487..8c9fd487 100644
--- a/w32/compat/dirent.c
+++ b/src/w32/compat/dirent.c
diff --git a/w32/compat/posixfcn.c b/src/w32/compat/posixfcn.c
index 7b9a5774..7b9a5774 100644
--- a/w32/compat/posixfcn.c
+++ b/src/w32/compat/posixfcn.c
diff --git a/w32/include/dirent.h b/src/w32/include/dirent.h
index ea817f16..ea817f16 100644
--- a/w32/include/dirent.h
+++ b/src/w32/include/dirent.h
diff --git a/w32/include/dlfcn.h b/src/w32/include/dlfcn.h
index 55c5f20f..55c5f20f 100644
--- a/w32/include/dlfcn.h
+++ b/src/w32/include/dlfcn.h
diff --git a/w32/include/pathstuff.h b/src/w32/include/pathstuff.h
index 6f3615dc..6f3615dc 100644
--- a/w32/include/pathstuff.h
+++ b/src/w32/include/pathstuff.h
diff --git a/w32/include/sub_proc.h b/src/w32/include/sub_proc.h
index b3147bdc..b3147bdc 100644
--- a/w32/include/sub_proc.h
+++ b/src/w32/include/sub_proc.h
diff --git a/w32/include/w32err.h b/src/w32/include/w32err.h
index 7a406071..7a406071 100644
--- a/w32/include/w32err.h
+++ b/src/w32/include/w32err.h
diff --git a/w32/pathstuff.c b/src/w32/pathstuff.c
index 82450de7..82450de7 100644
--- a/w32/pathstuff.c
+++ b/src/w32/pathstuff.c
diff --git a/w32/subproc/misc.c b/src/w32/subproc/misc.c
index 6e7ac9a6..6e7ac9a6 100644
--- a/w32/subproc/misc.c
+++ b/src/w32/subproc/misc.c
diff --git a/w32/subproc/proc.h b/src/w32/subproc/proc.h
index ef2972db..ef2972db 100644
--- a/w32/subproc/proc.h
+++ b/src/w32/subproc/proc.h
diff --git a/w32/subproc/sub_proc.c b/src/w32/subproc/sub_proc.c
index e8552bea..e8552bea 100644
--- a/w32/subproc/sub_proc.c
+++ b/src/w32/subproc/sub_proc.c
diff --git a/w32/subproc/w32err.c b/src/w32/subproc/w32err.c
index 16537d25..16537d25 100644
--- a/w32/subproc/w32err.c
+++ b/src/w32/subproc/w32err.c
diff --git a/w32/w32os.c b/src/w32/w32os.c
index 0023e791..0023e791 100644
--- a/w32/w32os.c
+++ b/src/w32/w32os.c
diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl
index de960475..cd8a643c 100644
--- a/tests/run_make_tests.pl
+++ b/tests/run_make_tests.pl
@@ -96,7 +96,7 @@ sub valid_option
if ($option =~ /^-srcdir$/i) {
$srcdir = shift @argv;
- if (! -f "$srcdir/gnumake.h") {
+ if (! -f "$srcdir/src/gnumake.h") {
print "$option $srcdir: Not a valid GNU make source directory.\n";
exit 0;
}
@@ -457,7 +457,7 @@ sub set_more_defaults
if (! $srcdir) {
$make_path =~ /^(.*$pathsep)?/;
my $d = $1 || '../';
- -f "${d}gnumake.h" and $srcdir = $d;
+ -f "${d}/src/gnumake.h" and $srcdir = $d;
}
# Not with the make program, so see if we can get it out of the makefile
@@ -466,7 +466,7 @@ sub set_more_defaults
$_ = <MF>;
close(MF);
/^abs_srcdir\s*=\s*(.*?)\s*$/m;
- -f "$1/gnumake.h" and $srcdir = $1;
+ -f "$1/src/gnumake.h" and $srcdir = $1;
}
# Get Purify log info--if any.
diff --git a/tests/scripts/features/load b/tests/scripts/features/load
index dcc1cdfb..56f80e24 100644
--- a/tests/scripts/features/load
+++ b/tests/scripts/features/load
@@ -46,7 +46,7 @@ close($F) or die "close: testload.c: $!\n";
# Make sure we can compile
-my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testload.so testload.c";
+my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir/src":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testload.so testload.c";
my $clog = `$sobuild 2>&1`;
if ($? != 0) {
diff --git a/tests/scripts/features/loadapi b/tests/scripts/features/loadapi
index acc3c780..c8895572 100644
--- a/tests/scripts/features/loadapi
+++ b/tests/scripts/features/loadapi
@@ -80,7 +80,7 @@ close($F) or die "close: testapi.c: $!\n";
# Make sure we can compile
-my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testapi.so testapi.c";
+my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir/src":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testapi.so testapi.c";
my $clog = `$sobuild 2>&1`;
if ($? != 0) {