aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/config/util/makedef.cmd
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/config/util/makedef.cmd')
-rw-r--r--nx-X11/config/util/makedef.cmd620
1 files changed, 0 insertions, 620 deletions
diff --git a/nx-X11/config/util/makedef.cmd b/nx-X11/config/util/makedef.cmd
deleted file mode 100644
index 9d5d6decf..000000000
--- a/nx-X11/config/util/makedef.cmd
+++ /dev/null
@@ -1,620 +0,0 @@
-/* This is OS/2 REXX */
-/* $XFree86: xc/config/util/makedef.cmd,v 1.4 2003/11/12 00:10:24 dawes Exp $
- *
- * This file was taken from Odin32 project, modified to suit
- * XFree86 4.x build process and then modified to suit
- * the X.org monolithic build process for X11R6.7
- *
- * Generate *os2.def linker definition files for OS/2
- */
-
-if RxFuncQuery('SysLoadFuncs')=1 THEN
-DO
- call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs';
- call SysLoadFuncs;
-END
-
-/*
- * Set default parameter values.
- */
-sLibrary = '';
-sDBFile = '';
-sOrdinals = 0;
-sASDFeatureId = '';
-sCountryCode = '';
-sDateTime = left(' 'date()' 'time(), 26);
-sDescription = 'X.Org 6.9';
-sFixPakVer = '';
-sHostname = strip(substr(VALUE('HOSTNAME',,'OS2ENVIRONMENT'), 1, 11));
-sLanguageCode = '';
-sMiniVer = '';
-sVendor = 'X.Org';
-sVersion = '6.9';
-
-
-/*
- * Parse parameters.
- */
-parse arg sArgs
-if (sArgs = '') then
-do
- call syntax;
- exit(1);
-end
-
-do while (sArgs <> '')
- sArgs = strip(sArgs);
- if (substr(sArgs, 1, 1) = '-' | substr(sArgs, 1, 1) = '/') then
- do /*
- * Option.
- */
- ch = translate(substr(sArgs, 2, 1));
- if (pos(ch, 'ACDHLMNOPRTV') < 1) then
- do
- say 'invalid option:' substr(sArgs, 1, 2);
- call syntax;
- exit(2);
- end
-
- /* get value and advance sArgs to next or to end. */
- if (substr(sArgs, 3, 1) = '"') then
- do
- iNext = pos('"', sArgs, 4);
- fQuote = 1;
- end
- else
- do
- iNext = pos(' ', sArgs, 3);
- if (iNext <= 0) then
- iNext = length(sArgs);
- fQuote = 0;
- end
-
- if (iNext > 3 | ch = 'R') then
- do
- sValue = substr(sArgs, 3 + fQuote, iNext - 3 - fQuote);
- sArgs = strip(substr(sArgs, iNext+1));
- /*say 'iNext:' iNext 'sValue:' sValue 'sArgs:' sArgs; */
-
- /* check if we're gonna search for something in an file. */
- if (sValue <> '' & pos('#define=', sValue) > 0) then
- sValue = LookupDefine(sValue);
- end
- else
- do
- say 'syntax error near' substr(sArgs, 1, 2)'.';
- call syntax;
- exit(3);
- end
-
-
- /* set value */
- select
- when (ch = 'A') then /* ASD Feature Id */
- sASDFeatureId = sValue;
-
- when (ch = 'C') then /* Country code */
- sCountryCode = sValue;
-
- when (ch = 'D') then /* Description */
- sDescription = sValue;
-
- when (ch = 'H') then /* Hostname */
- sHostname = sValue;
-
- when (ch = 'L') then /* Language code */
- sLanguageCode = sValue;
-
- when (ch = 'M') then /* MiniVer */
- sMiniVer = sValue;
-
- when (ch = 'N') then /* Vendor */
- sVendor = sValue;
-
- when (ch = 'O') then /* Ordinals */
- sOrdinals = 1;
-
- when (ch = 'R') then /* Vendor */
- sDescription = ReadDescription(sValue, sDefFile);
-
- when (ch = 'P') then /* Fixpak version */
- sFixPakVer = sValue;
-
- when (ch = 'T') then /* Date Time */
- sDateTime = sValue;
-
- when (ch = 'V') then /* Version */
- sVersion = sValue;
-
- /* Otherwise it's an illegal option */
- otherwise:
- say 'invalid option:' substr(sArgs, 1, 2);
- call syntax;
- exit(2);
- end /* select */
- end
- else
- do /*
- * Table file name, typically xc/config/cf/os2def.db
- */
- if (sLibrary <> '') then
- do
- say 'Syntax error: Can''t specify more than two files!';
- exit(4);
- end
- if (sDBFile = '') then
- parse value sArgs with sDBFile' 'sArgs
- else
- parse value sArgs with sLibrary' 'sArgs
- sArgs = strip(sArgs);
- end
-end
-
-/* check that a definition file was specified. */
-if (sLibrary = '') then
-do
- say 'Syntax error: Will have to specify a library stem.';
- call syntax;
- exit(5);
-end
-
-
-/*
- * Trim strings to correct lengths.
- */
-sVendor = strip(substr(sVendor, 1, 31));
-if (substr(sDateTime, 1, 1) <> ' ') then
- sDateTime = ' ' || sDateTime;
-sDateTime = left(sDateTime, 26);
-sHostname = strip(substr(sHostname, 1, 11));
-sMiniVer = strip(substr(sMiniVer, 1, 11));
-sDescription = strip(substr(sDescription, 1, 80));
-sCountryCode = strip(substr(sCountryCode, 1, 4));
-sLanguageCode = strip(substr(sLanguageCode, 1, 4));
-sASDFeatureId = strip(substr(sASDFeatureId, 1, 11));
-sFixPakVer = strip(substr(sFixPakVer, 1, 11));
-
-/* load database file, only accept lines for the specified sLibrary */
-ordHash.0 = 0
-sRealName = ''
-sInitTerm = 0
-
-rc = LoadDBFile(sDBFile,sLibrary)
-
-/* engage gcc to parse the corresponding -def.cpp file */
-'@gcc -E -D__UNIXOS2__ 'sLibrary'-def.cpp >tmpos2.def'
-
-/* Signature */
-sEnhSign = '##1##'
-
-/*
- * Build description string.
- */
-sDescription = '@#'sVendor':'sVersion'#@'sEnhSign||,
- sDateTime||sHostname||,
- ':'sASDFeatureId':'sLanguageCode':'sCountryCode':'sMiniVer||,
- '::'sFixPakVer'@@'sDescription;
-
-/*
- * Update .def-file.
- */
-rc = UpdateDefFile(sLibrary,sDescription,sRealName,sOrdinals,sInitTerm);
-call SysFileDelete('tmpos2.def')
-
-exit(rc);
-
-LoadDBFile: procedure expose ordHash. sRealname sInitTerm
- parse arg dbfile,libname;
-
- rc = stream(dbfile, 'c', 'open read');
- if (pos('READY', rc) <> 1) then
- do
- say 'error: failed to open 'dbfile;
- exit(-1);
- end
- do while (lines(dbfile) > 0)
- line = translate(strip(linein(dbfile)),' ',' ');
- if pos(';',line) > 0 then iterate;
- if pos('LIBRARY',line) > 0 then do
- if word(line,2) = libname then do
- sRealname = word(line,3)
- if word(line,4) <> '' then
- sInitTerm = 1
- end
- iterate
- end
- if word(line,1) = libname then do
- name = word(line,2)
- ordHash.name = word(line,3)
- end
- end
- rc = stream(dbfile,'c','close')
- return rc
-
-/**
- * Display script syntax.
- */
-syntax: procedure
- say 'Syntax: MakeDef.cmd [options] <dbfile> <libname> [options]'
- say ' <dbfile> Ordinals database.'
- say ' <libname> Library stem'
- say 'Options:'
- say ' -A<string> ASD Feature Id.'
- say ' -C<string> Country code.'
- say ' -D<string> Description.'
- say ' -O<string> Ordinals definition file.'
- say ' -R[deffile] Read description from .def file.'
- say ' -H<string> Hostname.'
- say ' -L<string> Language code.'
- say ' -M<string> MiniVer.'
- say ' -N<string> Vendor.'
- say ' -P<string> Fixpak version.'
- say ' -T<string> Date Time.'
- say ' -V<string> Version.'
- say '<string> could be a double quoted string or a single word.'
- say ' You could also reference #defines in C/C++ include files.'
- say ' The string should then have this form:'
- say ' "#define=<DEFINE_NAME>,<includefile.h>"'
- say '';
-
- return;
-
-
-/**
- * Search for a #define in an C/C++ header or source file.
- *
- * @returns String containing the defined value
- * found for the define in the header file.
- * Quits on fatal errors.
- * @param A string on the form: "#define=DEFINETOFIND,includefile.h"
- * @remark Write only code... - let's hope it works.
- */
-LookupDefine: procedure
- parse arg '#'sDefine'='sMacro','sIncludeFile
-
- /*
- * Validate parameters.
- */
- sMacro = strip(sMacro);
- sIncludeFile = strip(sIncludeFile);
- if (sMacro = '') then
- do
- say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.';
- say ' <DEFINE_NAME> was empty.';
- exit(-20);
- end
- if (sIncludeFile = '') then
- do
- say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.';
- say ' <includefile.h> was empty.';
- exit(-20);
- end
-
-
- sIllegal = translate(translate(sMacro),,
- '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',,
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_');
-
- if (strip(translate(sIllegal, ' ', '!')) <> '') then
- do
- say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.';
- say ' <DEFINE_NAME> contains illegal charater(s).'
- say ' 'sMacro;
- say ' 'translate(sIllegal, ' ', '!');
- exit(-20);
- end
-
- /*
- * Open include file.
- */
- sRc = stream(sIncludeFile, 'c', 'open read');
- if (pos('READY', sRc) <> 1) then
- do /* search INCLUDE variable */
- sFile = SysSearchPath('INCLUDE', sIncludeFile);
- if (sFile = '') then
- do
- say 'Can''t find include file 'sIncludeFile'.';
- exit(-20);
- end
- sIncludeFile = sFile;
-
- sRc = stream(sIncludeFile, 'c', 'open read');
- if (pos('READY', sRc) <> 1) then
- do
- say 'Failed to open include file' sIncludeFile'.';
- exit(-20);
- end
- end
-
- /*
- * Search the file line by line.
- * We'll check for lines starting with a hash (#) char.
- * Then check that the word after the hash is 'define'.
- * Then match the next word with the macro name.
- * Then then get the next rest of the line to comment or continuation char.
- * (continuation is not supported)
- * Finally strip quotes.
- */
- sValue = '';
- do while (lines(sIncludeFile) > 0)
- sLine = strip(linein(sIncludeFile));
- if (sLine = '') then
- iterate;
- if (substr(sLine, 1, 1) <> '#') then
- iterate;
- sLine = substr(sLine, 2);
- if (word(sLine, 1) <> 'define') then
- iterate;
- sLine = strip(substr(sLine, wordpos(sLine, 1) + length('define')+1));
- if ( substr(sLine, 1, length(sMacro)) <> sMacro,
- | substr(sLine, length(sMacro)+1, 1) <> ' ') then
- iterate;
- sLine = strip(substr(sLine, length(sMacro) + 1));
- if (sLine = '') then
- do
- say 'error: #define' sMacro' is empty.';
- call stream sIncludeFile, 'c', 'close';
- exit(-20);
- end
-
- chQuote = substr(sLine, 1, 1);
- if (chQuote = '"' | chQuote = "'") then
- do /* quoted string */
- iLastQuote = 0;
- do forever
- iLast = pos(chQuote, sLine, 2);
- if (iLast <= 0) then
- leave;
- if (substr(sLine, iLast, 1) = '\') then
- iterate;
- iLastQuote = iLast;
- leave;
- end
-
- if (iLastQuote <= 0) then
- do
- say 'C/C++ syntax error in 'sIncludefile': didn''t find end quote.';
- call stream sIncludeFile, 'c', 'close';
- exit(-20);
- end
-
- call stream sIncludeFile, 'c', 'close';
- sValue = substr(sLine, 2, iLastQuote - 2);
- say 'Found 'sMacro'='sValue;
- return sValue;
- end
- else
- do
- iCommentCPP = pos('//',sLine);
- iCommentC = pos('/*',sLine);
- if (iCommentC > 0 & iCommentCPP > 0 & iCommentC > iCommentCPP) then
- iComment = iCommentCPP;
- else if (iCommentC > 0 & iCommentCPP > 0 & iCommentC < iCommentCPP) then
- iComment = iCommentC;
- else if (iCommentCPP > 0) then
- iComment = iCommentCPP;
- else if (iCommentC > 0) then
- iComment = iCommentC;
- else
- iComment = 0;
-
- if (iComment > 0) then
- sValue = strip(substr(sLine, 1, iComment-1));
- else
- sValue = strip(sLine);
-
- if (sValue <> '') then
- do
- if (substr(sValue, length(sValue)) = '\') then
- do
- say 'Found continuation char: Multiline definitions are not supported!\n';
- call stream sIncludeFile, 'c', 'close';
- exit(-20);
- end
- end
-
- if (sValue = '') then
- say 'warning: The #define has no value.';
-
- call stream sIncludeFile, 'c', 'close';
- say 'Found 'sMacro'='sValue;
- return sValue;
- end
- end
-
- call stream sIncludeFile, 'c', 'close';
- say 'error: didn''t find #define' sMacro'.';
- exit(-20);
-
-
-
-/**
- * Reads the description line for a .def-file.
- * @returns The Description string, with quotes removed.
- * Empty string is acceptable.
- * On error we'll terminate the script.
- * @param sDefFile Filename of .def-file to read the description from.
- * @param sDefFile2 Used if sDefFile is empty.
- * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no)
- */
-ReadDescription: procedure;
- parse arg sDefFile, sDefFile2
-
- /*
- * Validate parameters.
- */
- if (sDefFile = '') then
- sDefFile = sDefFile2;
- if (sDefFile = '') then
- do
- say 'error: no definition file to get description from.'
- exit(-1);
- end
-
- /*
- * Open file
- */
- rc = stream(sDefFile, 'c', 'open read');
- if (pos('READY', rc) <> 1) then
- do
- say 'error: failed to open deffile file.';
- exit(-1);
- end
-
-
- /*
- * Search for the 'DESCRIPTION' line.
- */
- do while (lines(sDefFile) > 0)
- sLine = strip(linein(sDefFile));
- if (sLine = '') then
- iterate;
- if (translate(word(sLine, 1)) <> 'DESCRIPTION') then
- iterate;
- sLine = strip(substr(sLine, wordpos(sLine, 1) + length('DESCRIPTION')+1));
-
- ch = substr(sLine, 1, 1);
- if (ch <> "'" & ch <> '"') then
- do
- say 'syntax error: description line in' sDefFile 'is misformed.';
- call stream sDefFile, 'c', 'close';
- exit(-10);
- end
-
- iEnd = pos(ch, sLine, 2);
- if (iEnd <= 0) then
- do
- say 'syntax error: description line in' sDefFile 'is misformed.';
- call stream sDefFile, 'c', 'close';
- exit(-10);
- end
-
- call stream sDefFile, 'c', 'close';
- sValue = substr(sLine, 2, iEnd - 2);
- say 'Found Description:' sValue;
- return sValue;
- end
-
- call stream sDefFile, 'c', 'close';
- say 'info: Didn''t find description line in' sDefFile'.';
- return '';
-
-AddCodeDataSection: procedure
- parse arg outfile;
- call lineout outfile,"CODE PRELOAD";
- call lineout outfile,"DATA MULTIPLE NONSHARED";
- return '';
-
-findOrdinal: procedure expose ordHash.
- parse arg line,sOrdinal;
- line = strip(line,,' ');
- line = word(translate(strip(line),' ','='),1)
- if (sOrdinal) then do
- ordinal = ordHash.line;
- if (ordinal = 'ORDHASH.'line) then do
- say 'Oops: DB lacks ordinal for symbol "'line'" Create one!'
- return ' 'line
- end
- else
- return ' 'line' @ 'ordinal
- end
- else
- return ' 'line
-/**
- * This is a function which reads sLibrary into an
- * internal array and changes the DESCRIPTION text if found.
- * If DESCRIPTION isn't found, it is added at the end.
- * The array is written to sDBFile.
- * @returns 0 on succes.
- * Errorcode on error.
- * @param sLibrary library stem
- * @param sDescription New description string.
- * @param sRealname real 8.3 name of library
- * @param sOrdinals flag to denote generation of ordinals
- * @param sInitTerm flag to denote adding INITINSTANCE/TERM... qualifiers
- * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no)
- * @author heavily modified by Platon & Holger
- */
-UpdateDefFile: procedure expose ordHash.;
- parse arg sLibrary, sDescription, sRealname, sOrdinals, sInitTerm
-
- initterm = ''
- if sInitTerm = 1 then initterm = 'INITINSTANCE TERMINSTANCE'
-
- /* Open input file. */
- infile = 'tmpos2.def'
- rc = stream(infile, 'c', 'open read');
- if (pos('READY', rc) <> 1) then do
- say 'error: failed to open' infile 'file.';
- return 110;
- end
- /* open output file. */
- if sOrdinals = 1 then
- outfile = sLibrary'o_os2.def'
- else
- outfile = sLibrary'os2.def'
- call SysFileDelete(outfile)
- rc = stream(outfile, 'c', 'open write');
- if (pos('READY', rc) <> 1) then do
- say 'error: failed to open outputfile' outfile 'file.';
- return 110;
- end
- call lineout outfile, '; Created by makedef.cmd on' date() time()'. Do not edit.', 1;
-
- /*
- * Search for the specific lines.
- */
- fDescription = 0;
- fExports = 0;
- fWinLib = 0;
- do while (lines(infile) > 0)
- line = strip(linein(infile));
- line = strip(line,,' ');
- if line = '' then iterate;
- if pos('#',line) = 1 then iterate;
- if pos(';',line) = 1 then iterate;
- if pos('/*',line) = 1 then iterate;
-
- firstsym = translate(word(line,1))
- if firstsym = 'LIBRARY' then do
- call lineout outfile,'LIBRARY 'sRealName' 'initterm
- iterate
- end
- if firstsym = 'VERSION' then do
- call lineout outfile, 'DESCRIPTION "'sDescription sLibrary'"'
- fDescription = 1;
- AddCodeDataSection(outfile);
- end
- if (firstsym = 'EXPORTS') then do
- call lineout outfile,'EXPORTS'
- fExports = 1;
- iterate;
- end
- if (fExports) then do
- call lineout outfile, findOrdinal(line,sOrdinals);
- iterate;
- end
- end
-
- /*
- * Add description is none was found.
- */
- if (\fDescription) then
- do
- call lineout outfile,"DESCRIPTION '"||sDescription sLibrary||"'";
- AddCodeDataSection(outfile);
- end
-
- /*
- * Close input file and open output file.
- */
- call stream outfile, 'c', 'close';
- call stream infile, 'c', 'close';
- if sOrdinals = 1 then do
- call SysFileDelete('dll.name');
- call stream 'dll.name', 'c', 'open write';
- call charout 'dll.name', sRealName".dll";
- call stream 'dll.name', 'c'. 'close';
- end
- return 0;
-