DEADSOFTWARE

add paths for osx
[d2df-sdl.git] / src / shared / a_modes.inc
index 35e29d6ec289341da8ddd68f270baa17b10ce5d6..9b5d9390f1fadf14f156622520bde230fc91a334 100644 (file)
 // compiler options, common for all game modules
-{$MODE DELPHI}
-{$MODESWITCH NESTEDPROCVARS+}
-{$MODESWITCH DUPLICATELOCALS-}
-{.$MODESWITCH CBLOCKS+}
+{$MODE OBJFPC}
+
 {$MODESWITCH ADVANCEDRECORDS+}
+{$MODESWITCH ALLOWINLINE+}
+{$MODESWITCH ANSISTRINGS+} // Allow use of ansistrings.
+{$MODESWITCH AUTODEREF+} // Automatic (silent) dereferencing of typed pointers.
+{$MODESWITCH CLASS+}
+{$MODESWITCH CLASSICPROCVARS+} // Use classical procedural variables.
+{$MODESWITCH DEFAULTPARAMETERS+} // Allow use of default parameter values.
+{$MODESWITCH DUPLICATELOCALS-} // Allow local variables in class methods to have the same names as properties of the class.
+{$MODESWITCH EXCEPTIONS+}
+{$MODESWITCH HINTDIRECTIVE+} // Support the hint directives (deprecated, platform etc.)
+{$MODESWITCH INITFINAL+} // Allow use of Initialization and Finalization
+{.$MODESWITCH ISOUNARYMINUS-} // Unary minus as required by ISO pascal.
+{$MODESWITCH MACPROCVARS-} // Use mac-style procedural variables.
+{$MODESWITCH NESTEDCOMMENTS-}
+{$MODESWITCH NESTEDPROCVARS+}
+{$MODESWITCH OBJPAS+}
+{$MODESWITCH OUT+} // Allow use of the out parameter type.
+{$MODESWITCH PCHARTOSTRING+}
+{$MODESWITCH POINTERTOPROCVAR+} // Allow silent conversion of pointers to procedural variables.
+{$MODESWITCH PROPERTIES+}
+{$MODESWITCH REPEATFORWARD+} // Implementation and Forward declaration must match completely.
+{$MODESWITCH RESULT+}
+{$MODESWITCH TYPEHELPERS+} // Allow the use of type helpers.
+{$MODESWITCH UNICODESTRINGS-}
+
+{$IFDEF DARWIN}
+  {$MODESWITCH OBJECTIVEC1}
+{$ENDIF}
+
 {$ASSERTIONS ON}
+{$BITPACKING OFF}
+{$BOOLEVAL OFF}
+{$COPERATORS ON}
+{$EXTENDEDSYNTAX ON}
+{$IFDEF CPU386}
+  {$FPUTYPE SSE}
+{$ENDIF}
+{$GOTO ON}
+{$IEEEERRORS OFF}
+{$INLINE ON}
 {$LONGSTRINGS ON}
+{$MACRO OFF}
+{$OBJECTCHECKS OFF}
 {$OVERFLOWCHECKS OFF}
+{$POINTERMATH ON}
 {$RANGECHECKS OFF}
-{.$STATIC ON}
-{$TYPEDADDRESS OFF}
+{$SAFEFPUEXCEPTIONS OFF}
+{$SCOPEDENUMS ON} // this may be changed later
+{$SMARTLINK ON}
+{$TYPEDADDRESS ON}
+{$TYPEINFO ON}
 {$VARSTRINGCHECKS OFF}
-{$EXTENDEDSYNTAX ON}
-{$B-}
-{$S-}
+
+{$S-} // disable stack checking
+{$MMX-} // get lost, mmx
+
+{$IF DEFINED(D2F_DEBUG)}
+  {$STACKFRAMES ON}
+  {$HINTS OFF}
+{$ELSE}
+  {$STACKFRAMES OFF}
+  {$HINTS OFF}
+  {$DEFINE D2F_MORE_OPTIM}
+{$ENDIF}
+{$WARNINGS ON}
+{$NOTES ON}
+
+{$IF DEFINED(D2F_DEBUG_OPTIM) or DEFINED(D2F_MORE_OPTIM)}
+  {$OPTIMIZATION DEADVALUES}
+  {$OPTIMIZATION CONSTPROP}
+  {$OPTIMIZATION DEADSTORE}
+{$ENDIF}
+
+{$IFDEF WIN32}
+  {$IFNDEF MSWINDOWS}
+    {$DEFINE MSWINDOWS}
+  {$ENDIF}
+{$ENDIF}
 
 {$IFDEF MSWINDOWS}
   {$IFNDEF WINDOWS}
     {$DEFINE WINDOWS}
   {$ENDIF WINDOWS}
