1a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
2a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Makefile.com - builds GNU Make for VMS
3a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
4a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! P1 is non-empty if you want to link with the VAXCRTL library instead
5a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!    of the shareable executable
6a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! P2 = DEBUG will build an image with debug information
7a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! P3 = WALL will enable all warning messages (some are suppressed since
8a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!      one macro intentionally causes an error condition)
9a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
10a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! In case of problems with the install you might contact me at
11a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! zinser@decus.de (preferred) or zinser@sysdev.deutsche-boerse.com
12a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$
13a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! hb
14a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! But don't ask Martin Zinser about the lines, I added/changed.
15a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! In case of an error do some cleanup
16a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ on error then $ goto cleanup
17a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! in case somebody set up her/his own symbol for cc
18a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ set symbol/scope=(nolocal,noglobal)
19a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
20a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Just some general constants...
21a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
22a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ true  = 1
23a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ false = 0
24a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ tmpnam = "temp_" + f$getjpi("","pid")
25a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ tt = tmpnam + ".txt"
26a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ tc = tmpnam + ".c"
27a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
28a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Look for the compiler used
29a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
30a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ lval = ""
31a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs.""
32a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$  then
33a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   if f$trnlnm("SYS").eqs."" then def/nolog sys sys$library:
34a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   ccopt = ""
35a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$  else
36a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   ccopt = "/decc/prefix=(all,except=(globfree,glob))"
37a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   if f$trnlnm("SYS").eqs.""
38a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$    then
39a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$     if f$trnlnm("DECC$LIBRARY_INCLUDE").nes.""
40a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$      then
41a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$       define sys decc$library_include:
42a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$      else
43a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$       if f$search("SYS$COMMON:[DECC$LIB.REFERENCE]DECC$RTLDEF.DIR").nes."" -
44a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner           then lval = "SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF],"
45a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$       if f$search("SYS$COMMON:[DECC$LIB.REFERENCE]SYS$STARLET_C.DIR").nes."" -
46a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner           then lval = lval+"SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C],"
47a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$       lval=lval+"SYS$LIBRARY:"
48a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$       define sys 'lval
49a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$      endif
50a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   endif
51a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ endif
52a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
53a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Should we build a debug image
54a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
55a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if (p2.eqs."DEBUG")
56a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$  then
57a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   ccopt = ccopt + "/noopt/debug"
58a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   lopt = "/debug"
59a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ else
60a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   lopt = ""
61a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ endif
62a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
63a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Do we want to see all warnings
64a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
65a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if (p3.nes."WALL")
66a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ then
67a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$   gosub check_cc_qual
68a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ endif
69a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ filelist = "alloca ar arscan commands default dir expand file function " + -
70a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner             "hash implicit job main misc read remake remote-stub rule " + -
71a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner	     "signame variable version vmsfunctions vmsify vpath " + -
72a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner	     "[.glob]glob [.glob]fnmatch getopt1 getopt strcache"
73a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ copy config.h-vms config.h
74a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ n=0
75a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ open/write optf make.opt
76a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ loop:
77a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ cfile = f$elem(n," ",filelist)
78a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if cfile .eqs. " " then goto linkit
79a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ write sys$output "Compiling ''cfile'..."
80a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ call compileit 'cfile' 'p1'
81a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ n = n + 1
82a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ goto loop
83a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ linkit:
84a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ close optf
85a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if p1 .nes. "" then goto link_using_library
86a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ link/exe=make make.opt/opt'lopt
87a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ goto cleanup
88a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$
89a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ link_using_library:
90a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ link/exe=make make.opt/opt,sys$library:vaxcrtl/lib'lopt
91a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$
92a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ cleanup:
93a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if f$trnlnm("SYS").nes."" then $ deassign sys
94a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if f$trnlnm("OPTF").nes."" then $ close optf
95a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if f$search("make.opt").nes."" then $ del make.opt;*
96a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ exit
97a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
98a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!-----------------------------------------------------------------------------
99a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
100a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Check if this is a define relating to the properties of the C/C++
101a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! compiler
102a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
103a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$CHECK_CC_QUAL:
104a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ open/write tmpc 'tc
105a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ ccqual = "/warn=(disable=questcompare)"
106a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ write tmpc "#include <stdio.h>"
107a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ write tmpc "unsigned int i = 1;"
108a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ write tmpc "int main(){"
109a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ write tmpc "if (i < 0){printf(""Mission impossible\n"");}}"
110a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ close tmpc
111a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ gosub cc_qual_check
112a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ return
113a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
114a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!-----------------------------------------------------------------------------
115a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
116a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$! Check for properties of C/C++ compiler
117a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
118a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$CC_QUAL_CHECK:
119a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ cc_qual = false
120a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ set message/nofac/noident/nosever/notext
121a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ cc 'ccqual' 'tmpnam'
122a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if $status then cc_qual = true
123a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ set message/fac/ident/sever/text
124a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ delete/nolog 'tmpnam'.*;*
125a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if cc_qual then ccopt = ccopt + ccqual
126a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ return
127a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!-----------------------------------------------------------------------------
128a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
129a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ compileit : subroutine
130a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ ploc = f$locate("]",p1)
131a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ filnam = p1
132a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ if ploc .lt. f$length(p1) then filnam=f$extract(ploc+1,100,p1)
133a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ write optf "''filnam'"
134a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ cc'ccopt'/include=([],[.glob]) -
135a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner  /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file","unlink=remove","HAVE_CONFIG_H","VMS") -
136a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner  'p1'
137a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ exit
138a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$ endsubroutine : compileit
139a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
140a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!-----------------------------------------------------------------------------
141a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
142a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!2006 Free Software Foundation, Inc.
143a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!This file is part of GNU Make.
144a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
145a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!GNU Make is free software; you can redistribute it and/or modify it under the
146a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!terms of the GNU General Public License as published by the Free Software
147a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!Foundation; either version 2, or (at your option) any later version.
148a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
149a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
150a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
151a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
152a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!
153a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!You should have received a copy of the GNU General Public License along with
154a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!GNU Make; see the file COPYING.  If not, write to the Free Software
155a86d4c1bde70365cbbe874ad9ddb3f06916d2085David 'Digit' Turner$!Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
156