summaryrefslogtreecommitdiff
path: root/mk
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 /mk
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
Diffstat (limited to 'mk')
-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
5 files changed, 161 insertions, 24 deletions
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)