Files
xsrc/xfree/xc/config/imake/imakesvc.cmd

303 lines
7.9 KiB
Batchfile

/* Rexx OS/2
* This script serves as a helper cmd file for imake. Install this in
* the path just like imake itself.
*
* $XFree86: xc/config/imake/imakesvc.cmd,v 3.14 2000/04/05 18:13:11 dawes Exp $
*/
'@echo off'
ADDRESS CMD
CALL RxFuncAdd 'SysFileDelete', 'RexxUtil', 'SysFileDelete'
CALL RxFuncAdd 'SysFileTree', 'RexxUtil', 'SysFileTree'
CALL RxFuncAdd 'SysRmDir', 'RexxUtil', 'SysRmDir'
CALL RxFuncAdd 'SysMkDir', 'RexxUtil', 'SysMkDir'
PARSE ARG all
code = WORD(all,1)
SELECT
WHEN code=1 THEN DO
/* imakesvc 1 u/n dir ruledir top current */
instflg = WORD(all,2)
imakecmd = '\imake'
ruledir = WORD(all,4)
topdir = WORD(all,5)
currentdir = WORD(all,6)
IF instflg = 'u' THEN DO
root = VALUE('X11ROOT',,'OS2ENVIRONMENT')
IF root = '' THEN DO
SAY 'Fatal error: no X11ROOT environment variable found!'
EXIT 99
END
imakecmd = 'imake'
IF POS(':',ruledir) = 0 THEN
ruledir1 = root||ruledir
ELSE
ruledir1 = ruledir
topdir1 = topdir
useinst = '-DUseInstalled'
END
ELSE DO
/* in n mode, we must add a prefix ../ for MakeMakeSubdirs */
ruledir1 = '../'||ruledir
topdir1 = '../'||topdir
useinst = ''
END
ruledir = ruledir1
topdir = topdir1
curdir = DIRECTORY()
dir = fixbadprefix(WORD(all,3))
d = DIRECTORY(dir)
dirfwd=TRANSLATE(dir,'/','\')
RC = SysFileDelete('Makefile.bak')
IF exists('Makefile') THEN REN Makefile Makefile.bak
/* There is a difficulty in the Imakefiles. Some builds refer
* to directories that are in a different subtree. We need to adjust
* the CURDIR and TOPDIR and -I paths
*/
IF SUBSTR(dirfwd,1,2)='..' THEN DO
/* must recalculate passed topdir, currentdir, and ruledir */
ndist = nlevels(topdir)
ncurdir = './'striplevel(dirfwd,ndist-1)
ntopdir = maketop(nlevels(ncurdir))
nruledir = ntopdir||'/config/cf'
END
ELSE DO
/* this is simple it is relative to this dir */
pfx = downlevels(dirfwd)
nruledir = ruledir
IF instflg = 'n' THEN DO /*sm120296*/
nruledir = pfx||ruledir
END
ntopdir = pfx||topdir
ncurdir = currentdir /* use to be pfx || currentdir */
END
imakecmd useinst '-I'nruledir' -DTOPDIR='ntopdir' -DCURDIR='ncurdir'/'dirfwd
'x11make MAKE=x11make SHELL= Makefiles'
d = DIRECTORY(curdir)
END
WHEN code=2 THEN DO
/* imakesvc 2 buildincdir buildinctop currentdir file */
bid = WORD(all,3)
cid = WORD(all,4)
fil = WORD(all,5)
curdir = DIRECTORY()
d = DIRECTORY(WORD(all,2))
rc = SysFileDelete(fil)
dir = TRANSLATE(bid'/'cid'/'fil,'\','/')
COPY dir .' >nul 2>&1 '
d = DIRECTORY(curdir)
END
WHEN code=3 THEN DO
/* imakesvc 3 subdir updir file */
sdi = WORD(all,2)
fil = WORD(all,4)
curdir = DIRECTORY()
d = DIRECTORY(WORD(all,3))
rc = SysFileDelete(fil)
dir = TRANSLATE(sdi'/'fil,'\','/')
COPY dir' . >nul 2>&1'
d = DIRECTORY(curdir)
END
WHEN code=4 THEN DO
/* imakesvc 4 [-r] files... */
rec = WORD(all,2)
fp = 2
IF rec = '-r' THEN fp = 3
ELSE rec = '-n'
DO i=fp TO WORDS(all)
CALL discard rec,TRANSLATE(WORD(all,i),'\','/')
END
END
WHEN code=5 THEN DO
/* imakesvc 5 file */
file = TRANSLATE(WORD(all,2),'\','/')
RC = SysFileDelete(file'.bak')
if exists(file) THEN 'REN 'file file||'.bak'
END
WHEN code=6 THEN DO
/* imakesvc 6 file */
file = TRANSLATE(WORD(all,2),'\','/')
CALL SysFileDelete(file||'.bak')
if exists(file) THEN 'REN 'file file||'.bak'
END
WHEN code=7 THEN DO
/* imakesvc 7 from to */
from = TRANSLATE(WORD(all,2),'\','/')
to = TRANSLATE(WORD(all,3),'\','/')
CALL SysFileDelete(to)
COPY from to' >nul 2>&1'
END
WHEN code=8 THEN DO
/* imakesvc 8 arg */
SAY SUBWORD(TRANSLATE(all,' ','222c'x),2)
END
WHEN code=9 THEN DO
/* imakesvc 9 dst.c incl.h src.c */
dst = TRANSLATE(WORD(all,2),'\','/')
src = TRANSLATE(WORD(all,4),'\','/')
CALL SysFileDelete(dst)
CALL LINEOUT dst,'#include "'WORD(all,3)'"'
CALL LINEOUT dst,'#include "'src'"'
CALL LINEOUT dst
END
WHEN code=10 THEN DO
/* imakesvc 10 srcfile destdir destfile suffix */
src = stripsuffix(WORD(all,2))
destdir = TRANSLATE(WORD(all,3),'\','/')
dest = stripsuffix(WORD(all,4))
suffix = WORD(all,5)
tgt = destdir'\'dest'.'suffix
/* if you have no col.exe get one from 4.4BSD */
'groff -e -t -man -Tascii 'src'.man | col -b >'tgt
END
WHEN code=11 THEN DO
/* imakesvc 11 dirtomake */
dirtomake = TRANSLATE(WORD(all,2),'\','/')
rc = SysMkDir(dirtomake)
END
WHEN code=12 THEN DO
/* imakesvc 12 srcfile destdir destfile */
src = stripsuffix(WORD(all,2))
destdir = TRANSLATE(WORD(all,3),'\','/')
dest = stripsuffix(WORD(all,4))
tgt = destdir'\'dest'.gz'
/* if you have no col.exe get one from 4.4BSD */
'groff -e -t -man -Tascii 'src'.man | col -b | gzip -n >'tgt
END
WHEN code=13 THEN DO
/* imakesvc 13 indir fromfile tofile */
ind = TRANSLATE(WORD(all,2),'\','/')
frm = TRANSLATE(WORD(all,3),'\','/')
tof = ind'\'WORD(all,4)
IF \(exists(ind)) THEN call SysMkDir ind
rc = SysFileDelete(tof)
COPY frm' 'tof
END
WHEN code=14 THEN DO
/* imakesvc 14 destdir srcfile... */
destdir = TRANSLATE(WORD(all,2),'\','/')
DO i=3 TO WORDS(all)
src = stripsuffix(WORD(all,i))
tgt = destdir'\'src'.gz'
'groff -e -t -man -Tascii 'src'.man | col -b | gzip -n >'tgt
END
END
WHEN code=15 THEN DO
/* imakesvc 15 destdir suffix srcfile... */
destdir = TRANSLATE(WORD(all,2),'\','/')
suffix = WORD(all,3)
DO i=4 TO WORDS(all)
src = stripsuffix(WORD(all,i))
tgt = destdir'\'src'.'suffix
'groff -e -t -man -Tascii 'src'.man | col -b >'tgt
END
END
WHEN code=16 THEN DO
/* imakesvc 16 dirlist...*/
mkfontdir = TRANSLATE(WORD(all,2),'\','/')
earg=''
DO i=3 TO WORDS(all)
arg = WORD(all,i)
earg = earg' -e 'arg
END
mkfontdir' -r -p inst/ 'earg' .'
END
OTHERWISE NOP
END
RETURN
downlevels:
oldpos = 1
pfx = ''
DO FOREVER
newpos = POS('/',ARG(1),oldpos)
IF newpos = 0 THEN LEAVE
newpfx = '../'pfx
oldpos = newpos+1
pfx = newpfx
END
RETURN pfx
/* returns 1, if file exists */
exists:
'DIR "'arg(1)'" >nul 2>&1'
IF rc = 0 THEN return 1
RETURN 0
discard: PROCEDURE
rec=ARG(1)
files=ARG(2)
IF rec = '-r' THEN DO
old = DIRECTORY()
nd = DIRECTORY
CALL SysFileTree files, 'deld', 'DO'
IF deld.0 > 0 THEN DO
DO m=1 TO deld.0
CALL DIRECTORY deld.m
CALL discard '-R' .
CALL DIRECTORY ..
CALL SysRmDir deld.m
END
CALL SysRmDir files
END
CALL SysFileTree files, 'delf', 'FO'
DO k=1 TO delf.0
DEL '"'delf.k'"' '>nul 2>&1'
END
CALL SysRmDir files
END
ELSE DO
DEL '"'files'"' '>nul 2>&1'
END
RETURN
/* somehow make or cmd manages to convert a relative path ..\..\. to ..... */
fixbadprefix:
count = 1
str = ARG(1)
DO WHILE SUBSTR(str,count,2) = '..'
count = count+1
str = INSERT('\',str,count)
count = count+2
END
RETURN str
striplevel:
str=ARG(1)
n=arg(2)
DO count=0 TO n
p = POS('/',str)
IF p = 0 THEN LEAVE
str = DELSTR(str,1,p)
END
RETURN str
nlevels:
str = ARG(1)
count = 0
oldpos = 1
DO FOREVER
newpos = POS('/',str,oldpos)
IF newpos = 0 THEN LEAVE
oldpos = newpos + 1
count = count + 1
END
RETURN count
maketop:
str = ''
n = ARG(1)
DO k=1 TO n
str = str||'../'
END
RETURN str||'.'
stripsuffix:
str = ARG(1)
spos = POS('.',str)
IF spos = 0 THEN
RETURN str
ELSE
RETURN LEFT(str,spos-1)