-{$ENDIF MSWINDOWS}
+{$ENDIF}
+
+(* --------- Build options check --------- *)
+
+{$IFDEF HEADLESS}
+  {$DEFINE USE_SYSSTUB}
+  {$IF DEFINED(USE_SDL) OR DEFINED(USE_SDL2)}
+    {$WARNING System drivers not supported in headless mode. Force stub driver...}
+    {$UNDEF USE_SDL}
+    {$UNDEF USE_SDL2}
+  {$ENDIF}
+  {$DEFINE USE_GLSTUB}
+  {$IF DEFINED(USE_GLES1) OR DEFINED(USE_OPENGL)}
+    {$WARNING Render drivers not needed in headless mode. Force stub driver...}
+    {$UNDEF USE_GLES1}
+    {$UNDEF USE_OPENGL}
+  {$ENDIF}
+  {$IFDEF ENABLE_HOLMES}
+    {$WARNING Holmes in headless mode has no sense. Disabled.}
+    {$UNDEF ENABLE_HOLMES}
+  {$ENDIF}
+{$ENDIF}
+
+{$IF DEFINED(USE_SYSSTUB)}
+  {$IF DEFINED(USE_SDL) OR DEFINED(USE_SDL2)}
+    {$ERROR Only one system driver must be selected!}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_SDL)}
+  {$IF DEFINED(USE_SYSSTUB) OR DEFINED(USE_SDL2)}
+    {$ERROR Only one system driver must be selected!}
+  {$ENDIF}
+  {$IFDEF USE_SDLMIXER}
+    {$ERROR SDL_mixer not supported with SDL 1.2.x}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_SDL2)}
+  {$IF DEFINED(USE_SYSSTUB) OR DEFINED(USE_SDL)}
+    {$ERROR Only one system driver must be selected!}
+  {$ENDIF}
+{$ELSE}
+  {$DEFINE USE_SDL2}
+  {.$ERROR System driver not selected. Use -dUSE_SYSSTUB or -dUSE_SDL or -dUSE_SDL2}
+{$ENDIF}
+
+{$IF DEFINED(USE_SOUNDSTUB)}
+  {$IF DEFINED(USE_SDLMIXER) OR DEFINED(USE_FMOD) OR DEFINED(USE_OPENAL)}
+    {$ERROR Only one sound driver must be selected!}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_SDLMIXER)}
+  {$IF DEFINED(USE_SOUNDSTUB) OR DEFINED(USE_FMOD) OR DEFINED(USE_OPENAL)}
+    {$ERROR Only one sound driver must be selected!}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_FMOD)}
+  {$IF DEFINED(USE_SOUNDSTUB) OR DEFINED(USE_SDLMIXER) OR DEFINED(USE_OPENAL)}
+    {$ERROR Only one sound driver must be selected!}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_OPENAL)}
+  {$IF DEFINED(USE_SOUNDSTUB) OR DEFINED(USE_SDLMIXER) OR DEFINED(USE_FMOD)}
+    {$ERROR Only one sound driver must be selected!}
+  {$ENDIF}
+{$ELSE}
+  {$IFDEF IN_TOOLS}
+    {$DEFINE USE_SOUNDSTUB}
+  {$ELSE}
+    {$ERROR Sound driver not selected. Use -dUSE_SOUNDSTUB or -dUSE_SDLMIXER or -dUSE_FMOD or -dUSE_OPENAL}
+  {$ENDIF}
+{$ENDIF}
+
+{$IF DEFINED(USE_GLSTUB)}
+  {$IF DEFINED(USE_GLES1) OR DEFINED(USE_OPENGL)}
+    {$ERROR Only one render driver must be selected!}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_GLES1)}
+  {$IF DEFINED(USE_GLSTUB) OR DEFINED(USE_OPENGL)}
+    {$ERROR Only one render driver must be selected!}
+  {$ENDIF}
+{$ELSEIF DEFINED(USE_OPENGL)}
+  {$IF DEFINED(USE_GLSTUB) OR DEFINED(USE_GLES1)}
+    {$ERROR Only one render driver must be selected!}
+  {$ENDIF}
+{$ELSE}
+  {$DEFINE USE_OPENGL}
+  {.$ERROR Render driver not selected. Use -dUSE_GLSTUB or -dUSE_GLES1 or -dUSE_OPENGL}
+{$ENDIF}
+
+{$IFDEF ENABLE_HOLMES}
+  {$IFNDEF USE_SDL2}
+    {$ERROR Holmes supported only with SDL2}
+  {$ENDIF}
+  {$IFNDEF USE_OPENGL}
+    {$ERROR Holmes supported only with desktop OpenGL}
+  {$ENDIF}
+{$ENDIF}