diff options
Diffstat (limited to 'nx-X11/config/imake/imakesvc.cmd')
-rw-r--r-- | nx-X11/config/imake/imakesvc.cmd | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/nx-X11/config/imake/imakesvc.cmd b/nx-X11/config/imake/imakesvc.cmd new file mode 100644 index 000000000..1108c3904 --- /dev/null +++ b/nx-X11/config/imake/imakesvc.cmd @@ -0,0 +1,302 @@ +/* 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.13 1999/04/29 09:13:23 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) |