summaryrefslogtreecommitdiff
path: root/mk/VMS.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/VMS.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/VMS.mk')
-rw-r--r--mk/VMS.mk91
1 files changed, 91 insertions, 0 deletions
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)