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