Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site brl-tgr.ARPA Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!genrad!panda!talcott!harvard!seismo!brl-tgr!tgr!LARS@acc.ARPA From: LARS@acc.ARPA (Lars Poulsen) Newsgroups: net.sources Subject: MAKE for VMS part 5 of 4 Message-ID: <10891@brl-tgr.ARPA> Date: Tue, 21-May-85 16:35:00 EDT Article-I.D.: brl-tgr.10891 Posted: Tue May 21 16:35:00 1985 Date-Received: Thu, 23-May-85 04:16:10 EDT Sender: news@brl-tgr.ARPA Lines: 258 $ Create 00PATCH.TXT The follwing files are necessary replacements in order to make Jon Corbett's VMS MAKE work. After unpacking the previous four installments, unpack this one before submitting MAKEMAKE to SYS$BATCH. Note that (at least under VMS_V3) MAKE will not run in a batch will not run in a batch process. One more patch is needed: Turns out, VAX11C uses a non-standard format for picking up #include files from SYS$LIBRARY:CSYSDEF.TLB. Thus, if you want to be compatible, you should set up your header #include's like this: #ifdef VAX11C #include stdio.h #else #include #endif The bracketed version will pick up files out in SYS$LIBRARY itself; at our site, there are a set of files out there belonging to Whitesmith's C, but certainly not all the ones called out in the program were there, and I don't think that Whitesmith's is compatible with DEC's runtime library. / Lars Poulsen Advanced Computer Communications PS: I am slightly troubled by the use of an established name for an incompatible program (cf the discussion about the rights to the name 'rn' for a newsreader). We have a VMS and a UNIX system side by side, and we run EUNICE on our VMS system also. Thus we already have a "make" on our VMS system. Well, at least the 1MAKEFILE has a different file name. $ Rename 1MAKEFILE. 1MAKEFILE.OLD $ Create 1MAKEFILE. ! ! Makefile for make version 3. ! # defclp # define c_opts /nolist # define for_opts /nolist # define mar_opts /nolist # define msg_opts /nolist # define linkopts /nomap # ifdef INSTALL # define linkopts ^linkopts /notrace # endif # define LIB makelib.olb # define MAKE$TIMER # define MAKE$FILE_STATS ! ! Fancy constructions. ! # cons .c (.olb) # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - cc ^c_opts ^MAKE$SOURCE - library ^LIB ^MAKE$SOURCE - delete ^MAKE$SOURCE.obj;* # end # cons .c .obj # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - cc ^c_opts ^MAKE$SOURCE # end # cons .for (.olb) # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - fortran ^for_opts ^MAKE$SOURCE - library ^LIB ^MAKE$SOURCE - delete ^MAKE$SOURCE.obj;* # end # cons .for .obj # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - fortran ^for_opts ^MAKE$SOURCE # end # cons .mar (.olb) # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - macro ^mar_opts ^MAKE$SOURCE - library ^LIB ^MAKE$SOURCE - delete ^MAKE$SOURCE.obj;* # end # cons .mar .obj # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - macro ^mar_opts ^MAKE$SOURCE # end # cons .msg (.olb) # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - message ^msg_opts ^MAKE$SOURCE - library ^LIB ^MAKE$SOURCE - delete ^MAKE$SOURCE.obj;* # end # cons .msg .obj # message ^MAKE$SOURCE\ [^MAKE$OUT_OF_DATE] - message ^msg_opts ^MAKE$SOURCE # end # cons x .olb # message Library is gone -- recreating - library /create ^$ # wait # end ! ! Now do it. ! ^LIB: make.obj: make # debug findcons ^LIB(chdir): make ^LIB(cons): ltype ^LIB(ccons): ^LIB(charutl): ^LIB(checkdef): ^LIB(cpanic): ^LIB(comline): ^LIB(dcl): ^LIB(defclp): ^LIB(descr): ^LIB(dirty): ^LIB(docond): fdate ^LIB(errmes): ^LIB(execute): ^LIB(fdate): fdate make ^LIB(file): make ^LIB(filetype): ^LIB(findcons): make ^LIB(ftlerrmsg): ^LIB(gettarget): ^LIB(iferr): ^LIB(lens): ^LIB(libtarget): ^LIB(linetype): ltype ^LIB(log): ^LIB(mexit): ^LIB(myname): ^LIB(subproc): make ^LIB(processl): ltype ^LIB(quadmath): ^LIB(refsym): ^LIB(sctlc): ^LIB(search): make ^LIB(setctlc): ^LIB(setdebug): ^LIB(setexh): ^LIB(sharp): make ^LIB(shexec): ^LIB(shmake): make fdate ^LIB(shskip): ^LIB(skiptoels): make ^LIB(sprintrmt): ^LIB(stab): ^LIB(timer): make ^LIB(whoarewe): ! ! Do the link, if required. ! # cons .obj .exe link ^linkopts make,^LIB/lib,sys$library:crtlib/lib # end # wait make.exe: ^LIB(chdir) ^LIB(cons) ^LIB(ccons) ^LIB(charutl) \ ^LIB(comline) ^LIB(dcl) ^LIB(dirty) ^LIB(docond) \ ^LIB(execute) ^LIB(fdate) ^LIB(file) ^LIB(filetype)\ ^LIB(findcons) ^LIB(gettarget) ^LIB(libtarget) ^LIB(linetype)\ ^LIB(iferr)\ ^LIB(mexit) ^LIB(processl) ^LIB(refsym) ^LIB(sharp) \ ^LIB(skiptoels) ^LIB(stab) ^LIB(search) ^LIB(checkdef)\ ^LIB(timer) ^LIB(defclp) ^LIB(subproc) ^LIB(log) \ ^LIB(whoarewe) # dump file_stats $ Create IFERR.C iferr(status) int *status; { if (*status & 1) return; else { printf("iferr: *status= %lx\n", *status); printf("iferr: fatal error - exiting\n"); exit(status); } } $ Create MAKEMAKE.TMP X$ X$ ! This is MAKEMAKE.COM, which will put together the initial version of X$ ! MAKE for you. X$ Set default U:[lars.Xfer.Make] X$ ! X$ ! Compile everything. X$ ! X$ cc CCONS.C X$ cc CHARUTL.C X$ cc CHDIR.C X$ cc CHECKDEF.C X$ cc COMLINE.C X$ cc CONS.C X$ cc CPANIC.C X$ cc DCL.C X$ cc DEFCLP.C X$ cc DESCR.C X$ cc DIRTY.C X$ cc DOCOND.C X$ macro ERRMES.MAR X$ cc EXECUTE.C X$ cc FDATE.C X$ cc FILE.C X$ cc FILETYPE.C X$ cc FINDCONS.C X$ message FTLERRMSG.MSG X$ cc GETTARGET.C X$ cc iferr X$ fortran LENS.FOR X$ cc libtarget X$ cc LINETYPE.C X$ cc LOG.C X$ cc MAKE.C X$ cc MEXIT.C X$ fortran MYNAME.FOR X$ cc PROCESSL.C X$ macro QUADMATH.MAR X$ cc REFSYM.C X$ fortran SCTLC.FOR X$ cc SEARCH.C X$ macro SETCTLC.MAR X$ cc SETDEBUG.C X$ fortran SETEXH.FOR X$ cc SHARP.C X$ cc SHEXEC.C X$ cc SHMAKE.C X$ cc SHSKIP.C X$ cc SKIPTOELS.C X$ cc SPRINTRMT.C X$ cc STAB.C X$ cc SUBPROC.C X$ cc TIMER.C X$ cc WHOAREWE.C X$ ! X$ ! Now create the library and stuff everything into it. X$ ! X$ library /create/object makelib *.obj X$ delete *.obj; X$ ! X$ ! Now link the goddam thing. X$ ! X$ link /exe=make makelib/lib/incl=make, sys$library:crtlib/lib $ EDIT MAKEMAKE.TMP/Output=MAKEMAKE.COM S/X$/$/whole/notype EXIT $ EXIT ------