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
This commit is contained in:
Paul Smith 2017-11-19 13:49:26 -05:00
parent 1af314465e
commit fb779d2f1e
97 changed files with 433 additions and 402 deletions

2
.gitignore vendored
View file

@ -22,6 +22,8 @@ config.log
config.status
configure
stamp-h1
.dirstamp
mk/Posix.mk
# Build artifacts
.deps

View file

@ -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)

View file

@ -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

3
NEWS
View file

@ -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.

View file

@ -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:

View file

@ -3,6 +3,7 @@ OPTIMIZE
NOVERSION
OPTIMIZERTIME
OPTIMIZERALIAS
DEFINE HAVE_CONFIG_H
DEFINE INCLUDEDIR="include:"
DEFINE LIBDIR="lib:"
DEFINE NO_ALLOCA

View file

@ -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.

View file

@ -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
if exist src\config.h.W32.template call :ConfigSCM
copy src\config.h.W32 %OUTDIR%\src\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 %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=

View file

@ -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.$$$

View file

@ -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!

View file

View file

@ -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

View file

@ -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) $< $@

View file

@ -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)

27
mk/Posix.mk.in Normal file
View file

@ -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@

91
mk/VMS.mk Normal file
View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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.

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

@ -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.

View file

@ -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) {

View file

@ -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) {