/* ##H_FILE# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FILE : MTH_def.h MODULE : MTH (Common Mathematic Library) DESCRIPTION : Real precision and target definitions VERSION : MTH V5.0.13 / Alexandre LANGER [ALX] Ubi R&D / Add Comments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ #ifndef MTH_DEF_H #define MTH_DEF_H /* #define MTH_CHECK */ /* UNCOMMENT THIS FOR GLOBAL TEST ONLY */ /* ##-########################### ## Optimization ############################## */ /* =========== Allow optimization : ==== */ #define MTH_OPTIMIZE /* Detect optimization forbiden : */ #ifdef MTH_NO_OPTIMIZE #pragma message ("*** MTH : Warning MTH_OPTMIZE has been removed!") #undef MTH_OPTIMIZE #endif /* MTH_NO_OPTIMIZE */ /* ##-########################### ## Checking NAN ############################## */ /* =========== Warning When MTH_CHECK is Enable : ==== */ /*#ifdef MTH_CHECK*/ /*#pragma message ("*** MTH : Warning MTH_CHECK is Enable ! Do Not Archive this Lib !")*/ /*#endif /* MTH_CHECK */ /* ##-########################### ## Precision ############################## */ /* =========== Detect precision : ====== */ /* === Low precision : */ #ifdef MTH_LOW #ifdef MTH_MEDIUM #pragma message ("*** MTH : Precision conflict ! MTH_MEDIUM Disable") #undef MTH_MEDIUM #endif /* MTH_MEDIUM */ #ifdef MTH_HIGH #pragma message ("*** MTH : Precision conflict ! MTH_HIGH Disable") #undef MTH_HIGH #endif /* MTH_HIGH */ #pragma message ("*** MTH : Precision set to MTH_LOW") #define MTH_PrecisionFound #endif /* MTH_LOW */ /* === Medium precision : */ #ifdef MTH_MEDIUM #ifdef MTH_LOW #pragma message ("*** MTH : Precision conflict ! MTH_LOW Disable") #undef MTH_LOW #endif /* MTH_LOW */ #ifdef MTH_HIGH #pragma message ("*** MTH : Precision conflict ! MTH_HIGH Disable") #undef MTH_HIGH #endif /* MTH_HIGH */ #pragma message ("*** MTH : Precision set to MTH_MEDIUM") #define MTH_PrecisionFound #endif /* MTH_MEDIUM */ /* === High precision : */ #ifdef MTH_HIGH #ifdef MTH_LOW #pragma message ("*** MTH : Precision conflict ! MTH_LOW Disable") #undef MTH_LOW #endif /* MTH_LOW */ #ifdef MTH_MEDIUM #pragma message ("*** MTH : Precision conflict ! MTH_MEDIUM Disable") #undef MTH_MEDIUM #endif /* MTH_MEDIUM */ #pragma message ("*** MTH : Precision set to MTH_HIGH") #define MTH_PrecisionFound #endif /* MTH_HIGH */ /* === Default precision : */ #ifndef MTH_PrecisionFound #define MTH_MEDIUM /* #pragma message ("*** MTH : Precision set to Default : MTH_LOW") */ #endif /* NOT MTH_PrecisionFound */ /* ##-########################### ## Detect Tagets ############################## */ /* Remark : NO_ASSEMBLY_IN_GLI must disappear when all references are deleted in GLI */ /* The default machine is MTH_UNKOWN_DEV */ #define MTH_UNKOWN_DEV /* Default for Dev machine */ /* Detect PC Compilators */ #ifdef _MSC_VER #ifndef VISUAL #define VISUAL #endif /* VISUAL undef */ #endif /* _MSC_VER */ #ifdef VISUAL #undef MTH_UNKOWN_DEV #define MTH_PC_DEV /* Default PC Dev machine */ #endif /* VISUAL */ #ifdef WATCOM #undef MTH_UNKOWN_DEV #define MTH_PC_DEV /* Default PC Dev machine */ #endif /* WATCOM */ /* Detect U64 Machine */ #ifdef U64 #undef MTH_UNKOWN_DEV #undef MTH_PC_DEV #define MTH_U64_DEV #endif /* U64 */ /* Warning if Target not reconized : */ #ifdef MTH_UNKOWN_DEV #pragma message ("*** MTH : !! ALERT !! Alien Target Machine Found (Unkown Target) !") #pragma message ("*** VISUAL NOR WATCOM NOR U64 is defined ! Check your makefile please !") #define MTH_RealIsFloat #define NO_ASSEMBLY_IN_GLI #endif /* MTH_UNKOWN_DEV */ /* =========== MTH_U64_DEV =============== */ /* Developing version. */ #ifdef MTH_U64_DEV #define MTH_RealIsFloat #define NO_ASSEMBLY_IN_GLI #if defined(MTH_RealIsFloat) && !defined(ACTIVE_EDITOR) #define OPTIMIZED_FOR_PC_FLOATS #ifndef CODEWARRIOR_GCC #define OPTIMIZED_FOR_U64_ASM #endif #endif #endif /* MTH_U64_DEV */ /* =========== MTH_PC_DEV =============== */ /* Pentium computer with Win95 */ /* Developing version. */ #ifdef MTH_PC_DEV /*#pragma message ("*** MTH : MTH_PC_DEV Defined")*/ #define MTH_RealIsFloat /* ylt, always optimize (even with editors)*/ /*#if defined(MTH_RealIsFloat) && !defined(ACTIVE_EDITOR)*/ #define OPTIMIZED_FOR_PC_FLOATS /*#pragma message ("*** MTH : OPTIMIZED_FOR_PC_FLOATS Defined")*/ #define OPTIMIZED_FOR_PC_FLOATS_WITH_ASM /*#pragma message ("*** MTH : OPTIMIZED_FOR_PC_FLOATS_WITH_ASM Defined")*/ /*#endif*/ #define NO_ASSEMBLY_IN_GLI #endif /* MTH_PC_DEV */ /* =========== MTH_PC_FINAL ============ */ /* Pentium computer with Win95 */ /* Final games version. => for GliGloo ONLY !!! Do Not Use !*/ #ifdef MTH_PC_FINAL #define MTH_RealIsFloat #endif /* MTH_PC_FINAL */ #define MTH_CALL /* __cdecl */ #endif /* MTH_DEF_H */