Use 'ao-dbg' instead of 's51' to communicate with TeleMetrum
[fw/sdcc] / src / SDCCglobl.h
index 4c8062ea1972a23b020b5b1c1a7fcb00cfc35a9d..7166d88177841520743536b7ec1e7a3134ec55d7 100644 (file)
 
 #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;