summaryrefslogtreecommitdiff
path: root/mk/VMS.mk
blob: c6ca377e1e3fa49ff17a50d3be23f7ac93c18352 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# GNU -*-Makefile-*- to build GNU Make on VMS
#
# VMS overrides for use with Basic.mk.
#
# Copyright (C) 2017-2023 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 <https://www.gnu.org/licenses/>.

src = [.src]
lib = [.lib]
SRCDIR = []

OBJEXT = .obj
EXEEXT = .exe

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),$(lib))
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)

# If your system doesn't have alloca.h, or the one provided is bad,
# uncomment this
#BUILT_SOURCES += $(lib)alloca.h

prog_SOURCES += $(ALLOCA) $(glob_SOURCES) $(vms_SOURCES)

BUILT_SOURCES += $(lib)fnmatch.h $(lib)glob.h

COMPILE.cmd = $(CC) $(extra_CFLAGS)$(CFLAGS)/obj=$@ $(extra_CPPFLAGS)$(CPPFLAGS) $1

LINK.cmd = $(LD)$(extra_LDFLAGS)$(LDFLAGS)/exe=$@ $(subst $s,$c,$1)$(LDLIBS)

# Don't know how to do this
CHECK.cmd =

MKDIR.cmd = create/dir $1
RM.cmd = delete $1
CP.cmd = copy $1 $2

define CLEANSPACE
	-purge [...]
	-delete $(PROG);
	-delete $(src)*.$(OBJEXT);
endef


$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h-vms
	$(call CP.cmd,$<,$@)