📄 coptions.c
字号:
if( SwData.cpu == SW_CPU_DEF ) SwData.cpu = SW_CPU5;
if( SwData.fpu == SW_FPU_DEF ) SwData.fpu = SW_FPU3;
if( SwData.mem == SW_M_DEF ) SwData.mem = SW_MF;
TargetSwitches |= USE_32;
#else
if( SwData.cpu == SW_CPU_DEF ) SwData.cpu = SW_CPU0;
if( SwData.fpu == SW_FPU_DEF ) SwData.fpu = SW_FPU0;
if( SwData.mem == SW_M_DEF ) SwData.mem = SW_MS;
SET_PEG( f );
SET_PEG( g );
#endif
switch( SwData.fpu ) {
case SW_FPU0:
SET_FPU_LEVEL( ProcRevision, FPU_87 );
break;
case SW_FPU3:
SET_FPU_LEVEL( ProcRevision, FPU_387 );
break;
case SW_FPU5:
SET_FPU_LEVEL( ProcRevision, FPU_586 );
break;
case SW_FPU6:
SET_FPU_LEVEL( ProcRevision, FPU_686 );
break;
default:
break;
}
switch( SwData.fpt ) {
case SW_FPT_DEF:
case SW_FPT_EMU:
SwData.fpt = SW_FPT_EMU;
SET_FPU_EMU( ProcRevision );
break;
case SW_FPT_INLINE:
SET_FPU_INLINE( ProcRevision );
break;
case SW_FPT_CALLS:
SET_FPU( ProcRevision, FPU_NONE );
break;
}
SET_CPU( ProcRevision, SwData.cpu - SW_CPU0 + CPU_86 );
switch( SwData.mem ) {
case SW_MF:
TargetSwitches |= FLAT_MODEL | CHEAP_POINTER;
SET_PEG( d );
SET_PEG( e );
SET_PEG( f );
case SW_MS:
TargetSwitches |= CHEAP_POINTER;
SET_PEG( d );
break;
case SW_MM:
TargetSwitches |= BIG_CODE | CHEAP_POINTER;
SET_PEG( d );
break;
case SW_MC:
TargetSwitches |= BIG_DATA | CHEAP_POINTER;
break;
case SW_ML:
TargetSwitches |= BIG_CODE | BIG_DATA | CHEAP_POINTER;
break;
case SW_MH:
#if _CPU == 386
TargetSwitches |= CHEAP_POINTER;
#endif
TargetSwitches |= BIG_CODE | BIG_DATA;
break;
default:
break;
}
if( !SwData.peg_ds_on ) TargetSwitches |= FLOATING_DS;
if( !SwData.peg_es_on ) TargetSwitches |= FLOATING_ES;
if( !SwData.peg_fs_on ) TargetSwitches |= FLOATING_FS;
if( !SwData.peg_gs_on ) TargetSwitches |= FLOATING_GS;
#endif
switch( SwData.dbg_fmt ) {
case SW_DF_WATCOM:
/* nothing to do */
break;
case SW_DF_CV:
GenSwitches |= DBG_CV;
break;
case SW_DF_DEF:
/* DWARF is the default */
case SW_DF_DWARF:
GenSwitches |= DBG_DF;
break;
case SW_DF_DWARF_A:
GenSwitches |= DBG_DF | DBG_PREDEF;
SymDFAbbr = SpcSymbol( "__DFABBREV", SC_EXTERN );
break;
case SW_DF_DWARF_G:
GenSwitches |= DBG_DF | DBG_PREDEF;
SymDFAbbr = SpcSymbol( "__DFABBREV", SC_NULL );
break;
}
}
static void MacroDefs()
{
if( TargetSwitches & I_MATH_INLINE ) {
Define_Macro( "__SW_OM" );
}
#if _CPU == 8086 || _CPU == 386
#if _CPU == 8086
#define X86 "_M_I86"
#else
#define X86 "_M_386"
#endif
switch( SwData.mem ) {
case SW_MS:
Define_Macro( "__SW_MS" );
Define_Macro( X86 "SM" );
break;
case SW_MM:
Define_Macro( "__SW_MM" );
Define_Macro( X86 "MM" );
break;
case SW_MC:
Define_Macro( "__SW_MC" );
Define_Macro( X86 "CM" );
break;
case SW_ML:
Define_Macro( "__SW_ML" );
Define_Macro( X86 "LM" );
break;
case SW_MH:
Define_Macro( "__SW_MH" );
Define_Macro( X86 "HM" );
break;
case SW_MF:
Define_Macro( "__SW_MF" );
break;
default:
break;
}
if( TargetSwitches & FLOATING_FS ) {
Define_Macro( "__SW_ZFF" );
} else {
Define_Macro( "__SW_ZFP" );
}
if( TargetSwitches & FLOATING_GS ) {
Define_Macro( "__SW_ZGF" );
} else {
Define_Macro( "__SW_ZGP" );
}
if( TargetSwitches & FLOATING_DS ) {
Define_Macro( "__SW_ZDF" );
} else {
Define_Macro( "__SW_ZDP" );
}
if( TargetSwitches & FLOATING_SS ) {
Define_Macro( "__SW_ZU" );
}
if( TargetSwitches & INDEXED_GLOBALS ) {
Define_Macro( "__SW_XGV" );
}
if( TargetSwitches & WINDOWS ) {
Define_Macro( "__SW_ZW" );
}
if( TargetSwitches & NO_CALL_RET_TRANSFORM ) {
Define_Macro( "__SW_OC" );
}
if( TargetSwitches & NEED_STACK_FRAME ) {
Define_Macro( "__SW_OF" );
}
#endif
if( GenSwitches & SUPER_OPTIMAL ) {
Define_Macro( "__SW_OH" );
}
if( GenSwitches & FLOW_REG_SAVES ) {
Define_Macro( "__SW_OK" );
}
if( GenSwitches & NO_OPTIMIZATION ) {
Define_Macro( "__SW_OD" );
}
if( GenSwitches & RELAX_ALIAS ) {
Define_Macro( "__SW_OA" );
}
if( GenSwitches & LOOP_OPTIMIZATION ) {
Define_Macro( "__SW_OL" );
}
if( GenSwitches & INS_SCHEDULING ) {
Define_Macro( "__SW_OR" );
}
if( GenSwitches & FP_UNSTABLE_OPTIMIZATION ) {
Define_Macro( "__SW_ON" );
}
if( GenSwitches & FPU_ROUNDING_OMIT ) {
Define_Macro( "__SW_ZRO" );
}
if( GenSwitches & FPU_ROUNDING_INLINE ) {
Define_Macro( "__SW_ZRI" );
}
if( CompFlags.use_long_double ) {
Define_Macro( "__SW_FLD" );
}
if( CompFlags.signed_char ) {
Define_Macro( "__SW_J" );
}
if( PCH_FileName != NULL ) {
Define_Macro( "__SW_FH" );
}
if( CompFlags.no_pch_warnings ) {
Define_Macro( "__SW_FHQ" );
}
if( CompFlags.inline_functions ) {
Define_Macro( "__SW_OI" );
}
if( CompFlags.unique_functions ) {
Define_Macro( "__SW_OU" );
}
#if _CPU == 386
if( CompFlags.register_conventions ) {
Define_Macro( "__SW_3R" );
} else {
Define_Macro( "__SW_3S" );
}
#endif
if( CompFlags.emit_names ) {
Define_Macro( "__SW_EN" );
}
if( CompFlags.make_enums_an_int ) {
Define_Macro( "__SW_EI" );
}
if( CompFlags.zc_switch_used ) {
Define_Macro( "__SW_ZC" );
}
if( CompFlags.use_unicode == 0 ) {
Define_Macro( "__SW_ZK" );
}
#if _CPU == 8086 || _CPU == 386
if( CompFlags.save_restore_segregs ) {
Define_Macro( "__SW_R" );
}
if( CompFlags.sg_switch_used ) {
Define_Macro( "__SW_SG" );
}
if( CompFlags.st_switch_used ) {
Define_Macro( "__SW_ST" );
}
if( CompFlags.zu_switch_used ) {
Define_Macro( "__SW_ZU" );
}
#endif
if( CompFlags.bm_switch_used ) {
Define_Macro( "__SW_BM" );
Define_Macro( "_MT" );
}
if( CompFlags.bd_switch_used ) {
Define_Macro( "__SW_BD" );
}
if( CompFlags.bc_switch_used ) /* Target is console application */
{
Define_Macro( "__SW_BC" );
}
if( CompFlags.bg_switch_used ) {
Define_Macro( "__SW_BG" );
}
if( CompFlags.br_switch_used ) {
Define_Macro( "__SW_BR" );
Define_Macro( "_DLL" );
}
if( CompFlags.bw_switch_used ) {
Define_Macro( "__SW_BW" );
}
if( CompFlags.zm_switch_used ) {
Define_Macro( "__SW_ZM" );
}
if( CompFlags.ep_switch_used ) {
Define_Macro( "__SW_EP" );
}
if( CompFlags.ee_switch_used ) {
Define_Macro( "__SW_EE" );
}
if( CompFlags.ec_switch_used ) {
Define_Macro( "__SW_EC" );
}
#if _CPU == 8086 || _CPU == 386
switch( GET_CPU( ProcRevision ) ) {
case CPU_86:
Define_Macro( "__SW_0" );
PreDefine_Macro( "_M_IX86=0" );
break;
case CPU_186:
Define_Macro( "__SW_1" );
PreDefine_Macro( "_M_IX86=100" );
break;
case CPU_286:
Define_Macro( "__SW_2" );
PreDefine_Macro( "_M_IX86=200" );
break;
case CPU_386:
Define_Macro( "__SW_3" );
PreDefine_Macro( "_M_IX86=300" );
break;
case CPU_486:
Define_Macro( "__SW_4" );
PreDefine_Macro( "_M_IX86=400" );
break;
case CPU_586:
Define_Macro( "__SW_5" );
PreDefine_Macro( "_M_IX86=500" );
break;
case CPU_686:
Define_Macro( "__SW_6" );
PreDefine_Macro( "_M_IX86=600" );
break;
}
switch( SwData.fpt ) {
case SW_FPT_CALLS:
CompFlags.op_switch_used = 0; /* 05-sep-92 */
Define_Macro( "__SW_FPC" );
break;
case SW_FPT_EMU:
Define_Macro( "__SW_FPI" );
Define_Macro( "__FPI__" );
break;
case SW_FPT_INLINE:
Define_Macro( "__SW_FPI87" );
Define_Macro( "__FPI__" );
break;
default:
break;
}
switch( GET_FPU_LEVEL( ProcRevision ) ) {
case FPU_NONE:
break;
case FPU_87:
Define_Macro( "__SW_FP2" );
break;
case FPU_387:
Define_Macro( "__SW_FP3" );
break;
case FPU_586:
Define_Macro( "__SW_FP5" );
break;
case FPU_686:
Define_Macro( "__SW_FP6" );
break;
}
if( SwData.nd_used ) {
Define_Macro( "__SW_ND" );
}
if( CompFlags.op_switch_used ) { /* 05-sep-92 */
Define_Macro( "__SW_OP" );
}
#endif
if( !(Toggles & TOGGLE_CHECK_STACK) ) {
Define_Macro( "__SW_S" );
}
}
static void AddIncList( char *str )
{
int len2;
int len;
char *p;
len = strlen( str );
if( HFileList != NULL ) {
len2 = strlen( HFileList );
p = (char *) CMemAlloc( len + len2 + 2 );
memcpy( p, HFileList, len2 );
p[ len2 ] = INCLUDE_SEP;
memcpy( p + len2 + 1, str, len );
p[ len + len2 + 1 ] = '\0';
CMemFree( HFileList );
HFileList = p;
} else {
p = (char *) CMemAlloc( (len + 1) * sizeof( char ) );
memcpy( p, str, len );
p[ len ] = '\0';
HFileList = p;
}
}
#define INC_VAR "INCLUDE"
void MergeInclude()
{
/* must be called after GenCOptions to get req'd HFileList */
char *env_var;
char buff[128];
switch( TargSys ) {
case TS_CHEAP_WINDOWS:
case TS_WINDOWS:
strcpy( buff, "WINDOWS" );
break;
case TS_NETWARE:
case TS_NETWARE5:
strcpy( buff, "NETWARE" );
break;
default:
strcpy( buff, SwData.sys_name );
break;
}
strcat( buff, "_" INC_VAR );
env_var = FEGetEnv( buff );
if( env_var != NULL ) {
while( *env_var == ' ' ) ++env_var; /* 23-jun-93 */
AddIncList( env_var );
}
#if _CPU == 386
env_var = FEGetEnv( "INC386" ); /* 03-may-89 */
if( env_var == NULL ) { /* 12-mar-90 */
env_var = FEGetEnv( INC_VAR );
}
#else
env_var = FEGetEnv( INC_VAR );
#endif
if( env_var != NULL ) {
while( *env_var == ' ' ) ++env_var; /* 23-jun-93 */
AddIncList( env_var );
}
CMemFree( SwData.sys_name );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -