X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCglobl.h;h=7166d88177841520743536b7ec1e7a3134ec55d7;hb=HEAD;hp=4c8062ea1972a23b020b5b1c1a7fcb00cfc35a9d;hpb=ec6536ea348e3b16975ff2120fe45c193d42cd55;p=fw%2Fsdcc diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h index 4c8062ea..7166d881 100644 --- a/src/SDCCglobl.h +++ b/src/SDCCglobl.h @@ -18,6 +18,36 @@ #define UNIX_DIR_SEPARATOR_CHAR '/' +#if defined(__BORLANDC__) || defined(_MSC_VER) +#define STRCASECMP stricmp +#define STRNCASECMP strnicmp +#else +#define STRCASECMP strcasecmp +#define STRNCASECMP strncasecmp +#endif + +#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__) || defined (__CYGWIN__) + +#ifndef HAVE_DOS_BASED_FILE_SYSTEM +#define HAVE_DOS_BASED_FILE_SYSTEM 1 +#endif + +#define IS_DIR_SEPARATOR(c) ((c) == DIR_SEPARATOR_CHAR || (c) == UNIX_DIR_SEPARATOR_CHAR) +/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is + only semi-absolute. This is because the users of IS_ABSOLUTE_PATH + want to know whether to prepend the current working directory to + a file name, which should not be done with a name like d:foo. */ +#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':'))) +#define FILENAME_CMP(s1, s2) STRCASECMP(s1, s2) + +#else /* not DOSish */ + +#define IS_DIR_SEPARATOR(c) ((c) == DIR_SEPARATOR_CHAR) +#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0])) +#define FILENAME_CMP(s1, s2) strcmp(s1, s2) + +#endif /* not DOSish */ + #ifdef WIN32 # define NATIVE_WIN32 1 # ifndef __MINGW32__ @@ -233,6 +263,7 @@ struct options int parms_in_bank1; /* DS390 - use reg bank1 to pass parameters */ int stack_size; /* MCS51/DS390 - Tells the linker to allocate this space for stack */ int no_pack_iram; /* MCS51/DS390 - Tells the linker not to pack variables in internal ram */ + int acall_ajmp; /* MCS51 - Use acall/ajmp instead of lcall/ljmp */ /* starting address of the segments */ int xstack_loc; /* initial location of external stack */ int stack_loc; /* initial value of internal stack pointer */ @@ -249,14 +280,17 @@ struct options int noCcodeInAsm; /* hide c-code from asm */ int iCodeInAsm; /* show i-code in asm */ int noPeepComments; /* hide peephole optimizer comments */ + int verboseAsm; /* include comments generated with gen.c */ int printSearchDirs; /* display the directories in the compiler's search path */ int vc_err_style; /* errors and warnings are compatible with Micro$oft visual studio */ int use_stdout; /* send errors to stdout instead of stderr */ int no_std_crt0; /* for the z80/gbz80 do not link default crt0.o*/ int std_c99; /* enable C99 keywords/constructs */ int std_sdcc; /* enable SDCC extensions to C */ - const char *code_seg; /* segment name to use instead of CSEG */ - const char *const_seg; /* segment name to use instead of CONST */ + int dollars_in_ident; /* zero means dollar signs are punctuation */ + int unsigned_char; /* use unsigned for char without signed/unsigned modifier */ + char *code_seg; /* segment name to use instead of CSEG */ + char *const_seg; /* segment name to use instead of CONST */ /* sets */ set *calleeSavesSet; /* list of functions using callee save */ set *excludeRegsSet; /* registers excluded from saving */ @@ -266,7 +300,8 @@ struct options /* forward definition for variables accessed globally */ extern int noAssemble; /* no assembly, stop after code generation */ extern char *yytext; -extern char *currFname; +extern char *lexFilename; /* lex idea of current file name */ +extern int lexLineno; /* lex idea of line number of the current file */ extern char *fullSrcFileName; /* full name for the source file; */ /* can be NULL while linking without compiling */ extern char *fullDstFileName; /* full name for the output file; */ @@ -280,17 +315,18 @@ extern int seqPointNo; /* current sequence point */ extern FILE *yyin; /* */ extern FILE *asmFile; /* assembly output file */ extern FILE *cdbFile; /* debugger symbol file */ -extern int NestLevel; /* NestLevel SDCC.y */ -extern int stackPtr; /* stack pointer SDCC.y */ -extern int xstackPtr; /* external stack pointer SDCC.y */ +extern int NestLevel; /* NestLevel SDCC.y */ +extern int stackPtr; /* stack pointer SDCC.y */ +extern int xstackPtr; /* external stack pointer SDCC.y */ extern int reentrant; /* /X flag has been sent SDCC.y */ -extern char buffer[PATH_MAX * 2];/* general buffer SDCCmain.c */ -extern int currRegBank; /* register bank being used SDCCgens.c */ -extern int RegBankUsed[4]; /* JCF: register banks used SDCCmain.c */ -extern int BitBankUsed; /* MB: overlayable bit bank SDCCmain.c */ +extern char buffer[PATH_MAX * 2];/* general buffer SDCCmain.c */ +extern int currRegBank; /* register bank being used SDCCgens.c */ +extern int RegBankUsed[4]; /* JCF: register banks used SDCCmain.c */ +extern int BitBankUsed; /* MB: overlayable bit bank SDCCmain.c */ extern struct symbol *currFunc; /* current function SDCCgens.c */ -extern int cNestLevel; /* block nest level SDCCval.c */ -extern int currBlockno; /* sequentail block number */ +extern int cNestLevel; /* block nest level SDCCval.c */ +extern int blockNo; /* maximum sequential block number */ +extern int currBlockno; /* sequential block number */ extern struct optimize optimize; extern struct options options; extern unsigned maxInterrupts;