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