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

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)