URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [fixincludes/] [fixincl.tpl] - Rev 724
Compare with Previous | Blame | View Log
[= AutoGen5 Template -*- Mode: C -*-x=fixincl.x =][= (dne " * " "/* ")=]*//* DO NOT SVN-MERGE THIS FILE, EITHER [=(define re-ct 0) (define max-mach 0) (define ct 0)(define HACK "") (define Hack "") (define tmp "")(shell "date") =]** You must regenerate it. Use the ./genfixes script.*** This is part of the fixincl program used to install modified versions of* certain ANSI-incompatible system header files which are fixed to work* correctly with ANSI C and placed in a directory that GNU C will search.** This file contains [=(count "fix")=] fixup descriptions.** See README for more information.** inclhack copyright (c) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,* 2006, 2007, 2008* The Free Software Foundation, Inc.** inclhack is free software: you can redistribute it and/or modify it* under the terms of the GNU General Public License as published by the* Free Software Foundation, either version 3 of the License, or* (at your option) any later version.** inclhack is distributed in the hope that it will be useful, but* WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.* See the GNU General Public License for more details.** You should have received a copy of the GNU General Public License along* with this program. If not, see <http://www.gnu.org/licenses/>.*/#ifndef SED_PROGRAM#define SED_PROGRAM "/usr/bin/sed"#endifstatic char const sed_cmd_z[] = SED_PROGRAM;[=FOR fix =]/* * * * * * * * * * * * * * * * * * * * * * * * * *** Description of [=(set! Hack (string-capitalize! (get "hackname")))(set! HACK (string-upcase! (get "hackname")))(if (and (not (exist? "test_text")) (not (exist? "replace")))(error (sprintf "include fix '%s' has no test text" Hack )) )(. Hack)=] fix*/[=# Note that this is not just for debugging purposes, but in casesome C fix wishes to refer to the regexps it is paired with.See commentary at the top of fixfixes.c.=]tSCC z[=(. Hack)=]Name[] ="[=hackname=]";/** File name selection pattern*/[=IF (exist? "files")=]tSCC z[=(. Hack)=]List[] ="[= (join "\\0" (stack "files")) =]\0";[=ELSE =]#define z[=(. Hack)=]List (char*)NULL[=ENDIF (exist? "files") =]/** Machine/OS name selection pattern*/[=IF (exist? "mach")=]tSCC* apz[=(. Hack)=]Machs[] = {[=(set! ct 0) =][=FOR mach =][=(set! tmp (get "mach"))(set! ct (+ ct (string-length tmp) 5))(kr-string tmp)=],[=ENDFOR=](const char*)NULL };[=(if (> ct max-mach) (set! max-mach ct)) =][=ELSE =]#define apz[=(. Hack)=]Machs (const char**)NULL[=ENDIF (exist? "mach") =][=IF (exist? "select")=]/** content selection pattern - do fix if pattern found*/[=FOR select =]tSCC z[=(. Hack)=]Select[=(for-index)=][] =[=(kr-string (get "select"))=];[=ENDFOR select =][=ENDIF =][=IF (exist? "bypass")=]/** content bypass pattern - skip fix if pattern found*/[=FOR bypass =]tSCC z[=(. Hack)=]Bypass[=(for-index)=][] =[=(kr-string (get "bypass"))=];[=ENDFOR bypass =][=ENDIF =][=IF (exist? "test")=]/** perform the 'test' shell command - do fix on success*/[=FOR test =]tSCC z[=(. Hack)=]Test[=(for-index)=][] =[=(kr-string (get "test"))=];[=ENDFOR =][=ENDIF =][=IF (exist? "c_test")=]/** perform the C function call test*/[=FOR c_test =]tSCC z[=(. Hack)=]FTst[=(for-index)=][] = "[=c_test=]";[=ENDFOR c_test =][=ENDIF =][=IF (set! ct (+ (count "select") (count "bypass")(count "test") (count "c_test")))(= ct 0)=]#define [=(. HACK)=]_TEST_CT 0#define a[=(. Hack)=]Tests (tTestDesc*)NULL[=ELSE =]#define [=(. HACK)=]_TEST_CT [=(. ct)=][=(set! re-ct (+ re-ct (count "select") (count "bypass"))) =]static tTestDesc a[=(. Hack)=]Tests[] = {[=FOR test =]{ TT_TEST, z[=(. Hack)=]Test[=(for-index)=], 0 /* unused */ },[=ENDFOR test =][=FOR c_test =]{ TT_FUNCTION, z[=(. Hack)=]FTst[=(for-index)=], 0 /* unused */ },[=ENDFOR c_test =][=FOR bypass =]{ TT_NEGREP, z[=(. Hack)=]Bypass[=(for-index)=], (regex_t*)NULL },[=ENDFOR bypass =][=FOR select =]{ TT_EGREP, z[=(. Hack)=]Select[=(for-index)=], (regex_t*)NULL },[=ENDFOR select =] };[=ENDIF =]/** Fix Command Arguments for [=(. Hack)=]*/static const char* apz[=(. Hack)=]Patch[] = {[=IF (exist? "sed")=] sed_cmd_z[=FOR sed=],"-e", [=(kr-string (get "sed"))=][=ENDFOR sed=],[=ELIF (exist? "shell")=] "sh", "-c",[=(kr-string (get "shell"))=],[=ELIF (exist? "c_fix")=][=(kr-string (get "c_fix"))=],[=FOR c_fix_arg =][=(kr-string (get "c_fix_arg"))=],[=ENDFOR c_fix_arg =][=ELIF (> (len "replace") 0) =][=(kr-string (get "replace"))=],[=ENDIF=](char*)NULL };[=ENDFOR fix=]/* * * * * * * * * * * * * * * * * * * * * * * * * *** List of all fixes*/[=# as of this writing, 49 bytes are needed by the case statement format.We also must allow for the size of the target machine machine name.This allows for a 79 byte machine name. Better be enough.=]#define REGEX_COUNT [= (. re-ct) =]#define MACH_LIST_SIZE_LIMIT [= (+ 128 max-mach) =]#define FIX_COUNT [= (count "fix") =]/** Enumerate the fixes[= # in a way that minimizes diffs :-) =]*/typedef enum {[=FOR fix "," =][=(string-upcase! (get "hackname"))=]_FIXIDX[=ENDFOR=]} t_fixinc_idx;tFixDesc fixDescList[ FIX_COUNT ] = {[=FOR fix ",\n" =][=(set! Hack (string-capitalize! (get "hackname")))(set! HACK (string-upcase! (get "hackname"))) =]{ z[=(. Hack)=]Name, z[=(. Hack)=]List,apz[=(. Hack)=]Machs,[=(. HACK)=]_TEST_CT, [=IF (exist? "not_machine") =]FD_MACH_IFNOT[=ELSE =]FD_MACH_ONLY[=ENDIF =][=IF (exist? "shell") =] | FD_SHELL_SCRIPT[=ELIF (exist? "c_fix") =] | FD_SUBROUTINE[=ELIF (exist? "replace") =] | FD_REPLACEMENT[=ENDIF =],a[=(. Hack)=]Tests, apz[=(. Hack)=]Patch, 0 }[=ENDFOR =]};
