]> Shamusworld >> Repos - rmac/blobdiff - rmac.h
Extended switch -s to also warn about automatically applied 68000 optimisations....
[rmac] / rmac.h
diff --git a/rmac.h b/rmac.h
index f660a0d788295c711d39bbebcd6e240dbd30692b..f7b39e39b8d027ded9bf9b68da12dcd408fd7aa4 100644 (file)
--- a/rmac.h
+++ b/rmac.h
@@ -3,7 +3,7 @@
 // RMAC.H - Main Application Code
 // Copyright (C) 199x Landon Dyer, 2011 Reboot & Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
-// Source Utilised with the Kind Permission of Landon Dyer
+// Source utilised with the kind permission of Landon Dyer
 //
 
 #ifndef __RMAC_H__
@@ -12,9 +12,9 @@
 //
 // TARGET SPECIFIC BUILD SETTINGS
 //
-
-#ifdef WIN32
-       #define PLATFORM        "Win32"                 // Release platform - windows
+#if defined(WIN32) || defined (WIN64)
+       // Release platform - windows
+       #define PLATFORM        "Win32"
        #define _OPEN_FLAGS     _O_TRUNC|_O_CREAT|_O_BINARY|_O_RDWR
        #define _OPEN_INC       _O_RDONLY|_O_BINARY
        #define _PERM_MODE      _S_IREAD|_S_IWRITE 
                #if _MSC_VER > 1000
                        #pragma warning(disable:4996)
                #endif
+
+       // Makes warnings double clickable on visual studio (ggn)
+       #define STRINGIZE_HELPER(x) #x
+       #define STRINGIZE(x) STRINGIZE_HELPER(x)
+       #define WARNING(desc) __pragma(message(__FILE__ "(" STRINGIZE(__LINE__) ") : Warning: " #desc))
+
+       // usage:
+       // WARNING(FIXME: Code removed because...)
+
+       #else
+       //If we're not compiling for Visual Studio let's assume that we're using
+       //some flavour of gcc instead. So let's use the gcc compliant macro instead.
+       //If some weirdo uses something else (I dunno, Intel compiler or something?)
+       //this is probably going to explode spectacularly. Let's wait for the fireworks!
+       #define DO_PRAGMA(x) _Pragma (#x)
+       #define WARNING(desc) DO_PRAGMA(message (#desc))
+
        #endif
        #include <io.h>
        #include <fcntl.h>
        #include <ctype.h>
        #include <sys/types.h>
        #include <sys/stat.h>
+
 #else 
        #ifdef __GCCUNIX__
-       #define PLATFORM        "OSX/Linux"             // Release platform - mac OS-X or linux
+       // Release platform - mac OS-X or linux
+       #define PLATFORM        "OSX/Linux"
        #define _OPEN_FLAGS     O_TRUNC|O_CREAT|O_RDWR
        #define _OPEN_INC       O_RDONLY
        #define _PERM_MODE      S_IREAD|S_IWRITE 
+       // WARNING WARNING WARNING
+       #define DO_PRAGMA(x) _Pragma (#x)
+       #define WARNING(desc) DO_PRAGMA(message (#desc))
        #include <sys/fcntl.h>
        #include <stdio.h>
        #include <stdlib.h>
        #include <sys/stat.h>
        #include <unistd.h>
 #else
-       #define PLATFORM        "Unknown"               // Release platform - not specified 
+       // Release platform - not specified 
+       #define PLATFORM        "Unknown"
        #define _OPEN_FLAGS     O_TRUNC|O_CREAT|O_RDWR
        #define _OPEN_INC       O_RDONLY
        #define _PERM_MODE      S_IREAD|S_IWRITE 
+       // Defined here, even though the platfrom may not support it...
+       #define DO_PRAGMA(x) _Pragma (#x)
+       #define WARNING(desc) DO_PRAGMA(message (#desc))
        #include <sys/fcntl.h>
        #include <stdio.h>
        #include <stdlib.h>
        #endif
 #endif
 
+//
+// Non-target specific stuff
+//
 #include <inttypes.h>
+#include "symbol.h"
 
 #define BYTE         uint8_t
 #define WORD         uint16_t
@@ -69,7 +99,7 @@
 
 #define ERROR        (-1)                      // Generic error return
 #define EOS          '\0'                      // End of string
-#define SPACE        ' '                       // Ascii space 
+#define SPACE        ' '                       // ASCII space 
 #define SLASHCHAR    '/'
 #define SLASHSTRING  "/"
 #define VALUE        LONG                      // Assembler value
 #define MWC          1                         // Mark Williams object format
 #define BSD          2                         // BSD object format
 
-// Symbols
-#define  SYM         struct _sym
-SYM
-{
-   SYM * snext;                                                // * -> Next symbol on hash-chain
-   SYM * sorder;                                       // * -> Next sym in order of refrence
-   SYM * sdecl;                                                // * -> Next sym in order of declaration
-   BYTE stype;                                         // Symbol type 
-   WORD sattr;                                         // Attribute bits
-   LONG sattre;                                                // Extended attribute bits
-   WORD senv;                                          // Enviroment number
-   LONG svalue;                                                // Symbol value
-   char * sname;                                       // * -> Symbol's print-name
-};
-
 // Pointer type that can point to (almost) anything
 #define PTR union _ptr
 PTR
@@ -177,9 +192,9 @@ PTR
 #define EQUATEDCC    0x0020
 #define UNDEF_CC     0x0040
 
-#define RISCSYM      0x00010000
+//#define RISCSYM      0x00010000
 
-// Globals, externals etc
+// Globals, externals, etc.
 extern int verb_flag;
 extern int debug;
 extern int rgpu, rdsp;
@@ -194,20 +209,13 @@ extern int glob_flag;
 extern int lsym_flag;
 extern int sbra_flag;
 extern int obj_format;
-extern LONG amemtot;
-extern int in_main;
+extern int legacy_flag;
+extern LONG PRGFLAGS;
+extern int optim_flag;
 
-// Prototypes
-void init_sym(void);
-SYM * newsym(char *, int, int);
+// Exported functions
 char * fext(char *, char *, int);
-void cantcreat(char *);
-int kmatch(char *, int *, int *, int *, int *);
-void autoeven(int);
 int nthpath(char *, int, char *);
-void clear(char *, LONG);
-char * copy(char *, char *, LONG);
-int rmac_qsort(char *, int, int, int (*)());
-//char * amem(LONG);
 
 #endif // __RMAC_H__
+