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