diff --git a/.gitattributes b/.gitattributes index 889e8ae514..282c40d1a7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16617,6 +16617,7 @@ tests/webtbf/tw37460.pp svneol=native#text/pascal tests/webtbf/tw37462.pp svneol=native#text/pascal tests/webtbf/tw37475.pp svneol=native#text/pascal tests/webtbf/tw37476.pp svneol=native#text/pascal +tests/webtbf/tw37763.pp svneol=native#text/pascal tests/webtbf/tw3790.pp svneol=native#text/plain tests/webtbf/tw3812.pp svneol=native#text/plain tests/webtbf/tw3930a.pp svneol=native#text/plain @@ -16758,6 +16759,7 @@ tests/webtbf/uw4541.pp svneol=native#text/pascal tests/webtbf/uw6922.pp svneol=native#text/plain tests/webtbf/uw8738a.pas svneol=native#text/plain tests/webtbf/uw8738b.pas svneol=native#text/plain +tests/webtbs/DAT_TW37415 svneol=native#text/plain tests/webtbs/Integer.ns.pp svneol=native#text/pascal tests/webtbs/Integer.pp svneol=native#text/pascal tests/webtbs/tu2002.pp svneol=native#text/plain @@ -18477,6 +18479,7 @@ tests/webtbs/tw37393.pp svneol=native#text/pascal tests/webtbs/tw37397.pp svneol=native#text/plain tests/webtbs/tw37398.pp svneol=native#text/pascal tests/webtbs/tw37400.pp svneol=native#text/pascal +tests/webtbs/tw37415.pp svneol=native#text/plain tests/webtbs/tw3742.pp svneol=native#text/plain tests/webtbs/tw37423.pp svneol=native#text/plain tests/webtbs/tw37427.pp svneol=native#text/pascal diff --git a/compiler/aarch64/cgcpu.pas b/compiler/aarch64/cgcpu.pas index f3582e50df..a52e50b395 100644 --- a/compiler/aarch64/cgcpu.pas +++ b/compiler/aarch64/cgcpu.pas @@ -2507,7 +2507,7 @@ implementation procedure tcgaarch64.g_check_for_fpu_exception(list: TAsmList;force,clear : boolean); var - r : TRegister; + r, tmpreg: TRegister; ai: taicpu; l1,l2: TAsmLabel; begin @@ -2516,18 +2516,17 @@ implementation (force or current_procinfo.FPUExceptionCheckNeeded)) then begin r:=getintregister(list,OS_INT); + tmpreg:=getintregister(list,OS_INT); list.concat(taicpu.op_reg_reg(A_MRS,r,NR_FPSR)); - list.concat(taicpu.op_reg_const(A_TST,r,$1f)); + list.concat(taicpu.op_reg_reg_const(A_AND,tmpreg,r,$1f)); current_asmdata.getjumplabel(l1); current_asmdata.getjumplabel(l2); - ai:=taicpu.op_sym(A_B,l1); + ai:=taicpu.op_reg_sym_ofs(A_CBNZ,tmpreg,l1,0); ai.is_jmp:=true; - ai.condition:=C_NE; list.concat(ai); - list.concat(taicpu.op_reg_const(A_TST,r,$80)); - ai:=taicpu.op_sym(A_B,l2); + list.concat(taicpu.op_reg_reg_const(A_AND,tmpreg,r,$80)); + ai:=taicpu.op_reg_sym_ofs(A_CBZ,tmpreg,l2,0); ai.is_jmp:=true; - ai.condition:=C_EQ; list.concat(ai); a_label(list,l1); alloccpuregisters(list,R_INTREGISTER,paramanager.get_volatile_registers_int(pocall_default)); diff --git a/compiler/aoptobj.pas b/compiler/aoptobj.pas index 6886f44631..d97ebb45d9 100644 --- a/compiler/aoptobj.pas +++ b/compiler/aoptobj.pas @@ -344,6 +344,9 @@ Unit AoptObj; { removes p from asml, updates registers and replaces p with hp1 (if the next instruction was known beforehand) } procedure RemoveCurrentP(var p: tai; const hp1: tai); inline; + { removes hp from asml then frees it } + procedure RemoveInstruction(const hp: tai); inline; + { traces sucessive jumps to their final destination and sets it, e.g. je l1 je l3 <code> <code> @@ -1510,6 +1513,13 @@ Unit AoptObj; end; + procedure TAOptObj.RemoveInstruction(const hp: tai); inline; + begin + AsmL.Remove(hp); + hp.Free; + end; + + function FindLiveLabel(hp: tai; var l: tasmlabel): Boolean; var next: tai; diff --git a/compiler/m68k/n68kmem.pas b/compiler/m68k/n68kmem.pas index 171c8496a8..2b4f86bbb8 100644 --- a/compiler/m68k/n68kmem.pas +++ b/compiler/m68k/n68kmem.pas @@ -99,7 +99,7 @@ implementation if (location.reference.base=NR_NO) and not (scaled) and not assigned(location.reference.symbol) then begin - { prefer an address reg, if we will be a base, for indexes any register works } + { prefer an address reg, if we will be a base, for indexes any register works } if isintregister(maybe_const_reg) then begin //current_asmdata.CurrAsmList.concat(tai_comment.create(strpnew('updref: copytoa'))); @@ -109,26 +109,33 @@ implementation end; location.reference.base:=maybe_const_reg; end - else if location.reference.index=NR_NO then - begin - location.reference.index:=maybe_const_reg; - if (scaled) then - location.reference.scalefactor:=l; - end else begin - hreg:=cg.getaddressregister(current_asmdata.CurrAsmList); - cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,location.reference,hreg); - reference_reset_base(location.reference,hreg,0,location.reference.temppos,location.reference.alignment,location.reference.volatility); + if location.reference.index<>NR_NO then + begin + { if we already have an index register, dereference the ref to a new base, to be able to insert an index } + hreg:=cg.getaddressregister(current_asmdata.CurrAsmList); + cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,location.reference,hreg); + reference_reset_base(location.reference,hreg,0,location.reference.temppos,location.reference.alignment,location.reference.volatility); + end; + if def_cgsize(regsize) in [OS_8,OS_16] then + begin + { index registers are always sign extended on m68k, so we have to zero extend by hand, + if the index variable is unsigned, and its width is less than the whole register } + //current_asmdata.CurrAsmList.concat(tai_comment.create(strpnew('updref: index zero extend'))); + hreg:=cg.getintregister(current_asmdata.CurrAsmList,OS_ADDR); + cg.a_load_reg_reg(current_asmdata.CurrAsmList,def_cgsize(regsize),OS_ADDR,maybe_const_reg,hreg); + maybe_const_reg:=hreg; + end; { insert new index register } location.reference.index:=maybe_const_reg; if (scaled) then location.reference.scalefactor:=l; end; - { update alignment } - if (location.reference.alignment=0) then - internalerror(2009020704); - location.reference.alignment:=newalignment(location.reference.alignment,l); + { update alignment } + if (location.reference.alignment=0) then + internalerror(2009020704); + location.reference.alignment:=newalignment(location.reference.alignment,l); end; { see remarks for tcgvecnode.update_reference_reg_mul above } diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg index 00f3e65a4b..3f9f8bb024 100644 --- a/compiler/msg/errore.msg +++ b/compiler/msg/errore.msg @@ -2064,6 +2064,9 @@ type_e_forward_interface_type_does_not_match=04127_E_The interface type of the f type_e_generic_const_type_not_allowed=04128_E_Type not allowed for generic constant parameter: $1 % Only types that can also be used (indirectly) for untyped constants can be used as a % type for a generic constant parameter. +type_e_cant_read_write_type_in_iso_mode=04129_E_Can't read or write variables of this type in iso mode +% You are trying to \var{read} or \var{write} a variable from or to a +% file of type text, which doesn't support that variable's type in the selected language mode (iso mode). % \end{description} # # Symtable diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc index d194989e97..373883607f 100644 --- a/compiler/msgidx.inc +++ b/compiler/msgidx.inc @@ -585,6 +585,7 @@ const type_e_cblock_callconv=04126; type_e_forward_interface_type_does_not_match=04127; type_e_generic_const_type_not_allowed=04128; + type_e_cant_read_write_type_in_iso_mode=04129; sym_e_id_not_found=05000; sym_f_internal_error_in_symtablestack=05001; sym_e_duplicate_id=05002; @@ -1126,9 +1127,9 @@ const option_info=11024; option_help_pages=11025; - MsgTxtSize = 85732; + MsgTxtSize = 85795; MsgIdxMax : array[1..20] of longint=( - 28,106,356,129,99,63,143,36,223,68, + 28,106,356,130,99,63,143,36,223,68, 62,20,30,1,1,1,1,1,1,1 ); diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc index 93f8f144ae..8ba502a975 100644 --- a/compiler/msgtxt.inc +++ b/compiler/msgtxt.inc @@ -742,654 +742,649 @@ const msgtxt : array[0..000357,1..240] of char=( '04127_E_The interface type of the forward declaration and the declared'+ ' interface type do not matc','h for interface $1'#000+ '04128_E_Type not allowed for generic constant parameter: $1'#000+ + '04129_E_Can'#039't read or write variables of this type in iso mode'#000+ '05000_E_Identifier not found "$1"'#000+ '05001_F_Internal Error in SymTableStack()'#000+ - '05002_E_Duplicate identifier "$1"'#000+ - '05003_H_Identifier already defined in $1 at line $2',#000+ + '05002_E_Duplicate iden','tifier "$1"'#000+ + '05003_H_Identifier already defined in $1 at line $2'#000+ '05004_E_Unknown identifier "$1"'#000+ '05005_E_Forward declaration not solved "$1"'#000+ '05007_E_Error in type definition'#000+ '05009_E_Forward type not resolved "$1"'#000+ - '05010_E_Only static variables can be used in static methods or outside'+ - ' methods'#000+ - '05012_E_Reco','rd or object or class type expected'#000+ + '05010_E_Only static variable','s can be used in static methods or outsi'+ + 'de methods'#000+ + '05012_E_Record or object or class type expected'#000+ '05013_E_Instances of classes or objects with an abstract method are no'+ 't allowed'#000+ '05014_W_Label not defined "$1"'#000+ - '05015_E_Label used but not defined "$1"'#000+ + '05015_E_Label used but not def','ined "$1"'#000+ '05016_E_Illegal label declaration'#000+ - '05017_E_GOTO and LA','BEL are not supported (use switch -Sg)'#000+ + '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+ '05018_E_Label not found'#000+ '05019_E_Identifier isn'#039't a label'#000+ '05020_E_Label already defined'#000+ '05021_E_Illegal type declaration of set elements'#000+ - '05022_E_Forward class definition not resolved "$1"'#000+ - '05023_H_Unit "','$1" not used in $2'#000+ + '05','022_E_Forward class definition not resolved "$1"'#000+ + '05023_H_Unit "$1" not used in $2'#000+ '05024_H_Parameter "$1" not used'#000+ '05025_N_Local variable "$1" not used'#000+ '05026_H_Value parameter "$1" is assigned but never used'#000+ - '05027_N_Local variable "$1" is assigned but never used'#000+ + '05027_N_Local variable "$1" is as','signed but never used'#000+ '05028_H_Local $1 "$2" is not used'#000+ - '05029_N','_Private field "$1.$2" is never used'#000+ + '05029_N_Private field "$1.$2" is never used'#000+ '05030_N_Private field "$1.$2" is assigned but never used'#000+ '05031_N_Private method "$1.$2" never used'#000+ '05032_E_Set type expected'#000+ - '05033_W_Function result does not seem to be set'#000+ - '05034_W_Type "$1" is not align','ed correctly in current record for C'#000+ + '05033_W_Functio','n result does not seem to be set'#000+ + '05034_W_Type "$1" is not aligned correctly in current record for C'#000+ '05035_E_Unknown record field identifier "$1"'#000+ '05036_W_Local variable "$1" does not seem to be initialized'#000+ - '05037_W_Variable "$1" does not seem to be initialized'#000+ + '05037_W_Variable "$1" does not seem',' to be initialized'#000+ '05038_E_Identifier idents no member "$1"'#000+ - '050','39_H_Found declaration: $1'#000+ + '05039_H_Found declaration: $1'#000+ '05040_E_Data element too large'#000+ '05042_E_No matching implementation for interface method "$1" found'#000+ '05043_W_Symbol "$1" is deprecated'#000+ - '05044_W_Symbol "$1" is not portable'#000+ + '05044_W_Symbol "$1','" is not portable'#000+ '05055_W_Symbol "$1" is not implemented'#000+ - '05056_','E_Can'#039't create unique type from this type'#000+ + '05056_E_Can'#039't create unique type from this type'#000+ '05057_H_Local variable "$1" does not seem to be initialized'#000+ '05058_H_Variable "$1" does not seem to be initialized'#000+ - '05059_W_Function result variable does not seem to be initialized'#000+ - '05060_H_Function re','sult variable does not seem to be initialized'#000+ + '05059_W_Function resu','lt variable does not seem to be initialized'#000+ + '05060_H_Function result variable does not seem to be initialized'#000+ '05061_W_Variable "$1" read but nowhere assigned'#000+ '05062_H_Found abstract method: $1'#000+ '05063_W_Symbol "$1" is experimental'#000+ - '05064_W_Forward declaration "$1" not resolved, assumed external'#000+ - '05065_W_Symb','ol "$1" is belongs to a library'#000+ + '05064_W_Forwa','rd declaration "$1" not resolved, assumed external'#000+ + '05065_W_Symbol "$1" is belongs to a library'#000+ '05066_W_Symbol "$1" is deprecated: "$2"'#000+ '05067_E_Cannot find an enumerator for the type "$1"'#000+ - '05068_E_Cannot find a "MoveNext" method in enumerator "$1"'#000+ - '05069_E_Cannot find a "Current" property in enumerator "$','1"'#000+ + '05068_E_Cannot find a "MoveNext" method in enumerator',' "$1"'#000+ + '05069_E_Cannot find a "Current" property in enumerator "$1"'#000+ '05070_E_Mismatch between number of declared parameters and number of c'+ 'olons in message string.'#000+ '05071_N_Private type "$1.$2" never used'#000+ - '05072_N_Private const "$1.$2" never used'#000+ + '05072_N_Private const "$1.$2" never use','d'#000+ '05073_N_Private property "$1.$2" never used'#000+ - '05074_W_Unit "$1"',' is deprecated'#000+ + '05074_W_Unit "$1" is deprecated'#000+ '05075_W_Unit "$1" is deprecated: "$2"'#000+ '05076_W_Unit "$1" is not portable'#000+ '05077_W_Unit "$1" is belongs to a library'#000+ '05078_W_Unit "$1" is not implemented'#000+ - '05079_W_Unit "$1" is experimental'#000+ - '05080_E_No full definition of the formal','ly declared class "$1" is in'+ - ' scope. Add the unit containing its full definition to the uses clause'+ - '.'#000+ + '05079_W_Uni','t "$1" is experimental'#000+ + '05080_E_No full definition of the formally declared class "$1" is in s'+ + 'cope. Add the unit containing its full definition to the uses clause.'#000+ '05081_E_Gotos into initialization or finalization blocks of units are '+ - 'not allowed'#000+ + 'not all','owed'#000+ '05082_E_Invalid external name "$1" for formal class "$2"'#000+ - '0','5083_E_Complete class definition with external name "$1" here'#000+ + '05083_E_Complete class definition with external name "$1" here'#000+ '05084_W_Possible library conflict: symbol "$1" from library "$2" also '+ 'found in library "$3"'#000+ - '05085_E_Cannot add implicit constructor '#039'Create'#039' because ident'+ - 'ifier already used by "$','1"'#000+ + '05085_E_Cannot add impl','icit constructor '#039'Create'#039' because ide'+ + 'ntifier already used by "$1"'#000+ '05086_E_Cannot generate default constructor for class, because parent '+ 'has no parameterless constructor'#000+ '05087_D_Adding helper for $1'#000+ '05088_E_Found declaration: $1'#000+ - '05089_W_Local variable "$1" of a managed type does not seem to be init'+ - 'ializ','ed'#000+ + '05089_W_Loca','l variable "$1" of a managed type does not seem to be in'+ + 'itialized'#000+ '05090_W_Variable "$1" of a managed type does not seem to be initialize'+ 'd'#000+ '05091_H_Local variable "$1" of a managed type does not seem to be init'+ 'ialized'#000+ - '05092_H_Variable "$1" of a managed type does not seem to be initialize'+ - 'd'#000+ - '05093_W_Functio','n result variable of a managed type does not seem to '+ - 'be initialized'#000+ + '05092_H_Variable "$1" of',' a managed type does not seem to be initiali'+ + 'zed'#000+ + '05093_W_Function result variable of a managed type does not seem to be'+ + ' initialized'#000+ '05094_H_Function result variable of a managed type does not seem to be'+ ' initialized'#000+ - '05095_W_Duplicate identifier "$1"'#000+ - '05096_E_Generic type parameter "$1" does not match with',' the one in t'+ - 'he declaration'#000+ + '05095_W_Duplicate identifi','er "$1"'#000+ + '05096_E_Generic type parameter "$1" does not match with the one in the'+ + ' declaration'#000+ '05097_E_Generic type parameter declared as "$1"'#000+ '05098_E_Record or object type expected'#000+ '06009_E_Parameter list size exceeds 65535 bytes'#000+ - '06012_E_File types must be var parameters'#000+ - '06013_E_The use of a far pointer is','n'#039't allowed there'#000+ + '06012_E_File t','ypes must be var parameters'#000+ + '06013_E_The use of a far pointer isn'#039't allowed there'#000+ '06015_E_EXPORT declared functions cannot be called'#000+ '06016_W_Possible illegal call of constructor or destructor'#000+ '06017_N_Inefficient code'#000+ - '06018_W_Unreachable code'#000+ + '06018_W_Unreachable code',#000+ '06020_E_Abstract methods cannot be called directly'#000+ - '06027_DL_Re','gister $1 weight $2 $3'#000+ + '06027_DL_Register $1 weight $2 $3'#000+ '06029_DL_Stack frame is omitted'#000+ '06031_E_Object or class methods cannot be inline.'#000+ '06032_E_Procvar calls cannot be inline.'#000+ - '06033_E_No code for inline procedure stored'#000+ - '06035_E_Element zero of an ansi/wide- or longstring',' cannot be access'+ - 'ed, use (set)length instead'#000+ + '06033_E_No code for inline proce','dure stored'#000+ + '06035_E_Element zero of an ansi/wide- or longstring cannot be accessed'+ + ', use (set)length instead'#000+ '06037_E_Constructors or destructors cannot be called inside a '#039'wit'+ 'h'#039' clause'#000+ '06038_E_Cannot call message handler methods directly'#000+ - '06039_E_Jump in or outside of an exception block'#000+ - '06040_E_Control f','low statements are not allowed in a finally block'#000+ + '060','39_E_Jump in or outside of an exception block'#000+ + '06040_E_Control flow statements are not allowed in a finally block'#000+ '06041_W_Parameters size exceeds limit for certain cpu'#039's'#000+ '06042_W_Local variable size exceed limit for certain cpu'#039's'#000+ - '06043_E_Local variables size exceeds supported limit'#000+ - '06044_E_BREAK not allo','wed'#000+ + '06043_E_Loca','l variables size exceeds supported limit'#000+ + '06044_E_BREAK not allowed'#000+ '06045_E_CONTINUE not allowed'#000+ '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti'+ 'me library.'#000+ - '06047_F_Cannot find system type "$1". Check if you use the correct run'+ - ' time library.'#000+ - '06048_H_Inherited call to abstract metho','d ignored'#000+ + '06047_F_Cannot find system type "$1". Check if you use the cor','rect r'+ + 'un time library.'#000+ + '06048_H_Inherited call to abstract method ignored'#000+ '06049_E_Goto label "$1" not defined or optimized away'#000+ '06050_F_Cannot find type "$1" in unit "$2". Check if you use the corre'+ 'ct run time library.'#000+ - '06051_E_Interprocedural gotos are allowed only to outer subroutines'#000+ - '06052_E_Label mus','t be defined in the same scope as it is declared'#000+ + '06051_E_Interprocedura','l gotos are allowed only to outer subroutines'#000+ + '06052_E_Label must be defined in the same scope as it is declared'#000+ '06053_E_Leaving procedures containing explicit or implicit exceptions '+ 'frames using goto is not allowed'#000+ - '06054_E_In ISO mode, the mod operator is defined only for positive quo'+ - 'tient'#000+ - '06055_DL_Aut','o inlining: $1'#000+ + '06054_E_In ISO mode, the ','mod operator is defined only for positive q'+ + 'uotient'#000+ + '06055_DL_Auto inlining: $1'#000+ '06056_E_The function used, is not supported by the selected instructio'+ 'n set: $1'#000+ '06057_F_Maximum number of units ($1) reached for the current target'#000+ - '06058_N_Call to subroutine "$1" marked as inline is not inlined'#000+ - '06059_E_Case ','statement does not handle ordinal value "$1", and no el'+ - 'se/otherwise statement is present.'#000+ + '06058_N_Call t','o subroutine "$1" marked as inline is not inlined'#000+ + '06059_E_Case statement does not handle ordinal value "$1", and no else'+ + '/otherwise statement is present.'#000+ '06060_W_Case statement does not handle all possible cases'#000+ - '06061_W_The current subroutine "$1" cannot be compiled for the target '+ - 'CPU, creating dummy'#000+ - '06','062_W_The target CPU does not support preserving the registers in '+ - 'subroutine "$1"'#000+ + '06061_W_The current subroutin','e "$1" cannot be compiled for the targe'+ + 't CPU, creating dummy'#000+ + '06062_W_The target CPU does not support preserving the registers in su'+ + 'broutine "$1"'#000+ '07000_DL_Starting $1 styled assembler parsing'#000+ '07001_DL_Finished $1 styled assembler parsing'#000+ - '07002_E_Non-label pattern contains @'#000+ - '07004_E_Error building record',' offset'#000+ + '070','02_E_Non-label pattern contains @'#000+ + '07004_E_Error building record offset'#000+ '07005_E_OFFSET used without identifier'#000+ '07006_E_TYPE used without identifier'#000+ '07007_E_Cannot use local variable or parameters here'#000+ '07008_E_Need to use OFFSET here'#000+ - '07009_E_Need to use $ here'#000+ - '07010_E_Cannot use multiple relocatable symb','ols'#000+ + '07009_E_','Need to use $ here'#000+ + '07010_E_Cannot use multiple relocatable symbols'#000+ '07011_E_Relocatable symbol can only be added'#000+ '07012_E_Invalid constant expression'#000+ '07013_E_Relocatable symbol is not allowed'#000+ '07014_E_Invalid reference syntax'#000+ - '07015_E_You cannot reach $1 from that code'#000+ - '07016_E_Local symbols/labels are not ','allowed as references'#000+ + '07015_E_You canno','t reach $1 from that code'#000+ + '07016_E_Local symbols/labels are not allowed as references'#000+ '07017_E_Invalid base and index register usage'#000+ '07018_W_Possible error in object field handling'#000+ '07019_E_Wrong scale factor specified'#000+ - '07020_E_Multiple index register usage'#000+ + '07020_E_Multiple index r','egister usage'#000+ '07021_E_Invalid operand type'#000+ - '07022_E_Invalid stri','ng as opcode operand: $1'#000+ + '07022_E_Invalid string as opcode operand: $1'#000+ '07023_W_@CODE and @DATA not supported'#000+ '07024_E_Null label references are not allowed'#000+ '07025_E_Divide by zero in asm evaluator'#000+ '07026_E_Illegal expression'#000+ - '07027_E_Escape sequence ignored: $1'#000+ - '07028_E_Invalid symbol refer','ence'#000+ + '0','7027_E_Escape sequence ignored: $1'#000+ + '07028_E_Invalid symbol reference'#000+ '07029_W_Fwait can cause emulation problems with emu387'#000+ '07030_W_$1 without operand translated into $1P'#000+ '07031_W_ENTER instruction is not supported by Linux kernel'#000+ - '07032_W_Calling an overload function in assembler'#000+ - '07033_E_Unsupported symb','ol type for operand'#000+ + '07032_W_Cal','ling an overload function in assembler'#000+ + '07033_E_Unsupported symbol type for operand'#000+ '07034_E_Constant value out of bounds'#000+ '07035_E_Error converting decimal $1'#000+ '07036_E_Error converting octal $1'#000+ '07037_E_Error converting binary $1'#000+ - '07038_E_Error converting hexadecimal $1'#000+ + '07038_E_Error c','onverting hexadecimal $1'#000+ '07039_H_$1 translated to $2'#000+ - '07040_W_$1',' is associated to an overloaded function'#000+ + '07040_W_$1 is associated to an overloaded function'#000+ '07041_E_Cannot use SELF outside a method'#000+ '07042_E_Cannot use OLDEBP outside a nested procedure'#000+ - '07043_W_Procedures cannot return any value in asm code'#000+ + '07043_W_Procedures cannot return any value',' in asm code'#000+ '07044_E_SEG not supported'#000+ - '07045_E_Size suffix and ','destination or source size do not match'#000+ + '07045_E_Size suffix and destination or source size do not match'#000+ '07046_W_Size suffix and destination or source size do not match'#000+ '07047_E_Assembler syntax error'#000+ - '07048_E_Invalid combination of opcode and operands'#000+ + '07048_E_Invalid combination of opcode and ','operands'#000+ '07049_E_Assembler syntax error in operand'#000+ - '07050_E_Asse','mbler syntax error in constant'#000+ + '07050_E_Assembler syntax error in constant'#000+ '07051_E_Invalid String expression'#000+ '07052_W_Constant with symbol $1 for address which is not on a pointer'#000+ '07053_E_Unrecognized opcode $1'#000+ - '07054_E_Invalid or missing opcode'#000+ - '07055_E_Invalid combination of prefix an','d opcode: $1'#000+ + '07054_E_Inv','alid or missing opcode'#000+ + '07055_E_Invalid combination of prefix and opcode: $1'#000+ '07056_E_Invalid combination of override and opcode: $1'#000+ '07057_E_Too many operands on line'#000+ '07058_W_NEAR ignored'#000+ '07059_W_FAR ignored'#000+ - '07060_E_Duplicate local symbol $1'#000+ + '07060_E_Duplicate local symbol $1'#000, '07061_E_Undefined local symbol $1'#000+ - '07062_E_Unknown label identif','ier $1'#000+ + '07062_E_Unknown label identifier $1'#000+ '07063_E_Invalid register name'#000+ '07064_E_Invalid floating point register name'#000+ '07066_W_Modulo not supported'#000+ '07067_E_Invalid floating point constant $1'#000+ - '07068_E_Invalid floating point expression'#000+ + '07068_E_Invalid floatin','g point expression'#000+ '07069_E_Wrong symbol type'#000+ - '07070_E_Cannot ind','ex a local var or parameter with a register'#000+ + '07070_E_Cannot index a local var or parameter with a register'#000+ '07071_E_Invalid segment override expression'#000+ '07072_W_Identifier $1 supposed external'#000+ '07073_E_Strings not allowed as constants'#000+ - '07074_E_No type of variable specified'#000+ - '07075_E_Assembler code not return','ed to text section'#000+ + '07074_E_','No type of variable specified'#000+ + '07075_E_Assembler code not returned to text section'#000+ '07076_E_Not a directive or local symbol $1'#000+ '07077_E_Using a defined name as a local label'#000+ '07078_E_Dollar token is used without an identifier'#000+ - '07079_W_32bit constant created for address'#000+ - '07080_N_.align is target specific, use',' .balign or .p2align'#000+ + '07079_W_32bit cons','tant created for address'#000+ + '07080_N_.align is target specific, use .balign or .p2align'#000+ '07081_E_Cannot directly access fields of pointer-based parameters'#000+ '07082_E_Can'#039't access fields of objects/classes directly'#000+ - '07083_E_No size specified and unable to determine the size of the oper'+ - 'ands'#000+ - '07084_E_Cannot use RES','ULT in this function'#000+ + '07083_E_No size specified and unab','le to determine the size of the op'+ + 'erands'#000+ + '07084_E_Cannot use RESULT in this function'#000+ '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+ '07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+ - '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+ + '07088_W_"$1 %st(n)" translated into "$1 %st','(n),%st"'#000+ '07089_E_Char < not allowed here'#000+ - '07090_E_Char > not all','owed here'#000+ + '07090_E_Char > not allowed here'#000+ '07093_W_ALIGN not supported'#000+ '07094_E_Inc and Dec cannot be together'#000+ '07095_E_Invalid register list for MOVEM or FMOVEM'#000+ '07096_E_Reglist invalid for opcode'#000+ - '07097_E_Higher cpu mode required ($1)'#000+ - '07098_W_No size specified and unable to ','determine the size of the op'+ - 'erands, using DWORD as default'#000+ + '07097_E_Higher ','cpu mode required ($1)'#000+ + '07098_W_No size specified and unable to determine the size of the oper'+ + 'ands, using DWORD as default'#000+ '07099_E_Syntax error while trying to parse a shifter operand'#000+ - '07100_E_Address of packed component is not at a byte boundary'#000+ - '07101_W_No size specified and unable to determine the size',' of the op'+ - 'erands, using BYTE as default'#000+ + '07100_E_Address of packed component is not at a byte boun','dary'#000+ + '07101_W_No size specified and unable to determine the size of the oper'+ + 'ands, using BYTE as default'#000+ '07102_W_Use of $1 for parameters invalid here'#000+ '07103_W_Use of $1 is not compatible with regcall convention'#000+ - '07104_W_Use of $1 is not recommended for local variable access'#000+ - '07105_W_Use of $1, access may c','ause a crash or value may be lost'#000+ + '07104_W_Use of $1 is not recomm','ended for local variable access'#000+ + '07105_W_Use of $1, access may cause a crash or value may be lost'#000+ '07106_E_VMTOffset must be used in combination with a virtual method, a'+ 'nd "$1" is not virtual'#000+ - '07107_E_Generating PIC, but reference is not PIC-safe'#000+ - '07108_E_All registers in a register set must be of the same',' kind and'+ - ' width'#000+ + '07107_E_Generating PIC, but reference is not PIC-s','afe'#000+ + '07108_E_All registers in a register set must be of the same kind and w'+ + 'idth'#000+ '07109_E_A register set cannot be empty'#000+ '07110_W_@GOTPCREL is useless and potentially dangerous for local symbo'+ 'ls'#000+ - '07111_W_Constant with general purpose segment register'#000+ + '07111_W_Constant with general purpose segment reg','ister'#000+ '07112_E_Invalid offset value for $1'#000+ - '07113_E_Invalid regis','ter for $1'#000+ + '07113_E_Invalid register for $1'#000+ '07114_E_SEH directives are allowed only in pure assembler procedures'#000+ '07115_E_Directive "$1" is not supported for the current target'#000+ - '07116_E_This function'#039's result location cannot be encoded directly'+ - ' in a single operand when "nost','ackframe" is used'#000+ + '07116_E_This function'#039's result loc','ation cannot be encoded direct'+ + 'ly in a single operand when "nostackframe" is used'#000+ '07117_E_GOTPCREL references in Intel assembler syntax cannot contain a'+ ' base or index register, and their offset must 0.'#000+ - '07118_E_The current target does not support GOTPCREL relocations'#000+ - '07119_W_Exported/global symbols shoul','d be accessed via the GOT'#000+ + '07118_E_The current target does not sup','port GOTPCREL relocations'#000+ + '07119_W_Exported/global symbols should be accessed via the GOT'#000+ '07120_W_Check size of memory operand "$1"'#000+ '07121_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+ 'ts, but expected [$3 bits]"'#000+ - '07122_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+ - 'ts, ','but expected [$3 bits + $4 byte offset]"'#000+ + '07122_W_Che','ck size of memory operand "$1: memory-operand-size is $2 '+ + 'bits, but expected [$3 bits + $4 byte offset]"'#000+ '07123_W_Check "$1: offset of memory operand is negative "$2 byte"'#000+ - '07124_W_Check "$1: size of memory operand is empty, but es exists diff'+ - 'erent definitions of the memory size =>> map to $2 (smallest op','tion)'+ - '"'#000+ + '07124_W_Check "$1: size of memory operand is empty, but es exists diff', + 'erent definitions of the memory size =>> map to $2 (smallest option)"'#000+ '07125_E_Invalid register used in memory reference expression: "$1"'#000+ '07126_E_SEG used without identifier'#000+ '07127_E_@CODE and @DATA can only be used with the SEG operator'#000+ - '07128_E_Not enough space (16 bits required) for the segment constan','t'+ + '0712','8_E_Not enough space (16 bits required) for the segment constant'+ ' of symbol $1'#000+ '07129_E_Invalid value of .code directive constant'#000+ '07130_W_No size specified and unable to determine the size of the cons'+ 'tant, using BYTE as default'#000+ - '07131_W_No size specified and unable to determine the size of the cons'+ - 'tant, u','sing WORD as default'#000+ + '07131_W_No siz','e specified and unable to determine the size of the co'+ + 'nstant, using WORD as default'#000+ '07132_E_Cannot override ES segment'#000+ '07133_W_Reference is not valid here (expected "$1")'#000+ '07134_E_Address sizes do not match'#000+ - '07135_E_Instruction "POP CS" is not valid for the current target'#000+ - '07136_W_Instruction "POP CS" is ','not portable (it only works on 8086 '+ - 'and 8088 CPUs)'#000+ + '07135_E_Instruction "POP CS" is no','t valid for the current target'#000+ + '07136_W_Instruction "POP CS" is not portable (it only works on 8086 an'+ + 'd 8088 CPUs)'#000+ '07137_E_Label $1 can only be declared public before it'#039's defined'#000+ '07138_E_Local label $1 cannot be declared public'#000+ - '07139_E_Cannot use multiple segment overrides'#000+ - '07140_W_Multiple segment over','rides (only the last one will take effe'+ - 'ct)'#000+ + '07139_E_Cann','ot use multiple segment overrides'#000+ + '07140_W_Multiple segment overrides (only the last one will take effect'+ + ')'#000+ '07141_W_Segment base $1 will be generated, but is ignored by the CPU i'+ 'n 64-bit mode'#000+ - '07142_E_Mismatch broadcasting elements (expected: {$1} found: {$2})'#000+ + '07142_E_Mismatch broadcasting elements (expected: ','{$1} found: {$2})'#000+ '08000_F_Too many assembler files'#000+ - '08001_F_Sele','cted assembler output not supported'#000+ + '08001_F_Selected assembler output not supported'#000+ '08002_F_Comp not supported'#000+ '08003_F_Direct not support for binary writers'#000+ '08004_E_Allocating of data is only allowed in bss section'#000+ - '08005_F_No binary writer selected'#000+ + '08005_F_No',' binary writer selected'#000+ '08006_E_Asm: Opcode $1 not in table'#000+ - '080','07_E_Asm: $1 invalid combination of opcode and operands'#000+ + '08007_E_Asm: $1 invalid combination of opcode and operands'#000+ '08008_E_Asm: 16 Bit references not supported'#000+ '08009_E_Asm: Invalid effective address'#000+ - '08010_E_Asm: Immediate or reference expected'#000+ + '08010_E_Asm: Immediate or reference e','xpected'#000+ '08011_E_Asm: $1 value exceeds bounds $2'#000+ - '08012_E_Asm: Sh','ort jump is out of range $1'#000+ + '08012_E_Asm: Short jump is out of range $1'#000+ '08013_E_Asm: Undefined label $1'#000+ '08014_E_Asm: Comp type not supported for this target'#000+ '08015_E_Asm: Extended type not supported for this target'#000+ - '08016_E_Asm: Duplicate label $1'#000+ + '08016_E','_Asm: Duplicate label $1'#000+ '08017_E_Asm: Redefined label $1'#000+ - '08018_','E_Asm: First defined here'#000+ + '08018_E_Asm: First defined here'#000+ '08019_E_Asm: Invalid register $1'#000+ '08020_E_Asm: 16 or 32 Bit references not supported'#000+ '08021_E_Asm: 64 Bit operands not supported'#000+ - '08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+ - ' REX prefix'#000+ - '08023','_E_Missing .seh_endprologue directive'#000+ + '08022_E_Asm: AH,BH,CH or',' DH cannot be used in an instruction requiri'+ + 'ng REX prefix'#000+ + '08023_E_Missing .seh_endprologue directive'#000+ '08024_E_Function prologue exceeds 255 bytes'#000+ '08025_E_.seh_handlerdata directive without preceding .seh_handler'#000+ - '08026_F_Relocation count for section $1 exceeds 65535'#000+ - '08027_N_Change of bind type of symbol ','$1 from $2 to $3 after use'#000+ + '08026_F_Relocation count for ','section $1 exceeds 65535'#000+ + '08027_N_Change of bind type of symbol $1 from $2 to $3 after use'#000+ '08028_H_Change of bind type of symbol $1 from $2 to $3 after use'#000+ '08029_E_Asm: 32 Bit references not supported'#000+ '08030_F_Code segment too large'#000+ - '08031_F_Data segment too large'#000+ - '08032_E_Instruction not supported by the ','selected instruction set'#000+ + '08031_F_D','ata segment too large'#000+ + '08032_E_Instruction not supported by the selected instruction set'#000+ '08033_E_Asm: conditional branch destination is out of range'#000+ '08034_E_Asm: RIP cannot be used as index register or with another regi'+ 'ster in a reference'#000+ - '08035_F_Illegal function size for SEH function'#000+ - '09000_W_Source ope','rating system redefined'#000+ + '08','035_F_Illegal function size for SEH function'#000+ + '09000_W_Source operating system redefined'#000+ '09001_I_Assembling (pipe) $1'#000+ '09002_E_Can'#039't create assembler file: $1'#000+ '09003_E_Can'#039't create object file: $1 (error code: $2)'#000+ - '09004_E_Can'#039't create archive file: $1'#000+ - '09005_E_Assembler $1 not found, switching to external a','ssembling'#000+ + '09004_E_Can'#039't create archive f','ile: $1'#000+ + '09005_E_Assembler $1 not found, switching to external assembling'#000+ '09006_T_Using assembler: $1'#000+ '09007_E_Error while assembling exitcode $1'#000+ '09008_E_Can'#039't call the assembler, error $1 switching to external a'+ 'ssembling'#000+ - '09009_I_Assembling $1'#000+ + '09009_I_Assembling $','1'#000+ '09010_I_Assembling with smartlinking $1'#000+ - '09011_W_Object $1 not',' found, Linking may fail !'#000+ + '09011_W_Object $1 not found, Linking may fail !'#000+ '09012_W_Library $1 not found, Linking may fail !'#000+ '09013_E_Error while linking'#000+ '09014_E_Can'#039't call the linker, switching to external linking'#000+ - '09015_I_Linking $1'#000+ - '09016_E_Util $1 not found, switching to external linking',#000+ + '09015_I_Link','ing $1'#000+ + '09016_E_Util $1 not found, switching to external linking'#000+ '09017_T_Using util $1'#000+ '09018_E_Creation of Executables not supported'#000+ '09019_E_Creation of Dynamic/Shared Libraries not supported'#000+ - '09035_E_Creation of Static Libraries not supported'#000+ + '09035_E_Creation of Static Libraries not supporte','d'#000+ '09020_I_Closing script $1'#000+ - '09021_E_Resource compiler "$1" not ','found, switching to external mode'+ - #000+ + '09021_E_Resource compiler "$1" not found, switching to external mode'#000+ '09022_I_Compiling resource $1'#000+ '09023_T_Unit $1 cannot be statically linked, switching to smart linkin'+ 'g'#000+ - '09024_T_Unit $1 cannot be smart linked, switching to static linking'#000+ - '09025_T_Unit $1 cannot be shared lin','ked, switching to static linking'+ - #000+ + '09024_T_Unit $1 cannot be smart linked, s','witching to static linking'#000+ + '09025_T_Unit $1 cannot be shared linked, switching to static linking'#000+ '09026_E_Unit $1 cannot be smart or static linked'#000+ '09027_E_Unit $1 cannot be shared or static linked'#000+ - '09028_D_Calling resource compiler "$1" with "$2" as command line'#000+ + '09028_D_Calling resource compiler "$1" with "','$2" as command line'#000+ '09029_E_Error while compiling resources'#000+ - '090','30_E_Can'#039't call the resource compiler "$1", switching to exte'+ - 'rnal mode'#000+ + '09030_E_Can'#039't call the resource compiler "$1", switching to extern'+ + 'al mode'#000+ '09031_E_Can'#039't open resource file "$1"'#000+ '09032_E_Can'#039't write resource file "$1"'#000+ - '09033_N_File "$1" not found for backquoted cat command'#000+ - '09034_W_"$1" not found, this will pro','bably cause a linking failure'#000+ + '09033_N_File "$1" not found f','or backquoted cat command'#000+ + '09034_W_"$1" not found, this will probably cause a linking failure'#000+ '09128_F_Can'#039't post process executable $1'#000+ '09129_F_Can'#039't open executable $1'#000+ '09130_X_Size of Code: $1 bytes'#000+ - '09131_X_Size of initialized data: $1 bytes'#000+ + '09131_X_Size of initialized data: $1 bytes',#000+ '09132_X_Size of uninitialized data: $1 bytes'#000+ - '09133_X_Stack spa','ce reserved: $1 bytes'#000+ + '09133_X_Stack space reserved: $1 bytes'#000+ '09134_X_Stack space committed: $1 bytes'#000+ '09200_F_Executable image size is too big for $1 target.'#000+ - '09201_W_Object file "$1" contains 32-bit absolute relocation to symbol'+ - ' "$2".'#000+ - '09202_E_Program segment too large (exceeds 64','k by $1 bytes)'#000+ + '09201_W_Object file "$1" contains 32-bit absolute relocatio','n to symb'+ + 'ol "$2".'#000+ + '09202_E_Program segment too large (exceeds 64k by $1 bytes)'#000+ '09203_E_Code segment "$1" too large (exceeds 64k by $2 bytes)'#000+ '09204_E_Data segment "$1" too large (exceeds 64k by $2 bytes)'#000+ - '09205_E_Segment "$1" too large (exceeds 64k by $2 bytes)'#000+ - '09206_E_Group "$1" too large (exceeds 64k by',' $2 bytes)'#000+ + '09205_E_Segment "$1" too large (exceed','s 64k by $2 bytes)'#000+ + '09206_E_Group "$1" too large (exceeds 64k by $2 bytes)'#000+ '09207_E_Cannot create a .COM file, because the program contains segmen'+ 't relocations'#000+ '09208_W_Program "$1" uses experimental CheckPointer option'#000+ - '09209_E_Multiple defined symbol "$1"'#000+ - '09210_E_COMDAT selection mode $1 not supported (s','ection: "$1")'#000+ + '09209_E_Multiple define','d symbol "$1"'#000+ + '09210_E_COMDAT selection mode $1 not supported (section: "$1")'#000+ '09211_E_Associative section expected for COMDAT section "$1"'#000+ '09212_E_COMDAT section selection mode doesn'#039't match for section "$'+ '1" and symbol "$2"'#000+ - '09213_E_Associative COMDAT section for section "$1" not found'#000+ - '09214_D_Discarding',' duplicate symbol "$1" due to COMDAT selection mod'+ - 'e'#000+ + '09213_E_Associati','ve COMDAT section for section "$1" not found'#000+ + '09214_D_Discarding duplicate symbol "$1" due to COMDAT selection mode'#000+ '09215_D_Discarding duplicate symbol "$1" with same size due to COMDAT '+ 'selection mode'#000+ - '09216_D_Discarding duplicate symbol "$1" with same content due to COMD'+ - 'AT selection mode'#000+ - '09217_D_Replaci','ng duplicate symbol "$1" with smaller size due to COM'+ - 'DAT selection mode'#000+ + '09216_D_Discarding duplicate symbol "$1"',' with same content due to CO'+ + 'MDAT selection mode'#000+ + '09217_D_Replacing duplicate symbol "$1" with smaller size due to COMDA'+ + 'T selection mode'#000+ '09218_E_Size of duplicate COMDAT symbol "$1" differs'#000+ - '09219_E_Content of duplicate COMDAT symbol "$1" differs'#000+ + '09219_E_Content of duplicate COMDAT symbol "$1" diff','ers'#000+ '09220_E_COMDAT selection mode for symbol "$1" differs'#000+ - '09221','_E_Undefined symbol: $1 (first seen in $2)'#000+ + '09221_E_Undefined symbol: $1 (first seen in $2)'#000+ '09222_E_Undefined symbol: $1'#000+ '10000_T_Unitsearch: $1'#000+ '10001_T_PPU Loading $1'#000+ '10002_U_PPU Name: $1'#000+ '10003_U_PPU Flags: $1'#000+ - '10004_U_PPU Crc: $1'#000+ + '10004_U_PPU Crc:',' $1'#000+ '10005_U_PPU Time: $1'#000+ '10006_U_PPU File too short'#000+ - '10007_U_PPU',' Invalid Header (no PPU at the begin)'#000+ + '10007_U_PPU Invalid Header (no PPU at the begin)'#000+ '10008_U_PPU Invalid Version $1'#000+ '10009_U_PPU is compiled for another processor'#000+ '10010_U_PPU is compiled for another target'#000+ - '10011_U_PPU Source: $1'#000+ + '10011_U_PPU Source:',' $1'#000+ '10012_U_Writing $1'#000+ '10013_F_Can'#039't Write PPU-File'#000+ - '10014_F_Err','or reading PPU-File'#000+ + '10014_F_Error reading PPU-File'#000+ '10015_F_Unexpected end of PPU-File'#000+ '10016_F_Invalid PPU-File entry: $1'#000+ '10017_F_PPU Dbx count problem'#000+ '10018_E_Illegal unit name: $1 (expecting $2)'#000+ - '10019_F_Too much units'#000+ + '10019_F_Too ','much units'#000+ '10020_F_Circular unit reference between $1 and $2'#000+ - '10','021_F_Can'#039't compile unit $1, no sources available'#000+ + '10021_F_Can'#039't compile unit $1, no sources available'#000+ '10022_F_Can'#039't find unit $1 used by $2'#000+ '10023_W_Unit $1 was not found but $2 exists'#000+ '10024_F_Unit $1 searched but $2 found'#000+ - '10025_W_Compiling the system unit requires the -Us switch'#000+ - '10026_F_Ther','e were $1 errors compiling module, stopping'#000+ + '10025_W','_Compiling the system unit requires the -Us switch'#000+ + '10026_F_There were $1 errors compiling module, stopping'#000+ '10027_U_Load from $1 ($2) unit $3'#000+ '10028_U_Recompiling $1, checksum changed for $2'#000+ '10029_U_Recompiling $1, source found only'#000+ - '10030_U_Recompiling unit, static lib is older than ppufile'#000+ - '10031_U_Recom','piling unit, shared lib is older than ppufile'#000+ + '10030_U_R','ecompiling unit, static lib is older than ppufile'#000+ + '10031_U_Recompiling unit, shared lib is older than ppufile'#000+ '10032_U_Recompiling unit, obj and asm are older than ppufile'#000+ '10033_U_Recompiling unit, obj is older than asm'#000+ - '10034_U_Parsing interface of $1'#000+ + '10034_U_Parsing interf','ace of $1'#000+ '10035_U_Parsing implementation of $1'#000+ - '10036_U_Second l','oad for unit $1'#000+ + '10036_U_Second load for unit $1'#000+ '10037_U_PPU Check file $1 time $2'#000+ '10040_W_Can'#039't recompile unit $1, but found modified include files'#000+ - '10041_U_File $1 is newer than the one used for creating PPU file $2'#000+ - '10042_U_Trying to use a unit which was compiled with a d','ifferent FPU'+ - ' mode'#000+ + '10041_U_File $1 is newer than the one used for creating PPU f','ile $2'#000+ + '10042_U_Trying to use a unit which was compiled with a different FPU m'+ + 'ode'#000+ '10043_U_Loading interface units from $1'#000+ '10044_U_Loading implementation units from $1'#000+ '10045_U_Interface CRC changed for unit $1'#000+ - '10046_U_Implementation CRC changed for unit $1'#000+ + '10046_U_Implementation CRC chang','ed for unit $1'#000+ '10047_U_Finished compiling unit $1'#000+ - '10048_U_Addin','g dependency: $1 depends on $2'#000+ + '10048_U_Adding dependency: $1 depends on $2'#000+ '10049_U_No reload, is caller: $1'#000+ '10050_U_No reload, already in second compile: $1'#000+ '10051_U_Flag for reload: $1'#000+ '10052_U_Forced reloading'#000+ - '10053_U_Previous state of $1: $2'#000+ - '10054_U_Already compiling $1, setting sec','ond compile'#000+ + '10053_U_Pre','vious state of $1: $2'#000+ + '10054_U_Already compiling $1, setting second compile'#000+ '10055_U_Loading unit $1'#000+ '10056_U_Finished loading unit $1'#000+ '10057_U_Registering new unit $1'#000+ '10058_U_Re-resolving unit $1'#000+ - '10059_U_Skipping re-resolving unit $1, still loading used units'#000+ - '10060_U_Unloading resource unit $1 (not needed',')'#000+ + '10059_U_Skipping re-resolving unit $1, still lo','ading used units'#000+ + '10060_U_Unloading resource unit $1 (not needed)'#000+ '10061_E_Unit $1 was compiled using a different whole program optimizat'+ 'ion feedback input ($2, $3); recompile it without wpo or use the same '+ - 'wpo feedback input file for this compilation invocation'#000+ - '10062_U_Indirect interface (objects/classe','s) CRC changed for unit $1'+ - #000+ + 'wpo feedback input file for this co','mpilation invocation'#000+ + '10062_U_Indirect interface (objects/classes) CRC changed for unit $1'#000+ '10063_U_PPU is compiled for another i8086 memory model'#000+ '10064_U_Loading unit $1 from package $2'#000+ - '10065_F_Internal type "$1" was not found. Check if you use the correct'+ - ' run time library.'#000+ - '10066_F_Internal type "$1" do','es not look as expected. Check if you u'+ - 'se the correct run time library.'#000+ + '10065_F_Internal type "$1" was not found. Check if you ','use the corre'+ + 'ct run time library.'#000+ + '10066_F_Internal type "$1" does not look as expected. Check if you use'+ + ' the correct run time library.'#000+ '10067_U_Skipping unit, PPU and compiler have to be both compiled with '+ 'or without LLVM support'#000+ - '11000_O_$1 [options] <inputfile> [options]'#000+ - '11001_W_Only one source file su','pported, changing source file to comp'+ - 'ile from "$1" into "$2"'#000+ + '11000_O_$1 ','[options] <inputfile> [options]'#000+ + '11001_W_Only one source file supported, changing source file to compil'+ + 'e from "$1" into "$2"'#000+ '11002_W_DEF file can be created only for OS/2'#000+ '11003_E_Nested response files are not supported'#000+ - '11004_F_No source file name in command line'#000+ + '11004_F_No source file',' name in command line'#000+ '11005_N_No option inside $1 config file'#000+ - '1','1006_E_Illegal parameter: $1'#000+ + '11006_E_Illegal parameter: $1'#000+ '11007_H_-? writes help pages'#000+ '11008_F_Too many config files nested'#000+ '11009_F_Unable to open file $1'#000+ '11010_D_Reading further options from $1'#000+ - '11011_W_Target is already set to: $1'#000+ - '11012_W_Shared libs not supported on ','DOS platform, reverting to stat'+ - 'ic'#000+ + '11011_W_Tar','get is already set to: $1'#000+ + '11012_W_Shared libs not supported on DOS platform, reverting to static'+ + #000+ '11013_F_In options file $1 at line $2 too many #IF(N)DEFs encountered'#000+ '11014_F_In options file $1 at line $2 unexpected #ENDIFs encountered'#000+ - '11015_F_Open conditional at the end of the options file'#000+ - '11016_W_Deb','ug information generation is not supported by this execut'+ - 'able'#000+ + '1101','5_F_Open conditional at the end of the options file'#000+ + '11016_W_Debug information generation is not supported by this executab'+ + 'le'#000+ '11017_H_Try recompiling with -dGDB'#000+ '11018_W_You are using the obsolete switch $1'#000+ - '11019_W_You are using the obsolete switch $1, please use $2'#000+ - '11020_N_Switching assembler to default',' source writing assembler'#000+ + '11019_W_You are using the obsolete ','switch $1, please use $2'#000+ + '11020_N_Switching assembler to default source writing assembler'#000+ '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+ '11022_W_"$1" assembler use forced'#000+ '11026_T_Reading options from file $1'#000+ - '11027_T_Reading options from environment $1'#000+ + '11027_T_Readi','ng options from environment $1'#000+ '11028_D_Handling option "$1"'#000+ - '110','29_O_*** press enter ***'#000+ + '11029_O_*** press enter ***'#000+ '11030_H_Start of reading config file $1'#000+ '11031_H_End of reading config file $1'#000+ '11032_D_Interpreting option "$1"'#000+ - '11036_D_Interpreting firstpass option "$1"'#000+ + '11036_D_Interpreting firstpass option "$1','"'#000+ '11033_D_Interpreting file option "$1"'#000+ - '11034_D_Reading config ','file "$1"'#000+ + '11034_D_Reading config file "$1"'#000+ '11035_D_Found source file name "$1"'#000+ '11039_E_Unknown codepage "$1"'#000+ '11040_F_Config file $1 is a directory'#000+ - '11041_W_Assembler output selected "$1" cannot generate debug info, deb'+ - 'ugging disabled'#000+ - '11042_W_Use of ppc386.cfg is deprecated,',' please use fpc.cfg instead'#000+ + '11041_W_Assembler output selected "$1" cannot generate debug in','fo, d'+ + 'ebugging disabled'#000+ + '11042_W_Use of ppc386.cfg is deprecated, please use fpc.cfg instead'#000+ '11043_F_In options file $1 at line $2 #ELSE directive without #IF(N)DE'+ 'F found'#000+ '11044_F_Option "$1" is not, or not yet, supported on the current targe'+ - 't platform'#000+ - '11045_F_The feature "$1" is not, or not yet, supporte','d on the select'+ - 'ed target platform'#000+ + 't',' platform'#000+ + '11045_F_The feature "$1" is not, or not yet, supported on the selected'+ + ' target platform'#000+ '11046_N_DWARF debug information cannot be used with smart linking on t'+ 'his target, switching to static linking'#000+ - '11047_W_Option "$1" is ignored for the current target platform.'#000+ - '11048_W_Disabling external debug',' information because it is unsupport'+ - 'ed for the selected target/debug format combination.'#000+ + '11047_W_Option "$1" is ignored fo','r the current target platform.'#000+ + '11048_W_Disabling external debug information because it is unsupported'+ + ' for the selected target/debug format combination.'#000+ '11049_N_DWARF debug information cannot be used with smart linking with'+ - ' external assembler, disabling static library creation.'#000+ - '11050_E_Invalid value for',' MACOSX_DEPLOYMENT_TARGET environment varia'+ - 'ble: $1'#000+ + ' external assemble','r, disabling static library creation.'#000+ + '11050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment variabl'+ + 'e: $1'#000+ '11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment varia'+ 'ble: $1'#000+ - '11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when usin'+ - 'g the EABIHF ABI target'#000+ - '11053_W_The selec','ted debug format is not supported on the current ta'+ - 'rget, not changing the current setting'#000+ + '11052_E_You must use a FPU type of VFPV2, VFPV3 ','or VFPV3_D16 when us'+ + 'ing the EABIHF ABI target'#000+ + '11053_W_The selected debug format is not supported on the current targ'+ + 'et, not changing the current setting'#000+ '11054_E_Argument to "$1" is missing'#000+ '11055_E_Malformed parameter: $1'#000+ - '11056_W_Smart linking requires external linker'#000+ - '11057_E_Creating .COM files is not ','supported in the current memory m'+ - 'odel. Only the tiny memory model supports making .COM files.'#000+ + '11056_W_Smart linki','ng requires external linker'#000+ + '11057_E_Creating .COM files is not supported in the current memory mod'+ + 'el. Only the tiny memory model supports making .COM files.'#000+ '11058_W_Experimental CheckPointer option not enabled because it is inc'+ - 'omptatible with -Ur option.'#000+ - '11059_E_Unsupported target architecture -P$1, in','voke the "fpc" compi'+ - 'ler driver instead.'#000+ + 'omptatible wi','th -Ur option.'#000+ + '11059_E_Unsupported target architecture -P$1, invoke the "fpc" compile'+ + 'r driver instead.'#000+ '11060_E_Feature switches are only supported while compiling the system'+ ' unit.'#000+ - '11061_N_The selected debug format is not supported by the internal lin'+ - 'ker, switching to external linking'#000+ - '12000_F_Cannot ope','n whole program optimization feedback file "$1"'#000+ + '11061_N_The selected debug format is not supported by the in','ternal l'+ + 'inker, switching to external linking'#000+ + '12000_F_Cannot open whole program optimization feedback file "$1"'#000+ '12001_D_Processing whole program optimization information in wpo feedb'+ 'ack file "$1"'#000+ - '12002_D_Finished processing the whole program optimization information'+ - ' in wpo feedback file "$1"'#000+ - '12003_E_Exp','ected section header, but got "$2" at line $1 of wpo feed'+ - 'back file'#000+ + '12002_D_Finished processing the whole program',' optimization informati'+ + 'on in wpo feedback file "$1"'#000+ + '12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+ + 'ck file'#000+ '12004_W_No handler registered for whole program optimization section "'+ - '$2" at line $1 of wpo feedback file, ignoring'#000+ - '12005_D_Found whole program optimization section "$1" wit','h informati'+ - 'on about "$2"'#000+ + '$2" at line $1 of wpo feedback file, ign','oring'#000+ + '12005_D_Found whole program optimization section "$1" with information'+ + ' about "$2"'#000+ '12006_F_The selected whole program optimizations require a previously '+ 'generated feedback file (use -Fw to specify)'#000+ - '12007_E_No collected information necessary to perform "$1" whole progr'+ - 'am optimization found'#000+ - '12008_F_','Specify a whole program optimization feedback file to store '+ - 'the generated info in (using -FW)'#000+ + '12007_E_No collected information nece','ssary to perform "$1" whole pro'+ + 'gram optimization found'#000+ + '12008_F_Specify a whole program optimization feedback file to store th'+ + 'e generated info in (using -FW)'#000+ '12009_E_Not generating any whole program optimization information, yet'+ - ' a feedback file was specified (using -FW)'#000+ - '12010_E_Not performing any whole ','program optimizations, yet an input'+ - ' feedback file was specified (using -Fw)'#000+ + ' a feedback f','ile was specified (using -FW)'#000+ + '12010_E_Not performing any whole program optimizations, yet an input f'+ + 'eedback file was specified (using -Fw)'#000+ '12011_D_Skipping whole program optimization section "$1", because not '+ - 'needed by the requested optimizations'#000+ - '12012_W_Overriding previously read information for "$1" ','from feedbac'+ - 'k input file using information in section "$2"'#000+ + 'needed by the requested optimiz','ations'#000+ + '12012_W_Overriding previously read information for "$1" from feedback '+ + 'input file using information in section "$2"'#000+ '12013_E_Cannot extract symbol liveness information from program when s'+ 'tripping symbols, use -Xs-'#000+ - '12014_E_Cannot extract symbol liveness information from program when w'+ - 'hen not linkin','g'#000+ + '12014_E_Cannot extrac','t symbol liveness information from program when'+ + ' when not linking'#000+ '12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+ 'n from linked program'#000+ '12016_E_Error during reading symbol liveness information produced by "'+ '$1"'#000+ - '12017_F_Error executing "$1" (exitcode: $2) to extract symbol informat'+ - 'io','n from linked program'#000+ + '12017_F_E','rror executing "$1" (exitcode: $2) to extract symbol inform'+ + 'ation from linked program'#000+ '12018_E_Collection of symbol liveness information can only help when u'+ 'sing smart linking, use -CX -XX'#000+ - '12019_E_Cannot create specified whole program optimisation feedback fi'+ - 'le "$1"'#000+ + '12019_E_Cannot create specified whole program optimis','ation feedback '+ + 'file "$1"'#000+ '13001_F_Can'#039't find package $1'#000+ - '13002_U_','PCP file for package $1 found'#000+ + '13002_U_PCP file for package $1 found'#000+ '13003_E_Duplicate package $1'#000+ '13004_E_Unit $1 can not be part of a package'#000+ '13005_N_Unit $1 is implicitely imported into package $2'#000+ - '13006_F_Failed to create PCP file $2 for package $1'#000+ - '13007_F_Failed to read PCP f','ile for package $1'#000+ + '13006_F_Failed to',' create PCP file $2 for package $1'#000+ + '13007_F_Failed to read PCP file for package $1'#000+ '13008_T_PCP loading $1'#000+ '13009_U_PCP Name: $1'#000+ '13010_U_PCP Flags: $1'#000+ '13011_U_PCP Crc: $1'#000+ '13012_U_PCP Time: $1'#000+ '13013_U_PCP File too short'#000+ - '13014_U_PCP Invalid Header (no PCP at the begin)'#000+ + '13014_U_PCP Invalid Head','er (no PCP at the begin)'#000+ '13015_U_PCP Invalid Version $1'#000+ - '13016_U','_PCP is compiled for another processor'#000+ + '13016_U_PCP is compiled for another processor'#000+ '13017_U_PCP is compiled for another target'#000+ '13018_U_Writing $1'#000+ '13019_F_Can'#039't Write PCP-File'#000+ '13020_F_Error reading PCP-File'#000+ - '13021_F_Unexpected end of PCP-File'#000+ + '13021_F_Unexpect','ed end of PCP-File'#000+ '13022_F_Invalid PCP-File entry: $1'#000+ - '13023_U_T','rying to use a unit which was compiled with a different FPU'+ - ' mode'#000+ + '13023_U_Trying to use a unit which was compiled with a different FPU m'+ + 'ode'#000+ '13024_T_Packagesearch: $1'#000+ '13025_U_Required package $1'#000+ '13026_U_Contained unit $1'#000+ - '13027_E_Unit $1 is already contained in package $2'#000+ - '13028_W_Unit $1 is imported from indirectly ','required package $2'#000+ + '13027_E_Unit $1 is already conta','ined in package $2'#000+ + '13028_W_Unit $1 is imported from indirectly required package $2'#000+ '13029_U_PPL filename $1'#000+ '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPC'+ 'CPU'#010+ 'Copyright (c) 1993-2020 by Florian Klaempfl and others'#000+ - '11024_Free Pascal Compiler version $FPCVERSION'#010+ + '1102','4_Free Pascal Compiler version $FPCVERSION'#010+ #010+ - 'Compiler date ',': $FPCDATE'#010+ + 'Compiler date : $FPCDATE'#010+ 'Compiler CPU target: $FPCCPU'#010+ #010+ 'Supported targets (targets marked with '#039'{*}'#039' are under develop'+ @@ -1399,10 +1394,10 @@ const msgtxt : array[0..000357,1..240] of char=( 'Supported CPU instruction sets:'#010+ ' $INSTRUCTIONSETS'#010+ #010+ - 'Supported FPU instruction sets:'#010+ + 'S','upported FPU instruction sets:'#010+ ' $FPUINSTRUCTIONSETS'#010+ #010+ - 'Supported',' inline assembler modes:'#010+ + 'Supported inline assembler modes:'#010+ ' $ASMMODES'#010+ #010+ 'Recognized compiler and RTL features:'#010+ @@ -1414,10 +1409,10 @@ const msgtxt : array[0..000357,1..240] of char=( 'Supported ABI targets:'#010+ ' $ABITARGETS'#010+ #010+ - 'Supported Optimizations:'#010+ + 'Suppo','rted Optimizations:'#010+ ' $OPTIMIZATIONS'#010+ #010+ - 'Supported Whole Program O','ptimizations:'#010+ + 'Supported Whole Program Optimizations:'#010+ ' All'#010+ ' $WPOPTIMIZATIONS'#010+ #010+ @@ -1425,350 +1420,351 @@ const msgtxt : array[0..000357,1..240] of char=( ' $CODEGENERATIONBACKEND'#010+ #010+ 'Supported Microcontroller types:$\n $CONTROLLERTYPES$\n'#010+ - 'This program comes under the GNU General Public Licence'#010+ - 'For more information read COPYING.v2'#010, + 'This program comes under the G','NU General Public Licence'#010+ + 'For more information read COPYING.v2'#010+ #010+ 'Please report bugs in our bug tracker on:'#010+ ' https://bugs.freepascal.org'#010+ #010+ 'More information may be found on our WWW pages (including directions'#010+ - 'for mailing lists useful for asking questions or discussing potential'#010+ - 'new features',', etc.):'#010+ + 'for mailing lists u','seful for asking questions or discussing potentia'+ + 'l'#010+ + 'new features, etc.):'#010+ ' https://www.freepascal.org'#000+ '11025_F*0*_Only options valid for the default or selected platform are'+ ' listed.'#010+ - '**0*_Put + after a boolean switch option to enable it, - to disable it'+ - '.'#010+ - '**1@<x>_Read compiler options from <','x> in addition to the default fp'+ - 'c.cfg'#010+ + '**0*_Put + after a boolean switch option to e','nable it, - to disable '+ + 'it.'#010+ + '**1@<x>_Read compiler options from <x> in addition to the default fpc.'+ + 'cfg'#010+ '**1a_The compiler does not delete the generated assembler file'#010+ '**2a5_Don'#039't generate Big Obj COFF files for GNU Binutils older tha'+ - 'n 2.25 (Windows, NativeNT)'#010+ - '**2al_List sourcecode lines in assembler file'#010, + 'n 2.25 (Wi','ndows, NativeNT)'#010+ + '**2al_List sourcecode lines in assembler file'#010+ '**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+ '**2ao_Add an extra option to external assembler call (ignored for inte'+ 'rnal)'#010+ - '*L2ap_Use pipes instead of creating temporary assembler files'#010+ - '**2ar_List register allocation/release in','fo in assembler file'#010+ + '*L2ap_Use pipes instead of creating temp','orary assembler files'#010+ + '**2ar_List register allocation/release info in assembler file'#010+ '**2at_List temp allocation/release info in assembler file'#010+ '**1A<x>_Output format:'#010+ '**2Adefault_Use default assembler'#010+ '3*2Aas_Assemble using GNU AS'#010+ - '3*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+ - '3*2Amacho_Mach-O (Darwin',', Intel 32 bit) using internal writer'#010+ + '3*2Aas-darwi','n_Assemble Darwin Mach-O using GNU GAS'#010+ + '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+ '8*2Anasm_Assemble using Nasm'#010+ '8*2Anasmobj_Assemble using Nasm'#010+ '3*2Anasm_Assemble using Nasm'#010+ '3*2Anasmcoff_COFF (Go32v2) file using Nasm'#010+ - '3*2Anasmelf_ELF32 (Linux) file using Nasm'#010+ - '3*2Anasmwin32_Win32 object ','file using Nasm'#010+ + '3*2Ana','smelf_ELF32 (Linux) file using Nasm'#010+ + '3*2Anasmwin32_Win32 object file using Nasm'#010+ '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+ '3*2Anasmdarwin_macho32 object file using Nasm (experimental)'#010+ '3*2Awasm_Obj file using Wasm (Watcom)'#010+ - '3*2Anasmobj_Obj file using Nasm'#010+ + '3*2Anasmobj_O','bj file using Nasm'#010+ '3*2Amasm_Obj file using Masm (Microsoft)'#010+ - '3*2','Atasm_Obj file using Tasm (Borland)'#010+ + '3*2Atasm_Obj file using Tasm (Borland)'#010+ '3*2Aelf_ELF (Linux) using internal writer'#010+ '3*2Acoff_COFF (Go32v2) using internal writer'#010+ '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+ - '3*2Ayasm_Assemble using Yasm (experimental)'#010+ - '4*2Aas_Assemble using GN','U AS'#010+ + '3*2Ay','asm_Assemble using Yasm (experimental)'#010+ + '4*2Aas_Assemble using GNU AS'#010+ '4*2Agas_Assemble using GNU GAS'#010+ '4*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+ '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+ - '4*2Apecoff_PE-COFF (Win64) using internal writer'#010+ + '4*2Apecoff_PE-COFF (Win64) using interna','l writer'#010+ '4*2Aelf_ELF (Linux-64bit) using internal writer'#010+ - '4*2Aya','sm_Assemble using Yasm (experimental)'#010+ + '4*2Ayasm_Assemble using Yasm (experimental)'#010+ '4*2Anasm_Assemble using Nasm (experimental)'#010+ '4*2Anasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+ - '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+ - #010+ - '4*2Anasmdarwin_Assem','ble darwin macho64 object file using Nasm (exper'+ - 'imental)'#010+ + '4*2Anasmelf_Assemble Linux-6','4bit object file using Nasm (experimenta'+ + 'l)'#010+ + '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+ + 'ental)'#010+ '6*2Aas_Unix o-file using GNU AS'#010+ '6*2Agas_GNU Motorola assembler'#010+ '6*2Amit_MIT Syntax (old GAS)'#010+ - '6*2Amot_Standard Motorola assembler'#010+ + '6*2Amot_Standard Motorola as','sembler'#010+ '6*2Avasm_Use vasm to assemble'#010+ - 'A*2Aas_Assemble using GNU',' AS'#010+ + 'A*2Aas_Assemble using GNU AS'#010+ 'P*2Aas_Assemble using GNU AS'#010+ 'S*2Aas_Assemble using GNU AS'#010+ 'Z*2Asdcc-sdasz80_Assemble using SDCC-SDASZ80'#010+ 'Z*2Az80asm_Assemble using z80asm'#010+ '**1b_Generate browser info'#010+ - '**2bl_Generate local symbol info'#010+ + '**2bl_Gene','rate local symbol info'#010+ '**1B_Build all modules'#010+ - '**1C<x>_Code gene','ration options:'#010+ + '**1C<x>_Code generation options:'#010+ '**2C3_Turn on ieee error checking for constants'#010+ '**2Ca<x>_Select ABI; see fpc -i or fpc -ia for possible values'#010+ - '**2Cb_Generate code for a big-endian variant of the target architectur'+ - 'e'#010+ - '**2Cc<x>_Set default calling convention t','o <x>'#010+ + '**2Cb_Generate code for a big-endian variant of th','e target architect'+ + 'ure'#010+ + '**2Cc<x>_Set default calling convention to <x>'#010+ '**2CD_Create also dynamic library (not supported)'#010+ '**2Ce_Compilation with emulated floating point opcodes'#010+ '**2CE_Generate FPU code which can raise exceptions'#010+ - '**2Cf<x>_Select fpu instruction set to use; see fpc -i or fpc -if for '+ - 'possible',' values'#010+ + '**2Cf<x>_Select',' fpu instruction set to use; see fpc -i or fpc -if fo'+ + 'r possible values'#010+ '**2CF<x>_Minimal floating point constant precision (default, 32, 64)'#010+ '**2Cg_Generate PIC code'#010+ '**2Ch<n>[,m]_<n> bytes min heap size (between 1023 and 67107840) and o'+ - 'ptionally [m] max heap size'#010+ + 'ptiona','lly [m] max heap size'#010+ '**2Ci_IO-checking'#010+ - 'A*2CI<x>_Select instruc','tion set on ARM: ARM or THUMB'#010+ + 'A*2CI<x>_Select instruction set on ARM: ARM or THUMB'#010+ 'L*2Cl<x>_LLVM code generation options'#010+ 'L*3Clflto_Enable Link-time optimisation (needed both when compiling un'+ 'its and programs/libraries)'#010+ - 'L*3Clfltonosystem_Disable LTO for the system unit (needed with at leas'+ - 't Xc','ode 10.2 and earlier due to linker bugs)'#010+ + 'L*3Clfltono','system_Disable LTO for the system unit (needed with at le'+ + 'ast Xcode 10.2 and earlier due to linker bugs)'#010+ 'L*3Clv<x>_LLVM target version: Xcode-10.1, 7.0, 8.0, .., 10.0'#010+ '**2Cn_Omit linking stage'#010+ 'P*2CN_Generate nil-pointer checks (AIX-only)'#010+ - '**2Co_Check overflow of integer operations'#010+ - '**2CO_Check for possible',' overflow of integer operations'#010+ + '**2C','o_Check overflow of integer operations'#010+ + '**2CO_Check for possible overflow of integer operations'#010+ '**2Cp<x>_Select instruction set; see fpc -i or fpc -ic for possible va'+ 'lues'#010+ '**2CP<x>=<y>_ packing settings'#010+ - '**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+ - 'and 8'#010+ - '**3CPPACKENUM=<y>_ <y> enu','m packing: 0, 1, 2 and 4 or DEFAULT or NOR'+ - 'MAL'#010+ + '**3CPPACKSET=<y>_ <y> set allocation: 0',', 1 or DEFAULT or NORMAL, 2, '+ + '4 and 8'#010+ + '**3CPPACKENUM=<y>_ <y> enum packing: 0, 1, 2 and 4 or DEFAULT or NORMA'+ + 'L'#010+ '**3CPPACKRECORD=<y>_ <y> record packing: 0 or DEFAULT or NORMAL, 1, 2,'+ ' 4, 8, 16 and 32'#010+ '**2Cr_Range checking'#010+ - '**2CR_Verify object method call validity'#010+ + '**2CR_Verify object met','hod call validity'#010+ '**2Cs<n>_Set stack checking size to <n>'#010+ - '**2Ct','_Stack checking (for testing only, see manual)'#010+ + '**2Ct_Stack checking (for testing only, see manual)'#010+ '8*2CT<x>_Target-specific code generation options'#010+ '3*2CT<x>_Target-specific code generation options'#010+ - '4*2CT<x>_Target-specific code generation options'#010+ - 'p*2CT<x>_Target-specific code generation optio','ns'#010+ + '4*2CT<x>_Target-specific code ge','neration options'#010+ + 'p*2CT<x>_Target-specific code generation options'#010+ 'P*2CT<x>_Target-specific code generation options'#010+ 'J*2CT<x>_Target-specific code generation options'#010+ 'A*2CT<x>_Target-specific code generation options'#010+ - 'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ - ' (AIX)'#010+ - 'P*3CTsmalltoc','_ Generate smaller TOCs at the expense of execution spe'+ + 'p*3CTsmalltoc_ Generate sma','ller TOCs at the expense of execution spe'+ 'ed (AIX)'#010+ + 'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+ + ' (AIX)'#010+ 'J*3CTautogetterprefix=X_ Automatically create getters for properties '+ 'with prefix X (empty string disables)'#010+ - 'J*3CTautosetterprefix=X_ Automatically create setters for propertie','s'+ - ' with prefix X (empty string disables)'#010+ + 'J*3CT','autosetterprefix=X_ Automatically create setters for propertie'+ + 's with prefix X (empty string disables)'#010+ '8*3CTcld_ Emit a CLD instruction before using the x86 '+ 'string instructions'#010+ - '3*3CTcld_ Emit a CLD instruction before using the x86 '+ - 'string instructions'#010+ - '4*3CTcld_ ',' Emit a CLD instruction before using the x8'+ + '3*3CTcld_ Emit a CLD instructio','n before using the x8'+ '6 string instructions'#010+ + '4*3CTcld_ Emit a CLD instruction before using the x86 '+ + 'string instructions'#010+ '8*3CTfarprocspushoddbp_ Increment BP before pushing it in the pr'+ 'ologue of far functions'#010+ - 'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+ - 'de for',' initializing integer array constants'#010+ + 'J*3CTcompacti','ntarrayinit_ Generate smaller (but potentially slower) '+ + 'code for initializing integer array constants'#010+ 'J*3CTenumfieldinit_ Initialize enumeration fields in constructor'+ 's to enumtype(0), after calling inherited constructors'#010+ - 'J*3CTinitlocals_ Initialize local variables that trigger a JV'+ - 'M bytec','ode verification error if used uninitialized (slows down code'+ + 'J*3CTinitlocal','s_ Initialize local variables that trigger a '+ + 'JVM bytecode verification error if used uninitialized (slows down code'+ ')'#010+ 'J*3CTlowercaseprocstart_ Lowercase the first character of procedure/f'+ 'unction/method names'#010+ - 'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+ - 'ble'#010+ - 'J*2Cv_Var/ou','t parameter copy-out checking'#010+ + 'A*3CTthumbinterworking_',' Generate Thumb interworking-safe code if pos'+ + 'sible'#010+ + 'J*2Cv_Var/out parameter copy-out checking'#010+ 'A*2CV<x>_Set section threadvar model to <x>'#010+ '**2CX_Create also smartlinked library'#010+ '**1d<x>_Defines the symbol <x>'#010+ '**1D_Generate a DEF file'#010+ - '**2Dd<x>_Set description to <x>'#010+ + '**2Dd<x>_','Set description to <x>'#010+ '**2Dv<x>_Set DLL version to <x>'#010+ - '*O2Dw_PM',' application'#010+ + '*O2Dw_PM application'#010+ '**1e<x>_Set path to executable'#010+ '**1E_Same as -Cn'#010+ '**1fPIC_Same as -Cg'#010+ '**1F<x>_Set file names and paths:'#010+ - '**2Fa<x>[,y]_(for a program) load units <x> and [y] before uses is par'+ - 'sed'#010+ + '**2Fa<x>[,y]_(for a program) load units <x> and [y] before use','s is p'+ + 'arsed'#010+ '**2Fc<x>_Set input codepage to <x>'#010+ - '**2FC<x>_Set RC ','compiler binary name to <x>'#010+ + '**2FC<x>_Set RC compiler binary name to <x>'#010+ '**2Fd_Disable the compiler'#039's internal directory cache'#010+ '**2FD<x>_Set the directory where to search for compiler utilities'#010+ - '**2Fe<x>_Redirect error output to <x>'#010+ + '**2Fe<x>_Redirect error outpu','t to <x>'#010+ '**2FE<x>_Set exe/unit output path to <x>'#010+ - '**2Ff<x>_Add ','<x> to framework path (Darwin only), or set IDF path to'+ - ' <x> (Xtensa-FreeRTOS)'#010+ + '**2Ff<x>_Add <x> to framework path (Darwin only), or set IDF path to <'+ + 'x> (Xtensa-FreeRTOS)'#010+ '**2FF_Use fpcres as RC to RES compiler instead of windres or gorc'#010+ - '**2Fi<x>_Add <x> to include path'#010+ + '**2Fi<x>_Add <x> to include path'#010, '**2Fl<x>_Add <x> to library path'#010+ - '**2FL<x>_Use <x> as dynamic li','nker'#010+ + '**2FL<x>_Use <x> as dynamic linker'#010+ '**2Fm<x>_Load unicode conversion table from <x>.txt in the compiler di'+ 'r'#010+ '**2FM<x>_Set the directory where to search for unicode binary files'#010+ - '**2FN<x>_Add <x> to list of default unit scopes (namespaces)'#010+ + '**2FN<x>_Add <x> to list of defa','ult unit scopes (namespaces)'#010+ '**2Fo<x>_Add <x> to object path'#010+ - '**','2Fr<x>_Load error message file <x>'#010+ + '**2Fr<x>_Load error message file <x>'#010+ '**2FR<x>_Set resource (.res) linker to <x>'#010+ '**2Fu<x>_Add <x> to unit path'#010+ '**2FU<x>_Set unit output path to <x>, overrides -FE'#010+ - '**2FW<x>_Store generated whole-program optimization feedback in <x>'#010+ - '**2Fw<x>_Loa','d previously stored whole-program optimization feedback '+ - 'from <x>'#010+ + '**2FW<x>_Store ge','nerated whole-program optimization feedback in <x>'#010+ + '**2Fw<x>_Load previously stored whole-program optimization feedback fr'+ + 'om <x>'#010+ '*g1g_Generate debug information (default format for target)'#010+ - '*g2gc_Generate checks for pointers (experimental, only available on so'+ - 'me targets, might generate false positive)'#010+ - '*g','2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+ + '*g2gc_Generate checks for pointers (experimental, on','ly available on '+ + 'some targets, might generate false positive)'#010+ + '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+ '*g2gl_Use line info unit (show more info with backtraces)'#010+ - '*g2gm_Generate Microsoft CodeView debug information (experimental)'#010+ + '*g2gm_Generate Microsoft CodeView debug information (expe','rimental)'#010+ '*g2go<x>_Set debug information options'#010+ - '*g3godwarfsets','_ Enable DWARF '#039'set'#039' type debug information (b'+ - 'reaks gdb < 6.5)'#010+ + '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+ + 'aks gdb < 6.5)'#010+ '*g3gostabsabsincludes_ Store absolute/full include file paths in Stabs'+ #010+ - '*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+ - 'ame'#010+ - '*g3godwarfcpp_ Simulate C++ debu','g information in DWARF'#010+ + '*g3godwarfmethodclassprefix_ Prefix method ','names in DWARF with class'+ + ' name'#010+ + '*g3godwarfcpp_ Simulate C++ debug information in DWARF'#010+ '*g3godwarfomflinnum_ Generate line number information in OMF LINNUM re'+ 'cords in MS LINK format in addition to the DWARF debug information (Op'+ - 'en Watcom Debugger/Linker compatibility)'#010+ - '*g2gp_Preserve case in stabs symbol ','names'#010+ + 'en Watcom Debu','gger/Linker compatibility)'#010+ + '*g2gp_Preserve case in stabs symbol names'#010+ '*g2gs_Generate Stabs debug information'#010+ '*g2gt_Trash local variables (to detect uninitialized uses; multiple '#039+ 't'#039' changes the trashing value)'#010+ - '*g2gv_Generates programs traceable with Valgrind'#010+ - '*g2gw_Generate DWARFv2 debug information (same',' as -gw2)'#010+ + '*g2gv_Generates programs traceab','le with Valgrind'#010+ + '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+ '*g2gw2_Generate DWARFv2 debug information'#010+ '*g2gw3_Generate DWARFv3 debug information'#010+ '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+ '**1i_Information'#010+ - '**2iD_Return compiler date'#010+ + '**2iD_Ret','urn compiler date'#010+ '**2iSO_Return compiler OS'#010+ - '**2iSP_Return compi','ler host processor'#010+ + '**2iSP_Return compiler host processor'#010+ '**2iTO_Return target OS'#010+ '**2iTP_Return target processor'#010+ '**2iV_Return short compiler version'#010+ '**2iW_Return full compiler version'#010+ - '**2ia_Return list of supported ABI targets'#010+ + '**2ia_Return list of supported A','BI targets'#010+ '**2ib_Return the used code generation backend type'#010+ - '*','*2ic_Return list of supported CPU instruction sets'#010+ + '**2ic_Return list of supported CPU instruction sets'#010+ '**2if_Return list of supported FPU instruction sets'#010+ '**2ii_Return list of supported inline assembler modes'#010+ - '**2im_Return list of supported modeswitches'#010+ - '**2io_Return list of supported optimiza','tions'#010+ + '**2im_Return list of',' supported modeswitches'#010+ + '**2io_Return list of supported optimizations'#010+ '**2ir_Return list of recognized compiler and RTL features'#010+ '**2it_Return list of supported targets'#010+ '**2iu_Return list of supported microcontroller types'#010+ - '**2iw_Return list of supported whole program optimizations'#010+ - '**1I<x>_Add <x> to includ','e path'#010+ + '**2iw_Return list of ','supported whole program optimizations'#010+ + '**1I<x>_Add <x> to include path'#010+ '**1k<x>_Pass <x> to the linker'#010+ '**1l_Write logo'#010+ '**1M<x>_Set language mode to <x> / enable modeswitch <x> (see option -'+ 'im)'#010+ '**2Mfpc_Free Pascal dialect (default)'#010+ - '**2Mobjfpc_FPC mode with Object Pascal support'#010+ - '**2Mdelphi_Delphi 7 compati','bility mode'#010+ + '**2Mobjfpc_','FPC mode with Object Pascal support'#010+ + '**2Mdelphi_Delphi 7 compatibility mode'#010+ '**2Mtp_TP/BP 7.0 compatibility mode'#010+ '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+ '**2Miso_ISO 7185 mode'#010+ '**2Mextendedpascal_ISO 10206 mode'#010+ - '**2Mdelphiunicode_Delphi 2009 and later compatibility mode'#010+ - '**2*_Each mode (as li','sted above) enables its default set of modeswit'+ - 'ches.'#010+ + '**2Mdelphiunicode','_Delphi 2009 and later compatibility mode'#010+ + '**2*_Each mode (as listed above) enables its default set of modeswitch'+ + 'es.'#010+ '**2*_Other modeswitches are disabled and need to be enabled one by ano'+ 'ther.'#010+ - '**1M<x>-_Disable modeswitch <x> (see option -im)'#010+ + '**1M<x>-_Disable modeswitch <x> (see option -im)',#010+ '**1n_Do not read the default config files'#010+ - '**1o<x>_Change the n','ame of the executable produced to <x>'#010+ + '**1o<x>_Change the name of the executable produced to <x>'#010+ '**1O<x>_Optimizations:'#010+ '**2O-_Disable optimizations'#010+ '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+ - '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+ - '**2O3_Level 3 optimizations (-O2 + sl','ow optimizations)'#010+ + '**2O2_Level 2 optimizations (-','O1 + quick optimizations)'#010+ + '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+ '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+ 'pected side effects)'#010+ '**2Oa<x>=<y>_Set alignment'#010+ - '**2Oo[NO]<x>_Enable or disable optimizations; see fpc -i or fpc -io fo'+ - 'r possible values'#010+ - '**2Op<x>_Set tar','get cpu for optimizing; see fpc -i or fpc -ic for po'+ - 'ssible values'#010+ + '**2Oo[NO]<x>_Enable or disable optimizati','ons; see fpc -i or fpc -io '+ + 'for possible values'#010+ + '**2Op<x>_Set target cpu for optimizing; see fpc -i or fpc -ic for poss'+ + 'ible values'#010+ '**2OW<x>_Generate whole-program optimization feedback for optimization'+ - ' <x>; see fpc -i or fpc -iw for possible values'#010+ - '**2Ow<x>_Perform whole-program optimization <x>; see fpc',' -i or fpc -'+ - 'iw for possible values'#010+ + ' <x>; see fpc -i or fpc -iw for possible ','values'#010+ + '**2Ow<x>_Perform whole-program optimization <x>; see fpc -i or fpc -iw'+ + ' for possible values'#010+ '**2Os_Optimize for size rather than speed'#010+ '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+ - 'F*1P<x>_Target CPU / compiler related options:'#010+ + 'F*1P<x>_Target CPU / compiler related op','tions:'#010+ 'F*2PB_Show default compiler binary'#010+ - 'F*2PP_Show default ta','rget cpu'#010+ + 'F*2PP_Show default target cpu'#010+ 'F*2P<x>_Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mipse'+ 'l,powerpc,powerpc64,sparc,x86_64)'#010+ '**1R<x>_Assembler reading style:'#010+ - '**2Rdefault_Use default assembler for target'#010+ + '**2Rdefault_Use default assembl','er for target'#010+ '3*2Ratt_Read AT&T style assembler'#010+ - '3*2Rintel_Read ','Intel style assembler'#010+ + '3*2Rintel_Read Intel style assembler'#010+ '4*2Ratt_Read AT&T style assembler'#010+ '4*2Rintel_Read Intel style assembler'#010+ '8*2Ratt_Read AT&T style assembler'#010+ '8*2Rintel_Read Intel style assembler'#010+ - '6*2RMOT_Read Motorola style assembler'#010+ + '6*2RMOT_Read ','Motorola style assembler'#010+ '**1S<x>_Syntax options:'#010+ - '**2S2_Same as ','-Mobjfpc'#010+ + '**2S2_Same as -Mobjfpc'#010+ '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+ '**2Sa_Turn on assertions'#010+ '**2Sd_Same as -Mdelphi'#010+ '**2Se<x>_Error options. <x> is a combination of the following:'#010+ - '**3*_<n> : Compiler halts after the <n> errors (default is 1)'#010+ - '**3*_w : ','Compiler also halts after warnings'#010+ + '**3*_<n>',' : Compiler halts after the <n> errors (default is 1)'#010+ + '**3*_w : Compiler also halts after warnings'#010+ '**3*_n : Compiler also halts after notes'#010+ '**3*_h : Compiler also halts after hints'#010+ - '**2Sf_Enable certain features in compiler and RTL; see fpc -i or fpc -'+ - 'ir for possible values)'#010+ - '**2Sg_Enable LABEL and GOTO (','default in -Mtp and -Mdelphi)'#010+ + '**2Sf_Enable certain features in compiler and RTL; see fpc -','i or fpc'+ + ' -ir for possible values)'#010+ + '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+ '**2Sh_Use reference counted strings (ansistring by default) instead of'+ ' shortstrings'#010+ - '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+ - '**2Sj_Allows typed constants to be writeable (default in a','ll modes)'#010+ + '**2Si_Turn on inlining of procedures/functions declared as "inl','ine"'#010+ + '**2Sj_Allows typed constants to be writeable (default in all modes)'#010+ '**2Sk_Load fpcylix unit'#010+ '**2SI<x>_Set interface style to <x>'#010+ '**3SIcom_COM compatible interface (default)'#010+ '**3SIcorba_CORBA compatible interface'#010+ - '**2Sm_Support macros like C (global)'#010+ + '**2Sm_Support macros like',' C (global)'#010+ '**2So_Same as -Mtp'#010+ - '**2Sr_Transparent file names in ','ISO mode'#010+ + '**2Sr_Transparent file names in ISO mode'#010+ '**2Ss_Constructor name must be init (destructor must be done)'#010+ '**2Sv_Support vector processing (use CPU vector extensions if availabl'+ 'e)'#010+ - '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+ - '**2Sy_@<pointer> returns a type','d pointer, same as $T+'#010+ + '**2Sx_Enable exception keywords (','default in Delphi/ObjFPC modes)'#010+ + '**2Sy_@<pointer> returns a typed pointer, same as $T+'#010+ '**1s_Do not call assembler and linker'#010+ '**2sh_Generate script to link on host'#010+ '**2st_Generate script to link on target'#010+ - '**2sr_Skip register allocation phase (use with -alr)'#010+ + '**2sr_Skip register allocation phase (','use with -alr)'#010+ '**1T<x>_Target operating system:'#010+ - '3*2Tandroid_And','roid'#010+ + '3*2Tandroid_Android'#010+ '3*2Taros_AROS'#010+ '3*2Tbeos_BeOS'#010+ '3*2Tdarwin_Darwin/Mac OS X'#010+ '3*2Tembedded_Embedded'#010+ '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+ '3*2Tfreebsd_FreeBSD'#010+ - '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+ + '3*2Tgo32v2_Version 2 of D','J Delorie DOS extender'#010+ '3*2Thaiku_Haiku'#010+ - '3*2Tiphonesim_iPhoneSimu','lator from iOS SDK 3.2+ (older versions: -Td'+ - 'arwin)'#010+ + '3*2Tiphonesim_iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tdar'+ + 'win)'#010+ '3*2Tlinux_Linux'#010+ '3*2Tnativent_Native NT API (experimental)'#010+ '3*2Tnetbsd_NetBSD'#010+ '3*2Tnetware_Novell Netware Module (clib)'#010+ - '3*2Tnetwlibc_Novell Netware Module (libc)'#010+ + '3*2Tnetwl','ibc_Novell Netware Module (libc)'#010+ '3*2Topenbsd_OpenBSD'#010+ - '3*2Tos2_OS','/2 / eComStation'#010+ + '3*2Tos2_OS/2 / eComStation'#010+ '3*2Tsymbian_Symbian OS'#010+ '3*2Tsolaris_Solaris'#010+ '3*2Twatcom_Watcom compatible DOS extender'#010+ '3*2Twdosx_WDOSX DOS extender'#010+ '3*2Twin32_Windows 32 Bit'#010+ - '3*2Twince_Windows CE'#010+ + '3*2Twince_Windows CE'#010, '4*2Tandroid_Android'#010+ '4*2Taros_AROS'#010+ '4*2Tdarwin_Darwin/Mac OS X'#010+ - '4*','2Tdragonfly_DragonFly BSD'#010+ + '4*2Tdragonfly_DragonFly BSD'#010+ '4*2Tembedded_Embedded'#010+ '4*2Tfreebsd_FreeBSD'#010+ '4*2Thaiku_Haiku'#010+ @@ -1776,9 +1772,9 @@ const msgtxt : array[0..000357,1..240] of char=( '4*2Tlinux_Linux'#010+ '4*2Tnetbsd_NetBSD'#010+ '4*2Topenbsd_OpenBSD'#010+ - '4*2Tsolaris_Solaris'#010+ + '4*2Tsolar','is_Solaris'#010+ '4*2Twin64_Win64 (64 bit Windows systems)'#010+ - '6*2Tamiga_C','ommodore Amiga'#010+ + '6*2Tamiga_Commodore Amiga'#010+ '6*2Tatari_Atari ST/STe/TT'#010+ '6*2Tembedded_Embedded'#010+ '6*2Tlinux_Linux'#010+ @@ -1786,9 +1782,9 @@ const msgtxt : array[0..000357,1..240] of char=( '6*2Tmacosclassic_Classic Mac OS'#010+ '6*2Tpalmos_PalmOS'#010+ '8*2Tembedded_Embedded'#010+ - '8*2Tmsdos_MS-DOS (and compatible)'#010+ + '8*2Tmsdo','s_MS-DOS (and compatible)'#010+ '8*2Twin16_Windows 16 Bit'#010+ - 'A*2Tandroid_','Android'#010+ + 'A*2Tandroid_Android'#010+ 'A*2Taros_AROS'#010+ 'A*2Tdarwin_Darwin/iPhoneOS/iOS'#010+ 'A*2Tembedded_Embedded'#010+ @@ -1797,10 +1793,10 @@ const msgtxt : array[0..000357,1..240] of char=( 'A*2Tlinux_Linux'#010+ 'A*2Tnds_Nintendo DS'#010+ 'A*2Tnetbsd_NetBSD'#010+ - 'A*2Tpalmos_PalmOS'#010+ + 'A','*2Tpalmos_PalmOS'#010+ 'A*2Tsymbian_Symbian'#010+ 'A*2Twince_Windows CE'#010+ - 'a*2Ta','ndroid_Android'#010+ + 'a*2Tandroid_Android'#010+ 'a*2Tdarwin_Darwin/iOS'#010+ 'a*2Tlinux_Linux'#010+ 'a*2Twin64_Windows 64'#010+ @@ -1809,11 +1805,11 @@ const msgtxt : array[0..000357,1..240] of char=( 'm*2Tandroid_Android'#010+ 'm*2Tembedded_Embedded'#010+ 'm*2Tlinux_Linux'#010+ - 'M*2Tembedded_Embedded'#010+ + 'M*2Tembedde','d_Embedded'#010+ 'M*2Tlinux_Linux'#010+ 'P*2Taix_AIX'#010+ 'P*2Tamiga_AmigaOS'#010+ - 'P*2Tda','rwin_Darwin/Mac OS X'#010+ + 'P*2Tdarwin_Darwin/Mac OS X'#010+ 'P*2Tembedded_Embedded'#010+ 'P*2Tlinux_Linux'#010+ 'P*2Tmacosclassic_Classic Mac OS'#010+ @@ -1821,11 +1817,11 @@ const msgtxt : array[0..000357,1..240] of char=( 'P*2Tnetbsd_NetBSD'#010+ 'P*2Twii_Wii'#010+ 'p*2Taix_AIX'#010+ - 'p*2Tdarwin_Darwin/Mac OS X'#010+ + 'p*2Tdarwin_Darwin/Mac OS',' X'#010+ 'p*2Tembedded_Embedded'#010+ 'p*2Tlinux_Linux'#010+ 'R*2Tlinux_Linux'#010+ - 'R*2Tem','bedded_Embedded'#010+ + 'R*2Tembedded_Embedded'#010+ 'r*2Tlinux_Linux'#010+ 'r*2Tembedded_Embedded'#010+ 'S*2Tlinux_Linux'#010+ @@ -1834,155 +1830,158 @@ const msgtxt : array[0..000357,1..240] of char=( 'V*2Tembedded_Embedded'#010+ 'x*2Tembedded_Embedded'#010+ 'x*2Tfreertos_FreeRTOS'#010+ - 'x*2Tlinux_Linux'#010+ + 'x*2Tl','inux_Linux'#010+ 'Z*2Tembedded_Embedded'#010+ 'Z*2Tzxspectrum_ZX Spectrum'#010+ - 'Z*2','Tmsxdos_MSX-DOS'#010+ + 'Z*2Tmsxdos_MSX-DOS'#010+ '**1u<x>_Undefines the symbol <x>'#010+ '**1U_Unit options:'#010+ '**2Un_Do not check where the unit name matches the file name'#010+ - '**2Ur_Generate release unit files (never automatically recompiled)'#010+ + '**2Ur_Generate release unit files (never automat','ically recompiled)'#010+ '**2Us_Compile a system unit'#010+ - '**1v<x>_Be verbo','se. <x> is a combination of the following letters:'#010+ + '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+ '**2*_e : Show errors (default) 0 : Show nothing (except errors)'#010+ - '**2*_w : Show warnings u : Show unit info'#010+ - '**2*_n : Show notes t : Show tried/used files'#010, + '**2*_w : Show warnings u : Show unit info'#010, + '**2*_n : Show notes t : Show tried/used files'#010+ '**2*_h : Show hints c : Show conditionals'#010+ '**2*_i : Show general info d : Show debug info'#010+ - '**2*_l : Show linenumbers r : Rhide/GCC compatibility mode'#010+ - '**2*_s : Show time stamps q : Show message ','numbers'#010+ + '**2*_l : Show linenumbers r : Rhide/GCC compatibil','ity mod'+ + 'e'#010+ + '**2*_s : Show time stamps q : Show message numbers'#010+ '**2*_a : Show everything x : Show info about invoked tools'+ #010+ '**2*_b : Write file names messages p : Write tree.log with parse tre'+ 'e'#010+ - '**2*_ with full path v : Write fpcdebug.txt with'#010+ - '**2*_z : Write output to',' stderr lots of debugging info'#010+ + '**2*_ with full path ',' v : Write fpcdebug.txt with'#010+ + '**2*_z : Write output to stderr lots of debugging info'#010+ '**2*_m<x>,<y> : Do not show messages numbered <x> and <y>'#010+ 'F*1V<x>_Append '#039'-<x>'#039' to the used compiler binary name (e.g. f'+ 'or version)'#010+ - '**1W<x>_Target-specific options (targets)'#010+ - '3*2WA_Specify native type ','application (Windows)'#010+ + '**1W<','x>_Target-specific options (targets)'#010+ + '3*2WA_Specify native type application (Windows)'#010+ '4*2WA_Specify native type application (Windows)'#010+ 'A*2WA_Specify native type application (Windows)'#010+ '3*2Wb_Create a bundle instead of a library (Darwin)'#010+ - 'P*2Wb_Create a bundle instead of a library (Darwin)'#010+ - 'p*2Wb_Create a bun','dle instead of a library (Darwin)'#010+ + 'P*2Wb_C','reate a bundle instead of a library (Darwin)'#010+ + 'p*2Wb_Create a bundle instead of a library (Darwin)'#010+ 'a*2Wb_Create a bundle instead of a library (Darwin)'#010+ 'A*2Wb_Create a bundle instead of a library (Darwin)'#010+ - '4*2Wb_Create a bundle instead of a library (Darwin)'#010+ - '3*2WB_Create a relocatable image (Windows, Symbian',')'#010+ + '4*2Wb_Create a bundle instead of a libr','ary (Darwin)'#010+ + '3*2WB_Create a relocatable image (Windows, Symbian)'#010+ '3*2WB<x>_Set image base to <x> (Windows, Symbian)'#010+ '4*2WB_Create a relocatable image (Windows)'#010+ '4*2WB<x>_Set image base to <x> (Windows)'#010+ - 'A*2WB_Create a relocatable image (Windows, Symbian)'#010+ + 'A*2WB_Create a relocatable image (Windows',', Symbian)'#010+ 'A*2WB<x>_Set image base to <x> (Windows, Symbian)'#010+ - 'Z*','2WB<x>_Set image base to <x> (ZX Spectrum)'#010+ + 'Z*2WB<x>_Set image base to <x> (ZX Spectrum)'#010+ '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+ '4*2WC_Specify console type application (Windows)'#010+ - 'A*2WC_Specify console type application (Windows)'#010+ - 'P*2WC_Specify console type application ','(Classic Mac OS)'#010+ + 'A*2WC_Specify console typ','e application (Windows)'#010+ + 'P*2WC_Specify console type application (Classic Mac OS)'#010+ '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ '4*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ - 'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+ - '3*2We_Use external resources (Darwin)',#010+ + 'A*2WD_Use DEFFILE to export function','s of DLL or EXE (Windows)'#010+ + '3*2We_Use external resources (Darwin)'#010+ '4*2We_Use external resources (Darwin)'#010+ 'a*2We_Use external resources (Darwin)'#010+ 'A*2We_Use external resources (Darwin)'#010+ 'P*2We_Use external resources (Darwin)'#010+ - 'p*2We_Use external resources (Darwin)'#010+ - '3*2WF_Specify full-screen type application (EMX, ','OS/2)'#010+ + 'p*2We_Use external resou','rces (Darwin)'#010+ + '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+ '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+ '4*2WG_Specify graphic type application (Windows)'#010+ 'A*2WG_Specify graphic type application (Windows)'#010+ - 'P*2WG_Specify graphic type application (Classic Mac OS)'#010+ - '3*2Wi_Use internal r','esources (Darwin)'#010+ + 'P*2WG_Specify',' graphic type application (Classic Mac OS)'#010+ + '3*2Wi_Use internal resources (Darwin)'#010+ '4*2Wi_Use internal resources (Darwin)'#010+ 'a*2Wi_Use internal resources (Darwin)'#010+ 'A*2Wi_Use internal resources (Darwin)'#010+ 'P*2Wi_Use internal resources (Darwin)'#010+ - 'p*2Wi_Use internal resources (Darwin)'#010+ - '3*2WI_Turn on/off the usage of i','mport sections (Windows)'#010+ + 'p*2Wi_U','se internal resources (Darwin)'#010+ + '3*2WI_Turn on/off the usage of import sections (Windows)'#010+ '4*2WI_Turn on/off the usage of import sections (Windows)'#010+ 'A*2WI_Turn on/off the usage of import sections (Windows)'#010+ - '8*2Wh_Use huge code for units (ignored for models with CODE in a uniqu'+ - 'e segment)'#010+ - '8*2Wm<x>_Set memory ','model'#010+ + '8*2Wh_Use huge code for units (ignored',' for models with CODE in a uni'+ + 'que segment)'#010+ + '8*2Wm<x>_Set memory model'#010+ '8*3WmTiny_Tiny memory model'#010+ '8*3WmSmall_Small memory model (default)'#010+ '8*3WmMedium_Medium memory model'#010+ '8*3WmCompact_Compact memory model'#010+ '8*3WmLarge_Large memory model'#010+ - '8*3WmHuge_Huge memory model'#010+ - '3*2WM<x>_Minimum Mac OS X deployment versi','on: 10.4, 10.5.1, ... (Dar'+ - 'win)'#010+ + '8*3WmHu','ge_Huge memory model'#010+ + '3*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ + 'n)'#010+ '4*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ 'p*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ + 'n)'#010, + 'P*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+ 'n)'#010+ - 'P*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ...',' (Dar'+ - 'win)'#010+ '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+ - 'A*2Wp<x>_Specify the',' controller type; see fpc -i or fpc -iu for poss'+ - 'ible values'#010+ + 'A*2WN_Do not generate reloc','ation code, needed for debugging (Windows'+ + ')'#010+ + 'A*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+ + 'le values'#010+ 'm*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ - 'R*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+ - 'le values'#010+ - 'V*2Wp<x>_Specify the',' controller type; see fpc -i or fpc -iu for poss'+ + 'R*2Wp<x>_Specify the controller type;',' see fpc -i or fpc -iu for poss'+ 'ible values'#010+ + 'V*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+ + 'le values'#010+ 'x*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+ 'le values'#010+ - '3*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+ - '4*2WP<x>_Minimum iOS deployment',' version: 8.0, 8.0.2, ... (iphonesim)'+ + '3*2WP<x>_Minimum iOS deployment versi','on: 3.0, 5.0.1, ... (iphonesim)'+ #010+ + '4*2WP<x>_Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)'#010+ 'a*2WP<x>_Minimum iOS deployment version: 7.0, 7.1.2, ... (Darwin)'#010+ 'A*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+ - '3*2WR_Generate relocation code (Windows)'#010+ - '4*2WR_Generate relocation cod','e (Windows)'#010+ + '3*2WR_G','enerate relocation code (Windows)'#010+ + '4*2WR_Generate relocation code (Windows)'#010+ 'A*2WR_Generate relocation code (Windows)'#010+ '8*2Wt<x>_Set the target executable format'#010+ '8*3Wtexe_Create a DOS .EXE file (default)'#010+ - '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+ - 'P*2WT_Specify MPW tool type application (C','lassic Mac OS)'#010+ + '8*3Wtcom_Create a DOS .COM file (require','s tiny memory model)'#010+ + 'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+ '**2WX_Enable executable stack (Linux)'#010+ '**1X_Executable options:'#010+ '**2X9_Generate linkerscript for GNU Binutils ld older than version 2.1'+ '9.1 (Linux)'#010+ - '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+ - 'ux)'#010+ - '**2Xd_','Do not search default library path (sometimes required for cro'+ - 'ss-compiling when not using -XR)'#010+ + '**2Xc_Pass --shar','ed/-dynamic to the linker (BeOS, Darwin, FreeBSD, L'+ + 'inux)'#010+ + '**2Xd_Do not search default library path (sometimes required for cross'+ + '-compiling when not using -XR)'#010+ '**2Xe_Use external linker'#010+ - '**2Xf_Substitute pthread library name for linking (BSD)'#010+ - '**2Xg_Create debuginfo in a separate file and add a debuglink s','ectio'+ - 'n to executable'#010+ + '**2Xf_Substitute pthread library name for linking (BSD)'#010, + '**2Xg_Create debuginfo in a separate file and add a debuglink section '+ + 'to executable'#010+ '**2XD_Try to link units dynamically (defines FPC_LINK_DYNAMIC)'#010+ '**2Xi_Use internal linker'#010+ - 'L*2XlS<x>_LLVM utilties suffix (e.g. -7 in case clang is called clang-'+ - '7)'#010+ + 'L*2XlS<x>_LLVM utilties suffix (e.g. -7 in case clang is calle','d clan'+ + 'g-7)'#010+ '**2XLA_Define library substitutions for linking'#010+ - '**2X','LO_Define order of library linking'#010+ + '**2XLO_Define order of library linking'#010+ '**2XLD_Exclude default order of standard libraries'#010+ '**2Xm_Generate link map'#010+ '**2XM<x>_Set the name of the '#039'main'#039' program routine (default i'+ - 's '#039'main'#039')'#010+ - '**2Xn_Use target system native linker instead of GNU ld (S','olaris, AI'+ - 'X)'#010+ + 's '#039'ma','in'#039')'#010+ + '**2Xn_Use target system native linker instead of GNU ld (Solaris, AIX)'+ + #010+ 'F*2Xp<x>_First search for the compiler binary in the directory <x>'#010+ '**2XP<x>_Prepend the binutils names with the prefix <x>'#010+ - '**2Xr<x>_Set the linker'#039's rlink-path to <x> (needed for cross comp'+ - 'ile, see the ld manual for more inform','ation) (BeOS, Linux)'#010+ + '**2Xr<x>_Set the linker'#039's rlink-path to <','x> (needed for cross co'+ + 'mpile, see the ld manual for more information) (BeOS, Linux)'#010+ '**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+ ', Linux, Mac OS, Solaris)'#010+ '**2Xs_Strip all symbols from executable'#010+ - '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+ - '**2Xt_Link wi','th static libraries (-static is passed to linker)'#010+ + '**2XS_Try to link un','its statically (default, defines FPC_LINK_STATIC'+ + ')'#010+ + '**2Xt_Link with static libraries (-static is passed to linker)'#010+ '**2Xv_Generate table for Virtual Entry calls'#010+ '**2XV_Use VLink as external linker (default on Amiga, MorphOS)'#010+ - '**2XX_Try to smartlink units (defines FPC_LINK_SMART)'#010+ + '**2XX_Try to ','smartlink units (defines FPC_LINK_SMART)'#010+ '**1*_'#010+ - '**1?','_Show this help'#010+ + '**1?_Show this help'#010+ '**1h_Shows this help without waiting' ); diff --git a/compiler/ngenutil.pas b/compiler/ngenutil.pas index de3b0eb03a..0c53dbfec0 100644 --- a/compiler/ngenutil.pas +++ b/compiler/ngenutil.pas @@ -105,9 +105,9 @@ interface class procedure insertbsssym(list: tasmlist; sym: tstaticvarsym; size: asizeint; varalign: shortint; _typ: Tasmsymtype); virtual; { initialization of iso styled program parameters } - class procedure initialize_textrec(p : TObject; statn : pointer); + class procedure initialize_filerecs(p : TObject; statn : pointer); { finalization of iso styled program parameters } - class procedure finalize_textrec(p : TObject; statn : pointer); + class procedure finalize_filerecs(p : TObject; statn : pointer); public class procedure insertbssdata(sym : tstaticvarsym); virtual; @@ -546,49 +546,83 @@ implementation end; - class procedure tnodeutils.initialize_textrec(p:TObject;statn:pointer); + class procedure tnodeutils.initialize_filerecs(p:TObject;statn:pointer); var stat: ^tstatementnode absolute statn; begin if (tsym(p).typ=staticvarsym) and - (tstaticvarsym(p).vardef.typ=filedef) and - (tfiledef(tstaticvarsym(p).vardef).filetyp=ft_text) and - (tstaticvarsym(p).isoindex<>0) then - begin - if cs_transparent_file_names in current_settings.globalswitches then - addstatement(stat^,ccallnode.createintern('fpc_textinit_filename_iso', - ccallparanode.create( - cstringconstnode.createstr(tstaticvarsym(p).Name), - ccallparanode.create( - cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false), - ccallparanode.create( - cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), - nil))))) - else - addstatement(stat^,ccallnode.createintern('fpc_textinit_iso', - ccallparanode.create( - cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false), - ccallparanode.create( - cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), - nil)))); - end; + (tstaticvarsym(p).vardef.typ=filedef) and + (tstaticvarsym(p).isoindex<>0) then + case tfiledef(tstaticvarsym(p).vardef).filetyp of + ft_text: + begin + if cs_transparent_file_names in current_settings.globalswitches then + addstatement(stat^,ccallnode.createintern('fpc_textinit_filename_iso', + ccallparanode.create( + cstringconstnode.createstr(tstaticvarsym(p).Name), + ccallparanode.create( + cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false), + ccallparanode.create( + cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), + nil))))) + else + addstatement(stat^,ccallnode.createintern('fpc_textinit_iso', + ccallparanode.create( + cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false), + ccallparanode.create( + cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), + nil)))); + end; + ft_typed: + begin + if cs_transparent_file_names in current_settings.globalswitches then + addstatement(stat^,ccallnode.createintern('fpc_typedfile_init_filename_iso', + ccallparanode.create( + cstringconstnode.createstr(tstaticvarsym(p).Name), + ccallparanode.create( + cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false), + ccallparanode.create( + cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), + nil))))) + else + addstatement(stat^,ccallnode.createintern('fpc_typedfile_init_iso', + ccallparanode.create( + cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false), + ccallparanode.create( + cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), + nil)))); + end; + else + ; + end; end; - class procedure tnodeutils.finalize_textrec(p:TObject;statn:pointer); + class procedure tnodeutils.finalize_filerecs(p:TObject;statn:pointer); var stat: ^tstatementnode absolute statn; begin if (tsym(p).typ=staticvarsym) and - (tstaticvarsym(p).vardef.typ=filedef) and - (tfiledef(tstaticvarsym(p).vardef).filetyp=ft_text) and - (tstaticvarsym(p).isoindex<>0) then - begin - addstatement(stat^,ccallnode.createintern('fpc_textclose_iso', - ccallparanode.create( - cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), - nil))); - end; + (tstaticvarsym(p).vardef.typ=filedef) and + (tstaticvarsym(p).isoindex<>0) then + case tfiledef(tstaticvarsym(p).vardef).filetyp of + ft_text: + begin + addstatement(stat^,ccallnode.createintern('fpc_textclose_iso', + ccallparanode.create( + cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), + nil))); + end; + ft_typed: + begin + addstatement(stat^,ccallnode.createintern('fpc_typedfile_close_iso', + ccallparanode.create( + cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner), + nil))); + end; + else + ; + end; end; @@ -637,9 +671,9 @@ implementation (pd.proctypeoption=potype_proginit) then begin block:=internalstatements(stat); - pd.localst.SymList.ForEachCall(@initialize_textrec,@stat); + pd.localst.SymList.ForEachCall(@initialize_filerecs,@stat); addstatement(stat,result); - pd.localst.SymList.ForEachCall(@finalize_textrec,@stat); + pd.localst.SymList.ForEachCall(@finalize_filerecs,@stat); result:=block; end; diff --git a/compiler/ninl.pas b/compiler/ninl.pas index d6be47f9d0..5c70bed2c2 100644 --- a/compiler/ninl.pas +++ b/compiler/ninl.pas @@ -765,7 +765,14 @@ implementation else case para.left.resultdef.typ of stringdef : - name:=procprefixes[do_read]+tstringdef(para.left.resultdef).stringtypname; + begin + name:=procprefixes[do_read]+tstringdef(para.left.resultdef).stringtypname; + if (m_isolike_io in current_settings.modeswitches) and (tstringdef(para.left.resultdef).stringtype<>st_shortstring) then + begin + CGMessagePos(para.fileinfo,type_e_cant_read_write_type_in_iso_mode); + error_para := true; + end; + end; pointerdef : begin if (not is_pchar(para.left.resultdef)) or do_read then diff --git a/compiler/ogcoff.pas b/compiler/ogcoff.pas index 8c05b3792a..ce4256a803 100644 --- a/compiler/ogcoff.pas +++ b/compiler/ogcoff.pas @@ -914,6 +914,64 @@ const pemagic : array[0..3] of byte = ( end; + function encodeBase64(p:aword):string; + const + alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + + 'abcdefghijklmnopqrstuvwxyz' + + '0123456789+/'; + var + i, + idx, + rem : longint; + begin + setlength(result,6); + + idx := 6; + for i:=0 to 5 do + begin + rem:=p mod 64; + p:=p div 64; + result[idx]:=alphabet[rem+1]; + dec(idx); + end; + + if p<>0 then + internalerror(2020091601); + end; + + + function decodeBase64(const s:string;out p:longint):boolean; + var + i : longint; + v : aword; + begin + if length(s)>6 then + exit(false); + + p:=0; + for i:=1 to length(s) do + begin + v:=0; + if (s[i]>='A') and (s[i]<='Z') then // 0..25 + v:=Ord(s[i])-Ord('A') + else if (s[i]>='a') and (s[i]<='z') then // 26..51 + v:=Ord(s[i])-Ord('a')+26 + else if (s[i]>='0') and (s[i]<='9') then // 52..61 + v:=Ord(s[i])-Ord('0')+52 + else if s[i]='+' then // 62 + v:=62 + else if s[i]='/' then // 63 + v:=63 + else + exit(false); + + p:=(p*64)+v; + end; + + result:=true; + end; + + {**************************************************************************** TCoffObjSection ****************************************************************************} @@ -1652,7 +1710,12 @@ const pemagic : array[0..3] of byte = ( strpos:=FCoffStrs.size+4; FCoffStrs.writestr(s); FCoffStrs.writestr(#0); - s:='/'+ToStr(strpos); + if strpos>=10000000 then + s:='//'+encodeBase64(strpos) + else + s:='/'+ToStr(strpos); + if length(s)>8 then + internalerror(2020091501); end; move(s[1],sechdr.name,length(s)); if not win32 then @@ -2323,13 +2386,26 @@ const pemagic : array[0..3] of byte = ( secname:=strpas(secnamebuf); if secname[1]='/' then begin - Val(Copy(secname,2,8),strpos,code); - if code=0 then - secname:=Read_str(strpos) + if secname[2]='/' then + begin + if not decodeBase64(copy(secname,3,8),strpos) then + begin + InputError('Error reading COFF Section Headers'); + secname:='error'; + end + else + secname:=Read_str(strpos); + end else begin - InputError('Error reading COFF Section Headers'); - secname:='error'; + Val(Copy(secname,2,8),strpos,code); + if code=0 then + secname:=Read_str(strpos) + else + begin + InputError('Error reading COFF Section Headers'); + secname:='error'; + end; end; end; if win32 then diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas index 301379df75..e36e7b3e17 100644 --- a/compiler/x86/aoptx86.pas +++ b/compiler/x86/aoptx86.pas @@ -1090,8 +1090,7 @@ unit aoptx86; else Internalerror(2017050701) end; - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end; end; end; @@ -1383,8 +1382,7 @@ unit aoptx86; (getregtype(tai_regalloc(hp2).reg) = R_INTREGISTER) and (getsupreg(tai_regalloc(hp2).reg) = supreg) then begin - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); break; end; until not(assigned(hp2)) or regInInstruction(newreg(R_INTREGISTER,supreg,R_SUBWHOLE),hp2); @@ -1444,8 +1442,7 @@ unit aoptx86; begin DebugMsg(SPeepholeOptimization + '(V)MOVA*(V)MOVA*2(V)MOVA* 1',p); taicpu(p).loadoper(1,taicpu(hp1).oper[1]^); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); result:=true; exit; end @@ -1457,8 +1454,7 @@ unit aoptx86; else if MatchOperand(taicpu(p).oper[0]^,taicpu(hp1).oper[1]^) then begin DebugMsg(SPeepholeOptimization + '(V)MOVA*(V)MOVA*2(V)MOVA* 2',p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); result:=true; exit; end @@ -1482,8 +1478,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization + '(V)MOVA*(V)MOVS*2(V)MOVS* 1',p); taicpu(p).opcode:=taicpu(hp1).opcode; taicpu(p).loadoper(1,taicpu(hp1).oper[1]^); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); result:=true; exit; end @@ -1566,8 +1561,7 @@ unit aoptx86; begin taicpu(hp1).loadoper(2,taicpu(p).oper[0]^); RemoveCurrentP(p, hp1); // <-- Is this actually safe? hp1 is not necessarily the next instruction. [Kit] - asml.Remove(hp2); - hp2.Free; + RemoveInstruction(hp2); end; end else if (hp1.typ = ait_instruction) and @@ -1606,8 +1600,7 @@ unit aoptx86; RemoveCurrentP(p, nil); p:=hp1; taicpu(hp1).loadoper(1, taicpu(hp2).oper[1]^); - asml.remove(hp2); - hp2.Free; + RemoveInstruction(hp2); result:=true; end; end; @@ -1643,8 +1636,7 @@ unit aoptx86; begin taicpu(p).loadoper(2,taicpu(hp1).oper[1]^); DebugMsg(SPeepholeOptimization + 'VOpVmov2VOp done',p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); result:=true; end; end; @@ -1972,9 +1964,7 @@ unit aoptx86; begin { We can remove the original MOV } DebugMsg(SPeepholeOptimization + 'Mov2Nop 3 done',p); - Asml.Remove(p); - p.Free; - p := hp1; + RemoveCurrentp(p, hp1); { TmpUsedRegs contains the results of "UpdateUsedRegs(tai(p.Next))" already, so just restore it to UsedRegs instead of calculating it again } @@ -2042,8 +2032,7 @@ unit aoptx86; begin GetNextInstruction_p := GetNextInstruction(hp1, hp2); DebugMsg(SPeepholeOptimization + 'Mov2Nop 4 done',hp1); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); { The instruction after what was hp1 is now the immediate next instruction, so we can continue to make optimisations if it's present } @@ -2130,8 +2119,7 @@ unit aoptx86; InternalError(2020021001); end; DebugMsg(SPeepholeOptimization + 'MovMovXX2MovXX 2 done',p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); Result := True; Exit; end; @@ -2186,8 +2174,7 @@ unit aoptx86; and ffffffffh, %reg } DebugMsg(SPeepholeOptimization + 'MovAnd2Mov 1 done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; exit; end; @@ -2199,8 +2186,7 @@ unit aoptx86; and ffffffffffffffffh, %reg } DebugMsg(SPeepholeOptimization + 'MovAnd2Mov 2 done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; exit; end; @@ -2225,8 +2211,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization + 'MovAndTest2Test done',p); taicpu(hp1).loadoper(1,taicpu(p).oper[0]^); taicpu(hp1).opcode:=A_TEST; - asml.Remove(hp2); - hp2.free; + RemoveInstruction(hp2); RemoveCurrentP(p, hp1); Result:=true; exit; @@ -2325,8 +2310,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization + PreMessage + '; and' + debug_opsize2str(taicpu(hp1).opsize) + ' $' + MaskNum + ',' + RegName2 + ' -> movz' + debug_opsize2str(NewSize) + ' ' + InputVal + ',' + RegName2, p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); end; Result := True; @@ -2375,8 +2359,7 @@ unit aoptx86; AllocRegBetween(taicpu(hp1).oper[1]^.reg,p,hp1,usedregs); taicpu(p).loadOper(1,taicpu(hp1).oper[1]^); DebugMsg(SPeepholeOptimization + 'MovMov2Mov 5 done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; Exit; end; @@ -2394,8 +2377,7 @@ unit aoptx86; } taicpu(p).loadreg(1, taicpu(hp1).oper[1]^.reg); DebugMsg(SPeepholeOptimization + 'MovMov2Mov 3 done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; Exit; end; @@ -2438,8 +2420,7 @@ unit aoptx86; if taicpu(p).oper[0]^.typ=top_reg then AllocRegBetween(taicpu(p).oper[0]^.reg,p,hp1,usedregs); DebugMsg(SPeepholeOptimization + 'MovMov2Mov 1',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; exit; end @@ -2462,8 +2443,7 @@ unit aoptx86; cmp mem1, reg1 } begin - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); taicpu(hp1).opcode := A_CMP; taicpu(hp1).loadref(1,taicpu(hp1).oper[0]^.ref^); taicpu(hp1).loadreg(0,taicpu(p).oper[0]^.reg); @@ -2502,8 +2482,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization + 'MovMovMov2MovMov 1 done',p); taicpu(p).loadoper(1,taicpu(hp2).oper[1]^); taicpu(hp1).loadoper(0,taicpu(hp2).oper[1]^); - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); end {$ifdef i386} { this is enabled for i386 only, as the rules to create the reg sets below @@ -2548,8 +2527,7 @@ unit aoptx86; end else begin - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); end {$endif i386} ; @@ -2663,13 +2641,11 @@ unit aoptx86; begin DebugMsg(SPeepholeOptimization + debug_regname(CurrentReg) + ' = ' + RegName1 + '; removed unnecessary instruction (MovMov2MovNop 6b}',hp2); AllocRegBetween(CurrentReg, p, hp2, UsedRegs); - asml.remove(hp2); - hp2.Free; + RemoveInstruction(hp2); end else begin - asml.remove(hp2); - hp2.Free; + RemoveInstruction(hp2); { We can remove the original MOV too } DebugMsg(SPeepholeOptimization + 'MovMov2NopNop 6b done',p); @@ -2769,8 +2745,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization + 'Removed movs/z instruction and extended earlier write (MovMovs/z2Mov/s/z)', hp2); AllocRegBetween(taicpu(hp2).oper[1]^.reg, p, hp2, UsedRegs); - AsmL.Remove(hp2); - hp2.Free; + RemoveInstruction(hp2); Result := True; Exit; @@ -2800,8 +2775,7 @@ unit aoptx86; and ffffffffh, %reg } DebugMsg(SPeepholeOptimization + 'MovAnd2Mov 3 done',p); - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); Result:=true; exit; end; @@ -2833,9 +2807,7 @@ unit aoptx86; ) ) then begin - asml.remove(p); - p.free; - p:=hp1; + RemoveCurrentp(p, hp1); DebugMsg(SPeepholeOptimization + 'removed deadstore before leave/ret',p); RemoveLastDeallocForFuncRes(p); Result:=true; @@ -2975,8 +2947,7 @@ unit aoptx86; -> decw %si addw %dx,%si p } - asml.remove(hp2); - hp2.Free; + RemoveInstruction(hp2); RemoveCurrentP(p, hp1); Result:=True; Exit; @@ -3060,8 +3031,7 @@ unit aoptx86; -> decw %si addw %dx,%si p } - asml.remove(hp2); - hp2.Free; + RemoveInstruction(hp2); end; end; @@ -3080,9 +3050,7 @@ unit aoptx86; Taicpu(hp2).opcode:=A_MOV; asml.remove(hp1); insertllitem(hp2,hp2.next,hp1); - asml.remove(p); - p.free; - p:=hp1; + RemoveCurrentp(p, hp1); Result:=true; exit; end; @@ -3124,15 +3092,15 @@ unit aoptx86; if (taicpu(p).oper[1]^.typ=top_reg) and not(RegUsedAfterInstruction(taicpu(p).oper[1]^.reg,hp1,UsedRegs)) then begin - asml.remove(p); - p.free; - GetNextInstruction(hp1,p); DebugMsg(SPeepholeOptimization + 'MovXXMovXX2Nop 1 done',p); + RemoveInstruction(hp1); + RemoveCurrentp(p); { p will now be equal to the instruction that follows what was hp1 } end else - DebugMsg(SPeepholeOptimization + 'MovXXMovXX2MoVXX 1 done',p); - asml.remove(hp1); - hp1.free; + begin + DebugMsg(SPeepholeOptimization + 'MovXXMovXX2MoVXX 1 done',p); + RemoveInstruction(hp1); + end; Result:=true; exit; end @@ -3171,8 +3139,7 @@ unit aoptx86; taicpu(p).loadoper(0,taicpu(hp1).oper[0]^); taicpu(p).loadoper(1,taicpu(hp1).oper[1]^); DebugMsg(SPeepholeOptimization + 'OpMov2Op done',p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); result:=true; end; end; @@ -3243,8 +3210,7 @@ unit aoptx86; begin taicpu(p).loadoper(1,taicpu(hp1).oper[1]^); DebugMsg(SPeepholeOptimization + 'LeaMov2Lea done',p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); result:=true; end; end; @@ -3403,16 +3369,14 @@ unit aoptx86; MatchOperand(taicpu(hp1).oper[0]^,taicpu(p).oper[1]^) then begin taicpu(p).loadConst(0,taicpu(p).oper[0]^.val+1); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end; A_SUB: if MatchOpType(taicpu(hp1),top_const,top_reg) and MatchOperand(taicpu(hp1).oper[1]^,taicpu(p).oper[1]^) then begin taicpu(p).loadConst(0,taicpu(p).oper[0]^.val+taicpu(hp1).oper[0]^.val); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end; A_ADD: begin @@ -3420,13 +3384,11 @@ unit aoptx86; MatchOperand(taicpu(hp1).oper[1]^,taicpu(p).oper[1]^) then begin taicpu(p).loadConst(0,taicpu(p).oper[0]^.val-taicpu(hp1).oper[0]^.val); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); if (taicpu(p).oper[0]^.val = 0) then begin hp1 := tai(p.next); - asml.remove(p); - p.free; + RemoveInstruction(p); { Note, the choice to not use RemoveCurrentp is deliberate } if not GetLastInstruction(hp1, p) then p := hp1; DoSubAddOpt := True; @@ -3474,9 +3436,7 @@ unit aoptx86; if taicpu(hp1).oper[0]^.typ=top_reg then setsubreg(taicpu(hp1).oper[0]^.reg,R_SUBWHOLE); hp1 := tai(p.next); - asml.remove(p); - p.free; - p := hp1; + RemoveCurrentp(p, hp1); Result:=true; exit; end; @@ -3546,8 +3506,7 @@ unit aoptx86; if taicpu(hp1).oper[0]^.ref^.scalefactor<>0 then tmpref.scalefactor:=tmpref.scalefactor*taicpu(hp1).oper[0]^.ref^.scalefactor; TmpRef.base := taicpu(hp1).oper[0]^.ref^.base; - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end end else if (taicpu(hp1).oper[0]^.typ = Top_Const) then @@ -3562,8 +3521,7 @@ unit aoptx86; else internalerror(2019050536); end; - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end else if (taicpu(hp1).oper[0]^.typ = Top_Reg) and @@ -3584,8 +3542,7 @@ unit aoptx86; else internalerror(2019050535); end; - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end; end; if TmpBool2 @@ -3715,14 +3672,12 @@ unit aoptx86; { Don't remove the 'mov' instruction if its register is used elsewhere } if not(RegUsedAfterInstruction(taicpu(hp1).oper[1]^.reg, hp2, TmpUsedRegs)) then begin - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); Result := True; end; { Only set Result to True if the 'mov' instruction was removed } - asml.Remove(hp2); - hp2.Free; + RemoveInstruction(hp2); end; end else @@ -3734,8 +3689,7 @@ unit aoptx86; if not(RegUsedAfterInstruction(NR_DEFAULTFLAGS, hp1, TmpUsedRegs)) then begin DebugMsg(SPeepholeOptimization + 'ShlAnd2Shl', p); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); Result := True; end; end; @@ -3825,8 +3779,7 @@ unit aoptx86; Exit; end; - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); if Unconditional then MakeUnconditional(taicpu(hp2)) @@ -3840,11 +3793,8 @@ unit aoptx86; if not RegUsedAfterInstruction(taicpu(p).oper[0]^.reg, hp2, TmpUsedRegs) then begin - asml.Remove(p); - UpdateUsedRegs(next); - p.Free; + RemoveCurrentp(p, hp2); Result := True; - p := hp2; end; DebugMsg(SPeepholeOptimization + 'SETcc/TESTCmp/Jcc -> Jcc',p); @@ -3879,11 +3829,8 @@ unit aoptx86; (taicpu(p).oper[0]^.ref^.offset < tabstractnormalvarsym(current_procinfo.procdef.funcretsym).localloc.reference.offset)) and (taicpu(p).oper[0]^.ref^.index = NR_NO) then begin - asml.remove(p); - asml.remove(hp1); - p.free; - hp1.free; - p := hp2; + RemoveInstruction(hp1); + RemoveCurrentP(p, hp2); RemoveLastDeallocForFuncRes(p); Result := true; end @@ -3896,8 +3843,7 @@ unit aoptx86; if (taicpu(p).opcode = A_FSTP) then taicpu(p).opcode := A_FST else taicpu(p).opcode := A_FIST; - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end *) end; @@ -3937,9 +3883,7 @@ unit aoptx86; end; taicpu(hp1).oper[0]^.reg := taicpu(p).oper[0]^.reg; taicpu(hp1).oper[1]^.reg := NR_ST; - asml.remove(p); - p.free; - p := hp1; + RemoveCurrentP(p, hp1); Result:=true; exit; end; @@ -3967,9 +3911,7 @@ unit aoptx86; faddp/ fmul st, st fmulp st, st1 (hp2) } begin - asml.remove(p); - p.free; - p := hp1; + RemoveCurrentP(p, hp1); if (taicpu(hp2).opcode = A_FADDP) then taicpu(hp2).opcode := A_FADD else @@ -4004,8 +3946,7 @@ unit aoptx86; else internalerror(2019050533); end; - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); end else ; @@ -4055,8 +3996,7 @@ unit aoptx86; begin DebugMsg(SPeepholeOptimization + 'Cmpcc2Testcc - condition B/C/NAE/O --> Never (jump removed)', hp1); TAsmLabel(taicpu(hp1).oper[0]^.ref^.symbol).decrefs; - AsmL.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); { Since hp1 was deleted, hp2 must not be updated } Continue; end @@ -4221,8 +4161,7 @@ unit aoptx86; MatchOperand(taicpu(hp1).oper[0]^,taicpu(hp1).oper[1]^) then begin DebugMsg(SPeepholeOptimization + 'PXorPXor2PXor done',hp1); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); Result:=true; Exit; end; @@ -4249,8 +4188,7 @@ unit aoptx86; MatchOperand(taicpu(hp1).oper[0]^,taicpu(hp1).oper[1]^,taicpu(hp1).oper[2]^) then begin DebugMsg(SPeepholeOptimization + 'VPXorVPXor2PXor done',hp1); - asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); Result:=true; Exit; end; @@ -4348,8 +4286,7 @@ unit aoptx86; taicpu(p).opcode := A_LEA; taicpu(p).loadref(0, NewRef); - Asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); Result := True; Exit; @@ -4379,9 +4316,7 @@ unit aoptx86; not RegUsedAfterInstruction(taicpu(p).oper[1]^.reg, hp1, TmpUsedRegs) then begin - asml.remove(p); - p.free; - p := hp1; + RemoveCurrentP(p, hp1); Result:=true; end; @@ -4420,12 +4355,9 @@ unit aoptx86; AllocRegBetween(taicpu(hp2).oper[1]^.reg, p, hp1, UsedRegs); taicpu(hp1).opcode := A_XCHG; - asml.Remove(p); - asml.Remove(hp2); - p.Free; - hp2.Free; + RemoveCurrentP(p, hp1); + RemoveInstruction(hp2); - p := hp1; Result := True; Exit; end; @@ -4449,8 +4381,7 @@ unit aoptx86; cltd } DebugMsg(SPeepholeOptimization + 'MovSar2Cltd', p); - Asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); taicpu(p).opcode := A_CDQ; taicpu(p).opsize := S_NO; taicpu(p).clearop(1); @@ -4531,8 +4462,7 @@ unit aoptx86; taicpu(p).clearop(0); taicpu(p).ops:=0; - AsmL.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); taicpu(hp2).loadreg(0, NR_EDX); taicpu(hp2).loadreg(1, NR_EAX); @@ -4578,8 +4508,7 @@ unit aoptx86; cqto } DebugMsg(SPeepholeOptimization + 'MovSar2Cqto', p); - Asml.Remove(hp1); - hp1.Free; + RemoveInstruction(hp1); taicpu(p).opcode := A_CQO; taicpu(p).opsize := S_NO; taicpu(p).clearop(1); @@ -4660,8 +4589,7 @@ unit aoptx86; taicpu(hp1).clearop(0); taicpu(hp1).ops:=0; - AsmL.Remove(hp2); - hp2.Free; + RemoveInstruction(hp2); (* {$ifdef x86_64} end @@ -4708,8 +4636,7 @@ unit aoptx86; taicpu(hp1).clearop(0); taicpu(hp1).ops:=0; - AsmL.Remove(hp2); - hp2.Free; + RemoveInstruction(hp2); {$endif x86_64} *) end; @@ -4799,8 +4726,7 @@ unit aoptx86; taicpu(hp1).opcode := A_ADD; { Delete old ADD/LEA instruction } - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); { Convert "shrq $1, reg1q" to "rcr $1, reg1d" } taicpu(hp3).opcode := A_RCR; @@ -4839,8 +4765,7 @@ unit aoptx86; taicpu(p).loadreg(2,taicpu(p).oper[1]^.reg); taicpu(p).loadreg(1,taicpu(hp1).oper[0]^.reg); DebugMsg(SPeepholeOptimization + 'MovImul2Imul done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); result:=true; end; end; @@ -5270,8 +5195,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization+'JccMov2CMov',p); { Remove the original jump } - asml.Remove(p); - p.Free; + RemoveInstruction(p); { Note, the choice to not use RemoveCurrentp is deliberate } GetNextInstruction(hp2, p); { Instruction after the label } @@ -5369,8 +5293,7 @@ unit aoptx86; DebugMsg(SPeepholeOptimization+'JccMovJmpMov2CMovCMov',hp1); { remove jCC } - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); { Now we can safely decrement it } tasmlabel(symbol).decrefs; @@ -5381,8 +5304,7 @@ unit aoptx86; { remove jmp } symbol := taicpu(hp2).oper[0]^.ref^.symbol; - asml.remove(hp2); - hp2.free; + RemoveInstruction(hp2); { As before, now we can safely decrement it } tasmlabel(symbol).decrefs; @@ -5483,11 +5405,8 @@ unit aoptx86; decw %si addw %dx,%si p } DebugMsg(SPeepholeOptimization + 'var3',p); - asml.remove(p); - asml.remove(hp2); - p.free; - hp2.free; - p:=hp1; + RemoveCurrentP(p, hp1); + RemoveInstruction(hp2); end else if reg_and_hp1_is_instr and (taicpu(hp1).opcode = A_MOV) and @@ -5525,8 +5444,7 @@ unit aoptx86; else {$endif x86_64} taicpu(p).loadreg(1,taicpu(hp1).oper[1]^.reg); - asml.remove(hp1); - hp1.Free; + RemoveInstruction(hp1); end; end else if reg_and_hp1_is_instr and @@ -5571,15 +5489,13 @@ unit aoptx86; if (taicpu(hp1).oper[0]^.val = $ff) then begin DebugMsg(SPeepholeOptimization + 'var4',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end; S_WL{$ifdef x86_64}, S_WQ{$endif x86_64}: if (taicpu(hp1).oper[0]^.val = $ffff) then begin DebugMsg(SPeepholeOptimization + 'var5',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); end; {$ifdef x86_64} S_LQ: @@ -5587,8 +5503,7 @@ unit aoptx86; begin if (cs_asm_source in current_settings.globalswitches) then asml.insertbefore(tai_comment.create(strpnew(SPeepholeOptimization + 'var6')),p); - asml.remove(hp1); - hp1.Free; + RemoveInstruction(hp1); end; {$endif x86_64} else @@ -5781,9 +5696,7 @@ unit aoptx86; begin taicpu(hp1).loadConst(0, taicpu(p).oper[0]^.val and taicpu(hp1).oper[0]^.val); DebugMsg(SPeepholeOptimization + 'AndAnd2And done',hp1); - asml.remove(p); - p.Free; - p:=hp1; + RemoveCurrentP(p, hp1); Result:=true; exit; end @@ -5819,8 +5732,7 @@ unit aoptx86; } DebugMsg(SPeepholeOptimization + 'AndMovzToAnd done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Exit; end; end @@ -5880,8 +5792,7 @@ unit aoptx86; then begin DebugMsg(SPeepholeOptimization + 'AndMovsxToAnd',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Exit; end; end @@ -6074,10 +5985,8 @@ unit aoptx86; taicpu(hp1).is_jmp := true; DebugMsg(SPeepholeOptimization + 'LeaCallLeaRet2Jmp done',p); RemoveCurrentP(p, hp4); - AsmL.Remove(hp2); - hp2.free; - AsmL.Remove(hp3); - hp3.free; + RemoveInstruction(hp2); + RemoveInstruction(hp3); Result:=true; end; end; @@ -6127,10 +6036,8 @@ unit aoptx86; taicpu(hp1).is_jmp := true; DebugMsg(SPeepholeOptimization + 'PushCallPushRet2Jmp done',p); RemoveCurrentP(p, hp4); - AsmL.Remove(hp2); - hp2.free; - AsmL.Remove(hp3); - hp3.free; + RemoveInstruction(hp2); + RemoveInstruction(hp3); Result:=true; end; {$endif x86_64} @@ -6283,10 +6190,7 @@ unit aoptx86; ((taicpu(hp1).opcode <> A_ADD) and (taicpu(hp1).opcode <> A_SUB))) then begin - hp1 := tai(p.next); - asml.remove(p); - p.free; - p := tai(hp1); + RemoveCurrentP(p, hp2); Result:=true; end; end; @@ -6302,10 +6206,7 @@ unit aoptx86; { and in case of carry for A(E)/B(E)/C/NC } (taicpu(hp2).condition in [C_Z,C_NZ,C_E,C_NE]) then begin - hp1 := tai(p.next); - asml.remove(p); - p.free; - p := tai(hp1); + RemoveCurrentP(p, hp2); Result:=true; end; end; @@ -6333,10 +6234,7 @@ unit aoptx86; else ; end; - hp1 := tai(p.next); - asml.remove(p); - p.free; - p := tai(hp1); + RemoveCurrentP(p, hp2); Result:=true; end; end @@ -6373,8 +6271,7 @@ unit aoptx86; InsertLLItem(p.previous, p, hp2); taicpu(p).opcode := A_JMP; taicpu(p).is_jmp := true; - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; end else @@ -6405,8 +6302,7 @@ unit aoptx86; end else DebugMsg(SPeepholeOptimization + 'CallRet2Call done',p); - asml.remove(hp1); - hp1.free; + RemoveInstruction(hp1); Result:=true; end; end; diff --git a/packages/fcl-passrc/src/pastree.pp b/packages/fcl-passrc/src/pastree.pp index 7abdd74939..ae10ffc38b 100644 --- a/packages/fcl-passrc/src/pastree.pp +++ b/packages/fcl-passrc/src/pastree.pp @@ -5724,7 +5724,7 @@ begin Result:=Result+', '; Result:=Result+Params[I].GetDeclaration(Full); end; - if Kind = pekSet then + if Kind in [pekSet,pekArrayParams] then Result := '[' + Result + ']' else Result := '(' + Result + ')'; diff --git a/packages/fcl-passrc/src/paswrite.pp b/packages/fcl-passrc/src/paswrite.pp index 8079455bcb..2705ba2df8 100644 --- a/packages/fcl-passrc/src/paswrite.pp +++ b/packages/fcl-passrc/src/paswrite.pp @@ -1241,31 +1241,38 @@ begin end; procedure TPasWriter.WriteImplIfElse(AIfElse: TPasImplIfElse); + +Var + DoBeginEnd : Boolean; + begin Add('if ' + AIfElse.Condition + ' then'); if Assigned(AIfElse.IfBranch) then - begin + begin AddLn; - if (AIfElse.IfBranch.ClassType = TPasImplCommands) or - (AIfElse.IfBranch.ClassType = TPasImplBlock) then + DoBeginEnd:=(AIfElse.IfBranch.ClassType = TPasImplCommands) or + (AIfElse.IfBranch.ClassType = TPasImplBlock) or + Assigned(aIfElse.ElseBranch); + if DoBeginEnd then AddLn('begin'); IncIndent; WriteImplElement(AIfElse.IfBranch, False); DecIndent; - if (AIfElse.IfBranch.ClassType = TPasImplCommands) or - (AIfElse.IfBranch.ClassType = TPasImplBlock) then + if DoBeginEnd then + begin if Assigned(AIfElse.ElseBranch) then Add('end ') else AddLn('end;') + end else if Assigned(AIfElse.ElseBranch) then AddLn; - end else - if not Assigned(AIfElse.ElseBranch) then - AddLn(';') - else - AddLn; + end + else if not Assigned(AIfElse.ElseBranch) then + AddLn(';') + else + AddLn; if Assigned(AIfElse.ElseBranch) then if AIfElse.ElseBranch.ClassType = TPasImplIfElse then @@ -1277,10 +1284,10 @@ begin AddLn('else'); IncIndent; WriteImplElement(AIfElse.ElseBranch, True); - if (not Assigned(AIfElse.Parent)) or +{ if (not Assigned(AIfElse.Parent)) or (AIfElse.Parent.ClassType <> TPasImplIfElse) or (TPasImplIfElse(AIfElse.Parent).IfBranch <> AIfElse) then - AddLn(';'); + AddLn(';');} DecIndent; end; end; diff --git a/rtl/aarch64/mathu.inc b/rtl/aarch64/mathu.inc index 7481703372..469bb49eca 100644 --- a/rtl/aarch64/mathu.inc +++ b/rtl/aarch64/mathu.inc @@ -103,21 +103,23 @@ function GetExceptionMask: TFPUExceptionMask; if ((fpcr and fpu_ide)=0) then result := result+[exDenormalized]; } + { as the fpcr flags might be RAZ, the softfloat exception mask + is considered as the authoritative mask } result:=softfloat_exception_mask; end; function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask; - { var newfpcr: dword; - } begin - { as I am not aware of any hardware exception supporting AArch64 implementation, - and else the trapping enable flags are RAZ, work solely with softfloat_exception_mask (FK) - } + { clear "exception happened" flags } + ClearExceptions(false); softfloat_exception_mask:=mask; - { + + { at least the ThunderX AArch64 support apperently hardware exceptions, + so set fpcr correctly, thought it might be WI on most implementations it does not hurt + } newfpcr:=fpu_exception_mask; if exInvalidOp in Mask then newfpcr:=newfpcr and not(fpu_ioe); @@ -131,14 +133,10 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask; newfpcr:=newfpcr and not(fpu_ixe); if exDenormalized in Mask then newfpcr:=newfpcr and not(fpu_ide); - } - { clear "exception happened" flags } - ClearExceptions(false); - { set new exception mask } -// setfpcr((getfpcr and not(fpu_exception_mask)) or newfpcr); - { unsupported mask bits will remain 0 -> read exception mask again } -// result:=GetExceptionMask; -// softfloat_exception_mask:=result; + setfpcr((getfpcr and not(fpu_exception_mask)) or newfpcr); + + { as the fpcr flags might be RAZ, the softfloat exception mask + is considered as the authoritative mask } result:=softfloat_exception_mask; end; diff --git a/rtl/aix/sysos.inc b/rtl/aix/sysos.inc index 5c40166db6..2923cee4b1 100644 --- a/rtl/aix/sysos.inc +++ b/rtl/aix/sysos.inc @@ -96,10 +96,15 @@ end; *****************************************************************************} function do_isdevice(handle:longint):boolean; +var + StatRec: Stat; begin - do_isdevice:= (handle=StdInputHandle) or - (handle=StdOutputHandle) or - (handle=StdErrorHandle); + fpFStat (Handle, StatRec); + case StatRec.st_Mode and S_IFMT of + S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/beos/sysos.inc b/rtl/beos/sysos.inc index 98deb00f8b..01b5d4e470 100644 --- a/rtl/beos/sysos.inc +++ b/rtl/beos/sysos.inc @@ -132,17 +132,14 @@ end; *****************************************************************************} Function Do_IsDevice(Handle:Longint):boolean; -{ - Interface to Unix ioctl call. - Performs various operations on the filedescriptor Handle. - Ndx describes the operation to perform. - Data points to data needed for the Ndx function. The structure of this - data is function-dependent. -} -CONST - IOCtl_TCGETS=$5401; var - Data : array[0..255] of byte; {Large enough for termios info} + StatRec: Stat; begin - Do_IsDevice:=(Fpioctl(handle,IOCTL_TCGETS,@data)<>-1); + fpFStat (Handle, StatRec); + case StatRec.st_Mode and S_IFMT of +(* S_IFSOCK supposedly not available under BeOS, thus omitted *) + S_IFCHR, S_IFIFO: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/bsd/sysos.inc b/rtl/bsd/sysos.inc index 1deb137aa1..2e095102a2 100644 --- a/rtl/bsd/sysos.inc +++ b/rtl/bsd/sysos.inc @@ -156,19 +156,15 @@ end; *****************************************************************************} Function Do_IsDevice(Handle:Longint):boolean; -{ - Interface to Unix ioctl call. - Performs various operations on the filedescriptor Handle. - Ndx describes the operation to perform. - Data points to data needed for the Ndx function. The structure of this - data is function-dependent. -} -CONST - IOCtl_TCGETS=$40000000+$2C7400+ 19; var - Data : array[0..255] of byte; {Large enough for termios info} + StatRec: Stat; begin - Do_IsDevice:=(Fpioctl(handle,IOCTL_TCGETS,@data)<>-1); + fpFStat (Handle, StatRec); + case StatRec.st_Mode and S_IFMT of + S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/emx/sysfile.inc b/rtl/emx/sysfile.inc index 3f86765a80..e47023fbb7 100644 --- a/rtl/emx/sysfile.inc +++ b/rtl/emx/sysfile.inc @@ -397,7 +397,7 @@ asm call syscall mov eax, 1 jc @IsDevEnd - test edx, 80h { verify if it is a file } + test edx, 80h { bit 7 is set if it is a device or a pipe } jnz @IsDevEnd dec eax { nope, so result is zero } @IsDevEnd: diff --git a/rtl/gba/sysfile.inc b/rtl/gba/sysfile.inc index 192aed7ba9..683056c896 100644 --- a/rtl/gba/sysfile.inc +++ b/rtl/gba/sysfile.inc @@ -74,7 +74,14 @@ begin end; function do_isdevice(handle: longint): boolean; +var + StatRec: TStat; begin - result := false; + FStat (Handle, StatRec); + case StatRec.st_Mode and _IFMT of + _IFCHR, _IFIFO, _IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/haiku/sysos.inc b/rtl/haiku/sysos.inc index e185d7dc7b..78337cf9e1 100644 --- a/rtl/haiku/sysos.inc +++ b/rtl/haiku/sysos.inc @@ -108,15 +108,13 @@ end; *****************************************************************************} Function Do_IsDevice(Handle:Longint):boolean; -{ - Interface to Unix ioctl call. - Performs various operations on the filedescriptor Handle. - Ndx describes the operation to perform. - Data points to data needed for the Ndx function. The structure of this - data is function-dependent. -} +var + StatRec: Stat; begin - do_isdevice:= (handle=StdInputHandle) or - (handle=StdOutputHandle) or - (handle=StdErrorHandle); + fpFStat (Handle, StatRec); + case StatRec.st_Mode and S_IFMT of + S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/inc/compproc.inc b/rtl/inc/compproc.inc index df9ba0161f..02e521c5e9 100644 --- a/rtl/inc/compproc.inc +++ b/rtl/inc/compproc.inc @@ -806,6 +806,11 @@ Procedure fpc_rewrite_typed_name_iso(var f : TypedFile;const FileName : String;S Procedure fpc_typed_write(TypeSize : Longint;var f : TypedFile;const Buf); compilerproc; Procedure fpc_typed_read(TypeSize : Longint;var f : TypedFile;out Buf); compilerproc; Procedure fpc_typed_read_iso(TypeSize : Longint;var f : TypedFile;out Buf); compilerproc; + +Procedure fpc_typedfile_init_iso(var t : TypedFile;nr : DWord);compilerproc; +Procedure fpc_typedfile_init_filename_iso(var t : TypedFile;nr : DWord;const filename : string); compilerproc; +Procedure fpc_typedfile_close_iso(var t : TypedFile); compilerproc; + {$endif FPC_HAS_FEATURE_FILEIO} {$ifdef FPC_INCLUDE_SOFTWARE_INT64_TO_DOUBLE} diff --git a/rtl/inc/text.inc b/rtl/inc/text.inc index bab955efee..c78e6fa6db 100644 --- a/rtl/inc/text.inc +++ b/rtl/inc/text.inc @@ -96,12 +96,6 @@ end; Procedure Assign(out t:Text;const s : UnicodeString); begin InitText(t); - if Length (S) >= Length (TextRec.Name) then -{ The last character of TextRec.Name needs to be #0 } - begin - InOutRes:=3; - Exit; - end; {$ifdef FPC_ANSI_TEXTFILEREC} TextRec(t).Name:=ToSingleByteFileSystemEncodedFileName(S); {$else FPC_ANSI_TEXTFILEREC} @@ -115,29 +109,12 @@ end; {$ifdef FPC_HAS_FEATURE_ANSISTRINGS} Procedure Assign(out t:Text;const s: RawByteString); -{$ifdef FPC_ANSI_TEXTFILEREC} -var - R: RawByteString; -{$endif FPC_ANSI_TEXTFILEREC} Begin InitText(t); {$ifdef FPC_ANSI_TEXTFILEREC} { ensure the characters in the record's filename are encoded correctly } - R:=ToSingleByteFileSystemEncodedFileName(S); - if Length (R) >= Length (TextRec.Name) then -{ The last character of TextRec.Name needs to be #0 } - begin - InOutRes:=3; - Exit; - end; - TextRec(t).Name:=R; + TextRec(t).Name:=ToSingleByteFileSystemEncodedFileName(S); {$else FPC_ANSI_TEXTFILEREC} - if Length (S) >= Length (TextRec.Name) then -{ The last character of TextRec.Name needs to be #0 } - begin - InOutRes:=3; - Exit; - end; TextRec(t).Name:=S; {$endif FPC_ANSI_TEXTFILEREC} { null terminate, since the name array is regularly used as p(wide)char } @@ -161,61 +138,27 @@ End; Procedure Assign(out t:Text;const p: PAnsiChar); -var -{$IFDEF FPC_HAS_FEATURE_ANSISTRINGS} - S: ansistring; -{$ELSE FPC_HAS_FEATURE_ANSISTRINGS} - Counter: SizeInt; -{$ENDIF FPC_HAS_FEATURE_ANSISTRINGS} Begin {$ifdef FPC_HAS_FEATURE_ANSISTRINGS} - S := AnsiString (P); - if Length (S) >= Length (TextRec.Name) then -{ The last character of TextRec.Name needs to be #0 } - begin - InOutRes:=3; - Exit; - end; - Assign(t,S); + Assign(t,AnsiString(p)); {$else FPC_HAS_FEATURE_ANSISTRINGS} { no use in making this the one that does the work, since the name field is limited to 255 characters anyway } -{ Assign(t,strpas(p));} - { TH: The length of name field may be extended sooner or later, let's play - safely } - Counter := IndexByte(P^,-1,0); - if Counter >= Length (TextRec.Name) then -{ The last character of TextRec.Name needs to be #0 } - begin - InOutRes:=3; - Exit; - end; - Move(P^,TextRec(t).Name,counter+1); + Assign(t,strpas(p)); {$endif FPC_HAS_FEATURE_ANSISTRINGS} End; Procedure Assign(out t:Text;const c: AnsiChar); -{$IFNDEF FPC_HAS_FEATURE_ANSISTRINGS} -var - Counter: SizeInt; -{$ENDIF FPC_HAS_FEATURE_ANSISTRINGS} Begin {$ifdef FPC_HAS_FEATURE_ANSISTRINGS} Assign(t,AnsiString(c)); {$else FPC_HAS_FEATURE_ANSISTRINGS} - Counter := IndexByte(c,-1,0); - if Counter >= Length (TextRec.Name) then -{ The last character of TextRec.Name needs to be #0 } - begin - InOutRes:=3; - Exit; - end; - Move(c,TextRec(F).Name,counter+1); -{ Assign(t,ShortString(c));} + Assign(t,ShortString(c)); {$endif FPC_HAS_FEATURE_ANSISTRINGS} End; + Procedure Close(var t : Text);[IOCheck]; Begin if InOutRes<>0 then @@ -565,7 +508,7 @@ Begin if not isdevice then { if we didn't modify the buffer, simply restore the BufPos and BufEnd } { (the latter because it's now probably set to zero because nothing was } - { read anymore) } + { was read anymore) } if (reads = 0) then begin TextRec(t).BufPos:=oldbufpos; diff --git a/rtl/inc/typefile.inc b/rtl/inc/typefile.inc index 28279b7699..81b07eda5a 100644 --- a/rtl/inc/typefile.inc +++ b/rtl/inc/typefile.inc @@ -199,3 +199,44 @@ Begin Result:=pbyte(@f)+sizeof(TypedFile); end; + +Procedure fpc_typedfile_init_iso(var t : TypedFile;nr : DWord);compilerproc; +begin +{$ifdef FPC_HAS_FEATURE_COMMANDARGS} + assign(t,paramstr(nr)); +{$else FPC_HAS_FEATURE_COMMANDARGS} + { primitive workaround for targets supporting no command line arguments, + invent some file name, try to avoid complex procedures like concating strings which might + pull-in bigger parts of the rtl } + assign(t,chr((nr mod 16)+65)); +{$endif FPC_HAS_FEATURE_COMMANDARGS} +end; + + +Procedure fpc_typedfile_init_filename_iso(var t : TypedFile;nr : DWord;const filename : string);compilerproc; +begin +{$ifdef FPC_HAS_FEATURE_COMMANDARGS} + if paramstr(nr)='' then + assign(t,filename) + else + assign(t,paramstr(nr)); +{$else FPC_HAS_FEATURE_COMMANDARGS} + { primitive workaround for targets supporting no command line arguments, + invent some file name, try to avoid complex procedures like concating strings which might + pull-in bigger parts of the rtl } + assign(t,chr((nr mod 16)+65)); +{$endif FPC_HAS_FEATURE_COMMANDARGS} +end; + + + +Procedure fpc_typedfile_close_iso(var t : TypedFile);compilerproc; +begin + { reset inout result as this procedure is only called by the compiler and no I/O checking is carried out, + so further I/O does not fail } + inoutres:=0; + close(t); + inoutres:=0; +end; + + diff --git a/rtl/linux/aarch64/sighnd.inc b/rtl/linux/aarch64/sighnd.inc index 011b63a960..06b72341e5 100644 --- a/rtl/linux/aarch64/sighnd.inc +++ b/rtl/linux/aarch64/sighnd.inc @@ -15,6 +15,8 @@ **********************************************************************} +{ $define SYSTEM_DEBUG} + procedure SignalToRunerror(Sig: longint; SigInfo: PSigInfo; UContext: PUContext); public name '_FPC_DEFAULTSIGHANDLER'; cdecl; var @@ -23,7 +25,19 @@ begin res:=0; case sig of SIGFPE: + begin res:=207; +{$ifdef SYSTEM_DEBUG} + writeln('magic of FPSIMD_Context: $',hexstr(uContext^.uc_mcontext.FPSIMD_Context.head.magic,8)); + writeln('size of FPSIMD_Context: $',hexstr(uContext^.uc_mcontext.FPSIMD_Context.head.size,8)); +{$endif SYSTEM_DEBUG} + if (uContext^.uc_mcontext.FPSIMD_Context.head.magic=$46508001) and + (uContext^.uc_mcontext.FPSIMD_Context.head.size=$210) then + begin + with uContext^.uc_mcontext.FPSIMD_Context do + fpsr:=fpsr and not(fpu_exception_mask shr fpu_exception_mask_to_status_mask_shift); + end; + end; SIGILL: res:=216; SIGSEGV : @@ -38,7 +52,10 @@ begin reenable_signal(sig); { give runtime error at the position where the signal was raised } if res<>0 then - HandleErrorAddrFrame(res, - pointer(uContext^.uc_mcontext.pc), - pointer(uContext^.uc_mcontext.regs[29])); + begin + uContext^.uc_mcontext.regs[0]:=res; + uContext^.uc_mcontext.regs[1]:=uContext^.uc_mcontext.pc; + uContext^.uc_mcontext.regs[2]:=uContext^.uc_mcontext.regs[29]; + pointer(uContext^.uc_mcontext.pc):=@HandleErrorAddrFrame; + end; end; diff --git a/rtl/linux/aarch64/sighndh.inc b/rtl/linux/aarch64/sighndh.inc index 937b8a4203..0ee6f31123 100644 --- a/rtl/linux/aarch64/sighndh.inc +++ b/rtl/linux/aarch64/sighndh.inc @@ -17,6 +17,18 @@ {$packrecords C} type + TAarch64_ctx = record + magic, + size : DWord + end; + + TFPSIMD_Context = record + head : TAarch64_ctx; + fpsr, + fpcr : DWord; + vregs : array[0..31] of array[0..7] of Byte; + end; + PSigContext = ^TSigContext; TSigContext = record fault_address : cULong; @@ -25,10 +37,12 @@ type pc : cULong; pstate : cULong; __pad : cULong; - { The following field should be 16-byte-aligned. Currently the + { The following fields should be 16-byte-aligned. Currently the directive for specifying alignment is buggy, so the preceding field was added so that the record has the right size. } - __reserved : array[0..4095] of cUChar; + case Byte of + 1: (__reserved : array[0..4095] of cUChar); + 2: (FPSIMD_Context : TFPSIMD_Context); end; stack_t = record diff --git a/rtl/linux/ptypes.inc b/rtl/linux/ptypes.inc index a69d625f06..79e21ea1c8 100644 --- a/rtl/linux/ptypes.inc +++ b/rtl/linux/ptypes.inc @@ -30,7 +30,7 @@ and all three 32-bit systems returned completely identical types too introduction) } {$ifdef CPUSPARC} - {$define __USE_LARGEFILE64} + { define __USE_LARGEFILE64} {$endif} {$if defined(CPUMIPS) or defined(cpuaarch64) or defined(cpusparc64)} diff --git a/rtl/linux/sysos.inc b/rtl/linux/sysos.inc index ddd6be2a54..46669a0177 100644 --- a/rtl/linux/sysos.inc +++ b/rtl/linux/sysos.inc @@ -137,27 +137,15 @@ end; *****************************************************************************} Function Do_IsDevice(Handle:THandle):boolean; -{ - Interface to Unix ioctl call. - Performs various operations on the filedescriptor Handle. - Ndx describes the operation to perform. - Data points to data needed for the Ndx function. The structure of this - data is function-dependent. -} -const -{$if defined(cpupowerpc) or defined(cpupowerpc64)} - IOCtl_TCGETS=$402c7413; -{$else} -{$if defined(cpusparc) or defined(cpusparc64)} - IOCtl_TCGETS=$40245408; -{$else} - IOCtl_TCGETS=$5401; // TCGETS is also in termios.inc, but the sysunix needs only this -{$endif} -{$endif} var - Data : array[0..255] of byte; {Large enough for termios info} + StatRec: Stat; begin - Do_IsDevice:=(Fpioctl(handle,IOCTL_TCGETS,@data)<>-1); + fpFStat (Handle, StatRec); + case StatRec.st_Mode and S_IFMT of + S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/nds/sysfile.inc b/rtl/nds/sysfile.inc index 2b79599227..23674f0fa3 100644 --- a/rtl/nds/sysfile.inc +++ b/rtl/nds/sysfile.inc @@ -296,9 +296,15 @@ end; function do_isdevice(handle: THandle): boolean; +var + StatRec: TStat; begin - //result := (isatty(fileno(P_FILE(handle))) > 0); - do_isdevice := (_isatty(handle) > 0); + FStat (Handle, StatRec); + case StatRec.st_Mode and _IFMT of + _IFCHR, _IFIFO, _IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/os2/sysfile.inc b/rtl/os2/sysfile.inc index bf000960a1..1233333d14 100644 --- a/rtl/os2/sysfile.inc +++ b/rtl/os2/sysfile.inc @@ -343,6 +343,9 @@ function do_isdevice (Handle: THandle): boolean; var HT, Attr: cardinal; RC: cardinal; +const + dhDevice = 1; + dhPipe = 2; begin do_isdevice:=false; RC := DosQueryHType(Handle, HT, Attr); @@ -351,7 +354,7 @@ begin OSErrorWatch (RC); Exit; end; - if ht=1 then + if (HT = dhDevice) or (HT = dhPipe) then do_isdevice:=true; end; {$ASMMODE ATT} diff --git a/rtl/solaris/sysos.inc b/rtl/solaris/sysos.inc index 4b48bd4a11..11cdece344 100644 --- a/rtl/solaris/sysos.inc +++ b/rtl/solaris/sysos.inc @@ -97,10 +97,15 @@ end; *****************************************************************************} function do_isdevice(handle:longint):boolean; +var + StatRec: Stat; begin - do_isdevice:= (handle=StdInputHandle) or - (handle=StdOutputHandle) or - (handle=StdErrorHandle); + fpFStat (Handle, StatRec); + case StatRec.st_Mode and S_IFMT of + S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true + else + Do_IsDevice := false; + end; end; diff --git a/rtl/unix/scripts/check_rtl_types.sh b/rtl/unix/scripts/check_rtl_types.sh index ec49efa689..c6056dc4d3 100755 --- a/rtl/unix/scripts/check_rtl_types.sh +++ b/rtl/unix/scripts/check_rtl_types.sh @@ -1,7 +1,23 @@ #!/usr/bin/env bash filename="$1" shift -FPC_OPTS="$*" + +verbose=0 +i=1 +while [ $i -le $# ] ; do + arg="${!i}" + echo "Handling arg $i, \"$arg\"" + if [ "${arg//=}" != "$arg" ] ; then + echo "Evaluating \"$arg\"" + arg2="${arg/=*/}=\"${arg/*=/}\"" + eval "$arg2" + elif [ "$arg" == "-v" ] ; then + verbose=1 + else + FPC_OPTS="$FPC_OPTS $arg" + fi + let i++ +done if [ ! -f "$filename" ] ; then echo "Usage: $0 file.h2paschk" @@ -58,8 +74,16 @@ if [ $res -ne 0 ] ; then exit fi -echo "Calling $CC $CC_OPT -o ${filebase}_c ${filebase}.c" -$CC $CC_OPT -o ${filebase}_c${VERSION} ${filebase}.c > ${filebase}${VERSION}_c.comp.log 2>&1 +TMP_DIR=tmp_$VERSION +if [ -d $TMP_DIR ] ; then + rm -Rf $TMP_DIR +fi +mkdir $TMP_DIR + +mv ${filebase}.c ${filebase}.pas $TMP_DIR +cd $TMP_DIR +echo "Calling $CC $CC_OPT -o ${filebase}_${VERSION}_c ${filebase}.c" +$CC $CC_OPT -o ${filebase}_${VERSION}_c ${filebase}.c > ${filebase}_${VERSION}_c.comp.log 2>&1 res=$? if [ $res -ne 0 ] ; then echo "$CC call failed in $VERSION, res=$res" @@ -67,15 +91,15 @@ if [ $res -ne 0 ] ; then exit fi -./${filebase}_c${VERSION} > ${filebase}_c${VERSION}.out +./${filebase}_${VERSION}_c > ${filebase}_${VERSION}_c.out res=$? if [ $res -ne 0 ] ; then - echo "./${filebase}_c${VERSION} failed in $VERSION, res=$res" + echo "./${filebase}_${VERSION}_c failed in $VERSION, res=$res" exit fi -echo "Calling $MAKE all OPT=\"-n -gwl $FPC_OPTS\" FPC=$FPC" -$MAKE all OPT="-n -gwl $FPC_OPTS" FPC=$FPC > ${filebase}${VERSION}_make_all.log 2>&1 +echo "Calling $MAKE -C .. all OPT=\"-n -gwl $FPC_OPTS\" FPC=$FPC" +$MAKE -C .. all OPT="-n -gwl $FPC_OPTS" FPC=$FPC > ${filebase}${VERSION}_make_all.log 2>&1 res=$? if [ $res -ne 0 ] ; then echo "$MAKE call failed in $VERSION, res=$res" @@ -85,24 +109,24 @@ fi OS_TARGET=`$FPC $FPC_OPTS -iTO` CPU_TARGET=`$FPC $FPC_OPTS -iTP` -echo "Calling $MAKE -C ${filedir} ${filebaseonly} FPC=$FPC OPT=\"-n -gwl $FPC_OPTS\" -Fu../units/$CPU_TARGET-$OS_TARGET" -$MAKE -C ${filedir} ${filebaseonly} FPC=$FPC OPT="-n -gwl $FPC_OPTS -Fu../units/$CPU_TARGET-$OS_TARGET" > ${filebase}${VERSION}_pas.comp.log 2>&1 +echo "Calling $MAKE -C .. ${TMP_DIR}/${filebaseonly} FPC=$FPC OPT=\"-n -gwl $FPC_OPTS\" -Fu../units/$CPU_TARGET-$OS_TARGET" +$MAKE -C .. ${TMP_DIR}/${filebaseonly} FPC=$FPC OPT="-n -gwl $FPC_OPTS -Fu../units/$CPU_TARGET-$OS_TARGET" > ${filebase}_${VERSION}_pas.comp.log 2>&1 res=$? if [ $res -ne 0 ] ; then echo "$FPC call failed in $VERSION, res=$res" - cat ${filebase}${VERSION}_pas.comp.log + cat ${filebase}_${VERSION}_pas.comp.log exit fi -mv -f ${filebase} ${filebase}${VERSION} +mv -f ../${filebase} ./${filebase}_${VERSION}_pas -./${filebase}${VERSION} > ${filebase}_pas${VERSION}.out +./${filebase}_${VERSION}_pas > ${filebase}_${VERSION}_pas.out res=$? if [ $res -ne 0 ] ; then echo "./${filebase}${VERSION} call failed in $VERSION, res=$res" exit fi -diff ${filebase}_c${VERSION}.out ${filebase}_pas${VERSION}.out > ${filebase}${VERSION}.diffs +diff ${filebase}_${VERSION}_c.out ${filebase}_${VERSION}_pas.out > ${filebase}_${VERSION}.diffs res=$? if [ $res -eq 0 ] ; then echo "No difference found!" @@ -110,19 +134,21 @@ else echo "Diffs for ${VERSION} are:" echo "< C results" echo "> Pascal results" - cat ${filebase}${VERSION}.diffs + cat ${filebase}_${VERSION}.diffs fi # Clean up -rm -f ${filebase}_c${VERSION} -rm -f ${filebase}${VERSION} -rm -f ${filebase}_c${VERSION}.out -rm -f ${filebase}_pas${VERSION}.out -rm -f ${filebase}${VERSION}_c.comp.log -rm -f ${filebase}${VERSION}_pas.comp.log -rm -f ${filebase}${VERSION}_make_all.log -rm -f ${filebase}.c -rm -f ${filebase}.pas - +if [ $verbose -eq 0 ] ; then + rm -f ${filebase}_${VERSION}_c + rm -f ${filebase}_${VERSION}_pas + rm -f ${filebase}_${VERSION}_c.out + rm -f ${filebase}_pas${VERSION}.out + rm -f ${filebase}_${VERSION}_c.comp.log + rm -f ${filebase}_${VERSION}_pas.comp.log + rm -f ${filebase}_${VERSION}_make_all.log + rm -f ${filebase}.c + rm -f ${filebase}.pas +fi +cd .. } function check_64 () @@ -207,10 +233,10 @@ if [ $default_fpc -eq 1 ] ; then else if [ "${FPC}" == "$FPC64" ] ; then check_64 - fi - - if [ "${FPC}" == "$FPC32" ] ; then + elif [ "${FPC}" == "$FPC32" ] ; then check_32 + else + echo "Unrecognized FPC=\"$FPC\"" fi fi diff --git a/rtl/win/sysfile.inc b/rtl/win/sysfile.inc index e4a12eb0c0..2431f4b3c8 100644 --- a/rtl/win/sysfile.inc +++ b/rtl/win/sysfile.inc @@ -2,7 +2,7 @@ This file is part of the Free Pascal run time library. Copyright (c) 2001 by Free Pascal development team - Low leve file functions + Low level file functions See the file COPYING.FPC, included in this distribution, for details about the copyright. @@ -19,8 +19,17 @@ *****************************************************************************} function do_isdevice(handle:thandle):boolean; +{$IFNDEF WINCE} +var + HT: dword; +{$ENDIF WINCE} begin - do_isdevice:=(handle = StdInputHandle) or (handle = StdOutputHandle) or (handle = StdErrorHandle); +{$IFDEF WINCE} + Do_IsDevice := false; +{$ELSE WINCE} + HT := GetFileType (Handle); + Do_IsDevice := (HT = FILE_TYPE_CHAR) or (HT = FILE_TYPE_PIPE); +{$ENDIF WINCE} end; diff --git a/rtl/win16/sysfile.inc b/rtl/win16/sysfile.inc index 332cfc706e..dcda98f60f 100644 --- a/rtl/win16/sysfile.inc +++ b/rtl/win16/sysfile.inc @@ -404,6 +404,7 @@ function do_isdevice(handle:THandle):boolean; var regs: Registers; begin +(* Is this explicit check for the first three handles appropriate here??? *) if (handle=StdInputHandle) or (handle=StdOutputHandle) or (handle=StdErrorHandle) then begin do_isdevice:=true; diff --git a/tests/webtbf/tw37763.pp b/tests/webtbf/tw37763.pp new file mode 100644 index 0000000000..e2d8b2a7c2 --- /dev/null +++ b/tests/webtbf/tw37763.pp @@ -0,0 +1,7 @@ +{ %fail } +{$MODE ISO} +program forum(output); +var f:rawbytestring; +begin +writeln(f) +end. diff --git a/tests/webtbs/DAT_TW37415 b/tests/webtbs/DAT_TW37415 new file mode 100644 index 0000000000..81c545efeb --- /dev/null +++ b/tests/webtbs/DAT_TW37415 @@ -0,0 +1 @@ +1234 diff --git a/tests/webtbs/tw37415.pp b/tests/webtbs/tw37415.pp new file mode 100644 index 0000000000..8b1e6247aa --- /dev/null +++ b/tests/webtbs/tw37415.pp @@ -0,0 +1,9 @@ +{ %OPT=-Miso -Sr } +{ %FILES=DAT_TW37415 } +program fileTest(dat_tw37415); + +var + dat_tw37415: file of integer; +begin + reset(dat_tw37415); +end. diff --git a/utils/fpcm/fpcmake.inc b/utils/fpcm/fpcmake.inc index a9e155e0e9..b3c71d9fcd 100644 --- a/utils/fpcm/fpcmake.inc +++ b/utils/fpcm/fpcmake.inc @@ -1,7 +1,7 @@ {$ifdef Delphi} -const fpcmakeini : array[0..253] of string[240]=( +const fpcmakeini : array[0..255] of string[240]=( {$else Delphi} -const fpcmakeini : array[0..253,1..240] of char=( +const fpcmakeini : array[0..255,1..240] of char=( {$endif Delphi} ';'#010+ '; Templates used by fpcmake to create a Makefile from Makefile.fpc'#010+ @@ -923,32 +923,54 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifeq ($(BINUTILSPREFIX),)'#010+ 'GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)',#010+ 'else'#010+ + '# gcc mips seems not to recognize -m32/-m64'#010+ + 'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)'#010+ + 'CROSSGCCOPT=-mabi=32'#010+ + 'else'#010+ 'CROSSGCCOPT=-m32'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ + 'endif'#010+ #010+ '# Check if FPCFPMAKE compiler is same target as FPC'#010+ - 'ifdef FPCFPMAKE'#010+ + 'ifdef FP','CFPMAKE'#010+ 'FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP)'#010+ 'ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET))'#010+ - '# In that case use GCCLIBDIR va','lue for FPCMAKEGCCLIBDIR'#010+ + '# In that case use GCCLIBDIR value for FPCMAKEGCCLIBDIR'#010+ 'FPCMAKEGCCLIBDIR:=$(GCCLIBDIR)'#010+ + 'else'#010+ + 'ifneq ($(findstring $(FPCFPMAKE_CPU_TARGET),aar','ch64 powerpc64 riscv6'+ + '4 sparc64 x86_64),)'#010+ + 'FPCMAKE_CROSSGCCOPT=-m64'#010+ + 'else'#010+ + 'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips64 mips64el),)'#010+ + 'FPCMAKE_CROSSGCCOPT=-mabi=64'#010+ + 'else'#010+ + 'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)'#010+ + 'FPCMAKE_CROSSGCCOPT','=-mabi=32'#010+ + 'else'#010+ + 'FPCMAKE_CROSSGCCOPT=-m32'#010+ + 'endif'#010+ + 'endif'#010+ + 'endif'#010+ + 'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-l'+ + 'ibgcc-file-name`)'#010+ 'endif'#010+ 'endif'#010+ #010+ 'ifndef FPCMAKEGCCLIBDIR'#010+ - 'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`)'#010+ + 'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file','-name`)'#010+ 'endif'#010+ #010+ '# Try cross gcc'#010+ 'ifndef GCCLIBDIR'#010+ - 'CROSSGCC=$(strip $(wildcard $(addsuffix /$','(BINUTILSPREFIX)gcc$(SRCEX'+ - 'EEXT),$(SEARCHPATH))))'#010+ + 'CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEE'+ + 'XT),$(SEARCHPATH))))'#010+ 'ifneq ($(CROSSGCC),)'#010+ 'GCCLIBDIR:=$(shell dirname `$(CROSSGCC) $(CROSSGCCOPT) -print-libgcc-f'+ - 'ile-name`)'#010+ + 'ile-name`)',#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ @@ -956,17 +978,17 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ 'ifdef inUnix'#010+ 'ifeq ($(OS_SOURCE),netbsd)'#010+ - 'OTHE','RLIBDIR:=/usr/pkg/lib'#010+ + 'OTHERLIBDIR:=/usr/pkg/lib'#010+ 'endif'#010+ 'export GCCLIBDIR FPCMAKEGCCLIBDIR OTHERLIBDIR'#010+ 'endif'#010+ #010+ #010+ '[extensions]'#010+ - '#####################################################################'#010+ - '# Default extensions'#010+ - '######################################################','##############'+ + '#######################################################','#############'+ '#'#010+ + '# Default extensions'#010+ + '#####################################################################'#010+ #010+ '# Default needed extensions (Go32v2,Linux)'#010+ 'BATCHEXT=.bat'#010+ @@ -976,24 +998,24 @@ const fpcmakeini : array[0..253,1..240] of char=( 'PPUEXT=.ppu'#010+ 'OEXT=.o'#010+ 'LTOEXT=.bc'#010+ - 'ASMEXT=.s'#010+ + 'ASMEXT=','.s'#010+ 'SMARTEXT=.sl'#010+ 'STATICLIBEXT=.a'#010+ 'SHAREDLIBEXT=.so'#010+ 'SHAREDLIBPREFIX=libfp'#010+ - 'STATICLIBPREFIX=lib','p'#010+ + 'STATICLIBPREFIX=libp'#010+ 'IMPORTLIBPREFIX=libimp'#010+ 'RSTEXT=.rst'#010+ '# external debug info for executable'#010+ 'EXEDBGEXT=.dbg'#010+ - '#DEBUGSYMEXT #for debugger symbol files, define only for targets which'+ - ' has this'#010+ + '#DEBUGSYMEXT #for debugger symbol files, define only for targ','ets whi'+ + 'ch has this'#010+ #010+ '# Go32v1'#010+ 'ifeq ($(OS_TARGET),go32v1)'#010+ 'STATICLIBPREFIX='#010+ 'SHORTSUFFIX=v1'#010+ - 'en','dif'#010+ + 'endif'#010+ #010+ '# Go32v2'#010+ 'ifeq ($(OS_TARGET),go32v2)'#010+ @@ -1004,7 +1026,7 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '# watcom'#010+ 'ifeq ($(OS_TARGET),watcom)'#010+ - 'STATICLIBPREFIX='#010+ + 'STATICLIBPREFIX=',#010+ 'OEXT=.obj'#010+ 'ASMEXT=.asm'#010+ 'SHAREDLIBEXT=.dll'#010+ @@ -1012,7 +1034,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'IMPORTLIBPREFIX='#010+ 'endif'#010+ #010+ - '# Android',' native'#010+ + '# Android native'#010+ 'ifneq ($(CPU_TARGET),jvm)'#010+ 'ifeq ($(OS_TARGET),android)'#010+ 'BATCHEXT=.sh'#010+ @@ -1023,7 +1045,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# Linux'#010+ - 'ifeq ($(OS_TARGET),linux)'#010+ + 'ifeq ($(OS_TARG','ET),linux)'#010+ 'BATCHEXT=.sh'#010+ 'EXEEXT='#010+ 'HASSHAREDLIB=1'#010+ @@ -1031,7 +1053,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# DragonFly BSD'#010+ - 'ifeq',' ($(OS_TARGET),dragonfly)'#010+ + 'ifeq ($(OS_TARGET),dragonfly)'#010+ 'BATCHEXT=.sh'#010+ 'EXEEXT='#010+ 'HASSHAREDLIB=1'#010+ @@ -1042,7 +1064,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifeq ($(OS_TARGET),freebsd)'#010+ 'BATCHEXT=.sh'#010+ 'EXEEXT='#010+ - 'HASSHAREDLIB=1'#010+ + 'HASSHAR','EDLIB=1'#010+ 'SHORTSUFFIX=fbs'#010+ 'endif'#010+ #010+ @@ -1050,7 +1072,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifeq ($(OS_TARGET),netbsd)'#010+ 'BATCHEXT=.sh'#010+ 'EXEEXT='#010+ - 'HA','SSHAREDLIB=1'#010+ + 'HASSHAREDLIB=1'#010+ 'SHORTSUFFIX=nbs'#010+ 'endif'#010+ #010+ @@ -1063,14 +1085,14 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# Win32'#010+ - 'ifeq ($(OS_TARGET),win32)'#010+ + 'ifeq ($(O','S_TARGET),win32)'#010+ 'SHAREDLIBEXT=.dll'#010+ 'SHORTSUFFIX=w32'#010+ 'endif'#010+ #010+ '# OS/2'#010+ 'ifeq ($(OS_TARGET),os2)'#010+ - 'B','ATCHEXT=.cmd'#010+ + 'BATCHEXT=.cmd'#010+ 'AOUTEXT=.out'#010+ 'STATICLIBPREFIX='#010+ 'SHAREDLIBEXT=.dll'#010+ @@ -1081,13 +1103,13 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '# EMX'#010+ 'ifeq ($(OS_TARGET),emx)'#010+ - 'BATCHEXT=.cmd'#010+ + 'BATCHEXT=','.cmd'#010+ 'AOUTEXT=.out'#010+ 'STATICLIBPREFIX='#010+ 'SHAREDLIBEXT=.dll'#010+ 'SHORTSUFFIX=emx'#010+ 'ECHO=echo'#010+ - 'IMPORTLIBPR','EFIX='#010+ + 'IMPORTLIBPREFIX='#010+ 'endif'#010+ #010+ '# Amiga'#010+ @@ -1100,14 +1122,14 @@ const fpcmakeini : array[0..253,1..240] of char=( '# AROS'#010+ 'ifeq ($(OS_TARGET),aros)'#010+ 'EXEEXT='#010+ - 'SHAREDLIBEXT=.library'#010+ + 'SHAREDLIBE','XT=.library'#010+ 'SHORTSUFFIX=aros'#010+ 'endif'#010+ #010+ '# MorphOS'#010+ 'ifeq ($(OS_TARGET),morphos)'#010+ 'EXEEXT='#010+ - 'SHAREDLI','BEXT=.library'#010+ + 'SHAREDLIBEXT=.library'#010+ 'SHORTSUFFIX=mos'#010+ 'endif'#010+ #010+ @@ -1119,7 +1141,7 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '# BeOS'#010+ 'ifeq ($(OS_TARGET),beos)'#010+ - 'BATCHEXT=.sh'#010+ + 'BATCHEXT=.sh',#010+ 'EXEEXT='#010+ 'SHORTSUFFIX=be'#010+ 'endif'#010+ @@ -1128,7 +1150,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifeq ($(OS_TARGET),haiku)'#010+ 'BATCHEXT=.sh'#010+ 'EXEEXT='#010+ - 'SHOR','TSUFFIX=hai'#010+ + 'SHORTSUFFIX=hai'#010+ 'endif'#010+ #010+ '# Solaris'#010+ @@ -1141,14 +1163,14 @@ const fpcmakeini : array[0..253,1..240] of char=( '# QNX'#010+ 'ifeq ($(OS_TARGET),qnx)'#010+ 'BATCHEXT=.sh'#010+ - 'EXEEXT='#010+ + 'EXEEXT','='#010+ 'SHORTSUFFIX=qnx'#010+ 'endif'#010+ #010+ '# Netware clib'#010+ 'ifeq ($(OS_TARGET),netware)'#010+ 'EXEEXT=.nlm'#010+ - 'STATICLIBP','REFIX='#010+ + 'STATICLIBPREFIX='#010+ 'SHORTSUFFIX=nw'#010+ 'IMPORTLIBPREFIX=imp'#010+ 'endif'#010+ @@ -1158,14 +1180,14 @@ const fpcmakeini : array[0..253,1..240] of char=( 'EXEEXT=.nlm'#010+ 'STATICLIBPREFIX='#010+ 'SHORTSUFFIX=nwl'#010+ - 'IMPORTLIBPREFIX=imp'#010+ + 'IMPORTLIBPRE','FIX=imp'#010+ 'endif'#010+ #010+ '# Mac OS Classic'#010+ 'ifeq ($(OS_TARGET),macosclassic)'#010+ 'BATCHEXT='#010+ 'EXEEXT='#010+ - 'DEBUGSY','MEXT=.xcoff'#010+ + 'DEBUGSYMEXT=.xcoff'#010+ 'SHORTSUFFIX=mac'#010+ 'IMPORTLIBPREFIX=imp'#010+ 'endif'#010+ @@ -1174,7 +1196,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifneq ($(findstring $(OS_TARGET),darwin iphonesim ios),)'#010+ 'BATCHEXT=.sh'#010+ 'EXEEXT='#010+ - 'HASSHAREDLIB=1'#010+ + 'HASSHARE','DLIB=1'#010+ 'SHORTSUFFIX=dwn'#010+ 'EXEDBGEXT=.dSYM'#010+ 'endif'#010+ @@ -1182,7 +1204,7 @@ const fpcmakeini : array[0..253,1..240] of char=( '# gba'#010+ 'ifeq ($(OS_TARGET),gba)'#010+ 'EXEEXT=.gba'#010+ - 'SH','AREDLIBEXT=.so'#010+ + 'SHAREDLIBEXT=.so'#010+ 'SHORTSUFFIX=gba'#010+ 'endif'#010+ #010+ @@ -1193,13 +1215,13 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# NativeNT'#010+ - 'ifeq ($(OS_TARGET),NativeNT)'#010+ + 'ifeq ($(OS_TARG','ET),NativeNT)'#010+ 'SHAREDLIBEXT=.dll'#010+ 'SHORTSUFFIX=nativent'#010+ 'endif'#010+ #010+ '# wii'#010+ - 'ifeq ($(OS_TARGET),wii)'#010, + 'ifeq ($(OS_TARGET),wii)'#010+ 'EXEEXT=.dol'#010+ 'SHAREDLIBEXT=.so'#010+ 'SHORTSUFFIX=wii'#010+ @@ -1214,14 +1236,14 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# Java'#010+ - 'ifeq ($(OS_TARGET),java)'#010+ + 'i','feq ($(OS_TARGET),java)'#010+ 'OEXT=.class'#010+ 'ASMEXT=.j'#010+ 'SHAREDLIBEXT=.jar'#010+ 'SHORTSUFFIX=java'#010+ 'endif'#010+ #010+ - '# ','Android java'#010+ + '# Android java'#010+ 'ifeq ($(CPU_TARGET),jvm)'#010+ 'ifeq ($(OS_TARGET),android)'#010+ 'OEXT=.class'#010+ @@ -1232,13 +1254,13 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# MS-DOS'#010+ - 'ifeq ($(OS_TARGET),msdos)'#010+ + 'if','eq ($(OS_TARGET),msdos)'#010+ 'STATICLIBPREFIX='#010+ 'STATICLIBEXT=.a'#010+ 'SHORTSUFFIX=d16'#010+ 'endif'#010+ #010+ - '# MSX-DOS'#010, + '# MSX-DOS'#010+ 'ifeq ($(OS_TARGET),msxdos)'#010+ 'STATICLIBPREFIX='#010+ 'STATICLIBEXT=.a'#010+ @@ -1247,14 +1269,14 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '# Embedded'#010+ 'ifeq ($(OS_TARGET),embedded)'#010+ - 'ifeq ($(CPU_TARGET),i8086)'#010+ + 'ifeq ($(CPU_TARGET),i8086)'#010, 'STATICLIBPREFIX='#010+ 'STATICLIBEXT=.a'#010+ 'else'#010+ 'EXEEXT=.bin'#010+ 'endif'#010+ 'ifeq ($(CPU_TARGET),z80)'#010+ - 'OEXT=.rel',#010+ + 'OEXT=.rel'#010+ 'endif'#010+ 'SHORTSUFFIX=emb'#010+ 'endif'#010+ @@ -1267,56 +1289,55 @@ const fpcmakeini : array[0..253,1..240] of char=( 'SHORTSUFFIX=w16'#010+ 'endif'#010+ #010+ - '# ZX Spectrum'#010+ + '# ZX Spectru','m'#010+ 'ifeq ($(OS_TARGET),zxspectrum)'#010+ 'OEXT=.rel'#010+ 'endif'#010+ #010+ #010+ - '# For 8.3 limited OS'#039's the short suffix','es'#010+ + '# For 8.3 limited OS'#039's the short suffixes'#010+ '# Otherwise use the full source/target names'#010+ 'ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)'#010+ 'FPCMADE=fpcmade.$(SHORTSUFFIX)'#010+ - 'ZIPSUFFIX=$(SHORTSUFFIX)'#010+ + 'ZIPSUFFIX=$(SHORTSUFFI','X)'#010+ 'ZIPCROSSPREFIX='#010+ 'ZIPSOURCESUFFIX=src'#010+ 'ZIPEXAMPLESUFFIX=exm'#010+ 'else'#010+ - 'FPCMADE=fpcmade.$(TARGETS','UFFIX)'#010+ + 'FPCMADE=fpcmade.$(TARGETSUFFIX)'#010+ 'ZIPSOURCESUFFIX=.source'#010+ 'ZIPEXAMPLESUFFIX=.examples'#010+ 'ifdef CROSSCOMPILE'#010+ 'ZIPSUFFIX=.$(SOURCESUFFIX)'#010+ 'ZIPCROSSPREFIX=$(TARGETSUFFIX)-'#010+ 'else'#010+ - 'ZIPSUFFIX=.$(TARGETSUFFIX)'#010+ + 'ZIPSUFFIX','=.$(TARGETSUFFIX)'#010+ 'ZIPCROSSPREFIX='#010+ 'endif'#010+ 'endif'#010+ #010+ '[defaulttools]'#010+ - '############################','########################################'+ - '#'#010+ + '#####################################################################'#010+ '# Default Tools'#010+ '#####################################################################'#010+ #010+ - '# Names of the binutils tools'#010+ + '# Names of the binuti','ls tools'#010+ 'ASNAME=$(BINUTILSPREFIX)as'#010+ 'LDNAME=$(BINUTILSPREFIX)ld'#010+ - 'ARNAME=$(BINUTILSPREFIX)ar'#010, + 'ARNAME=$(BINUTILSPREFIX)ar'#010+ 'RCNAME=$(BINUTILSPREFIX)rc'#010+ 'NASMNAME=$(BINUTILSPREFIX)nasm'#010+ #010+ '# assembler, redefine it if cross compiling'#010+ 'ifndef ASPROG'#010+ 'ifdef CROSSBINDIR'#010+ - 'ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)'#010+ + 'ASPROG=$(CROSSB','INDIR)/$(ASNAME)$(SRCEXEEXT)'#010+ 'else'#010+ 'ASPROG=$(ASNAME)'#010+ 'endif'#010+ 'endif'#010+ #010+ - '# linker, but probably not',' used'#010+ + '# linker, but probably not used'#010+ 'ifndef LDPROG'#010+ 'ifdef CROSSBINDIR'#010+ 'LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)'#010+ @@ -1326,12 +1347,12 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# Resource compiler'#010+ - 'ifndef RCPROG'#010+ + 'ifndef RCPROG',#010+ 'ifdef CROSSBINDIR'#010+ 'RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)'#010+ 'else'#010+ 'RCPROG=$(RCNAME)'#010+ - 'endif',#010+ + 'endif'#010+ 'endif'#010+ #010+ '# Archiver'#010+ @@ -1343,10 +1364,10 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ 'endif'#010+ #010+ - '# NASM assembler, redefine it if cross compiling'#010+ + '# NASM assembler, re','define it if cross compiling'#010+ 'ifndef NASMPROG'#010+ 'ifdef CROSSBINDIR'#010+ - 'NASMPROG=$(CROSSBINDIR)/$(N','ASMNAME)$(SRCEXEEXT)'#010+ + 'NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)'#010+ 'else'#010+ 'NASMPROG=$(NASMNAME)'#010+ 'endif'#010+ @@ -1358,13 +1379,13 @@ const fpcmakeini : array[0..253,1..240] of char=( 'RC=$(RCPROG)'#010+ 'AR=$(ARPROG)'#010+ 'NASM=$(NASMPROG)'#010+ - #010+ + #010, '# ppas.bat / ppas.sh'#010+ 'ifdef inUnix'#010+ 'PPAS=./ppas$(SRCBATCHEXT)'#010+ 'else'#010+ 'PPAS=ppas$(SRCBATCHEXT)'#010+ - 'e','ndif'#010+ + 'endif'#010+ #010+ '# ldconfig to rebuild .so cache'#010+ 'ifdef inUnix'#010+ @@ -1376,7 +1397,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifdef DATE'#010+ 'DATESTR:=$(shell $(DATE) +%Y%m%d)'#010+ 'else'#010+ - 'DATESTR='#010+ + 'DATESTR='#010, 'endif'#010+ #010+ '# Zip options'#010+ @@ -1386,7 +1407,7 @@ const fpcmakeini : array[0..253,1..240] of char=( '# Tar options'#010+ 'ifeq ($(USETAR),bz2)'#010+ 'TAROPT=vj'#010+ - 'T','AREXT=.tar.bz2'#010+ + 'TAREXT=.tar.bz2'#010+ 'else'#010+ 'TAROPT=vz'#010+ 'TAREXT=.tar.gz'#010+ @@ -1395,18 +1416,18 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '[command_begin]'#010+ '#####################################################################'#010+ - '# Compiler Command Line'#010+ + '# Compiler ','Command Line'#010+ '#####################################################################'#010+ #010+ - '# Load',' commandline OPTDEF and add FPC_CPU define, for compiling the'#010+ + '# Load commandline OPTDEF and add FPC_CPU define, for compiling the'#010+ '# compiler this needs to be turned off'#010+ 'ifndef NOCPUDEF'#010+ 'override FPCOPTDEF=$(ARCH)'#010+ - 'endif'#010+ + 'endif'#010, #010+ #010+ '# Load commandline OPT and add target and unit dir to be sure'#010+ - 'ifneq ($(OS_TARGET),$(OS_S','OURCE))'#010+ + 'ifneq ($(OS_TARGET),$(OS_SOURCE))'#010+ 'override FPCOPT+=-T$(OS_TARGET)'#010+ 'endif'#010+ #010+ @@ -1415,39 +1436,39 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ 'ifeq ($(OS_SOURCE),openbsd)'#010+ - 'override FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+ + 'overr','ide FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+ 'override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)'#010+ - 'override ','FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)'#010+ + 'override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)'#010+ 'endif'#010+ #010+ 'ifndef CROSSBOOTSTRAP'#010+ 'ifneq ($(BINUTILSPREFIX),)'#010+ 'override FPCOPT+=-XP$(BINUTILSPREFIX)'#010+ 'endif'#010+ - 'ifneq ($(BINUTILSPREFIX),)'#010+ + 'ifneq ($','(BINUTILSPREFIX),)'#010+ 'override FPCOPT+=-Xr$(RLINKPATH)'#010+ 'endif'#010+ 'endif'#010+ #010+ - '# When BINUTILSPREFIX is ','given and we are not cross-compiling then u'+ - 'se'#010+ + '# When BINUTILSPREFIX is given and we are not cross-compiling then use'+ + #010+ '# it while compiling the fpmake file. (For example to build i386-freeb'+ 'sd'#010+ '# with BINUTILSPREFIX=i386-)'#010+ - 'ifndef CROSSCOMPILE'#010+ + 'if','ndef CROSSCOMPILE'#010+ 'ifneq ($(BINUTILSPREFIX),)'#010+ 'override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)'#010+ - 'ove','rride FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)'#010+ + 'override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)'#010+ 'endif'#010+ 'endif'#010+ #010+ '# User dirs should be first, so they are looked at first'#010+ 'ifdef UNITDIR'#010+ - 'override FPCOPT+=$(addprefix -Fu,$(UNITDIR))'#010+ + 'override FPCOPT+=$(ad','dprefix -Fu,$(UNITDIR))'#010+ 'endif'#010+ 'ifdef LIBDIR'#010+ 'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#010+ - 'end','if'#010+ + 'endif'#010+ 'ifdef OBJDIR'#010+ 'override FPCOPT+=$(addprefix -Fo,$(OBJDIR))'#010+ 'endif'#010+ @@ -1456,13 +1477,13 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# Smartlinking'#010+ - 'ifdef LINKSMART'#010+ + 'ifdef',' LINKSMART'#010+ 'override FPCOPT+=-XX'#010+ 'endif'#010+ #010+ '# Smartlinking creation'#010+ 'ifdef CREATESMART'#010+ - 'override ','FPCOPT+=-CX'#010+ + 'override FPCOPT+=-CX'#010+ 'endif'#010+ #010+ '# Debug'#010+ @@ -1472,11 +1493,11 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# Release mode'#010+ - '# (strip, optimize and don'#039't load fpc.cfg)'#010+ + '# (strip, optimize and don'#039't load fpc.cfg)',#010+ 'ifdef RELEASE'#010+ 'FPCCPUOPT:=-O2'#010+ 'override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n'#010+ - 'override FPCOPTDEF+','=RELEASE'#010+ + 'override FPCOPTDEF+=RELEASE'#010+ 'endif'#010+ #010+ '# Strip'#010+ @@ -1489,55 +1510,55 @@ const fpcmakeini : array[0..253,1..240] of char=( 'override FPCOPT+=-O2'#010+ 'endif'#010+ #010+ - '# Verbose settings (warning,note,info)'#010+ + '# Verbose settings (warning,not','e,info)'#010+ 'ifdef VERBOSE'#010+ 'override FPCOPT+=-vwni'#010+ 'endif'#010+ #010+ '# Needed compiler options'#010+ - 'ifdef COMPIL','ER_OPTIONS'#010+ + 'ifdef COMPILER_OPTIONS'#010+ 'override FPCOPT+=$(COMPILER_OPTIONS)'#010+ 'endif'#010+ 'ifdef COMPILER_UNITDIR'#010+ 'override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))'#010+ 'endif'#010+ - 'ifdef COMPILER_LIBRARYDIR'#010+ + 'ifdef COMPILE','R_LIBRARYDIR'#010+ 'override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))'#010+ 'endif'#010+ - 'ifdef COMPILER','_OBJECTDIR'#010+ + 'ifdef COMPILER_OBJECTDIR'#010+ 'override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))'#010+ 'endif'#010+ 'ifdef COMPILER_INCLUDEDIR'#010+ - 'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))'#010+ + 'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDE','DIR))'#010+ 'endif'#010+ #010+ '# Cross compiler utils'#010+ 'ifdef CROSSBINDIR'#010+ 'override FPCOPT+=-FD$(CROSSBINDIR)'#010+ - 'e','ndif'#010+ + 'endif'#010+ #010+ '# Target dirs and the prefix to use for clean/install'#010+ 'ifdef COMPILER_TARGETDIR'#010+ 'override FPCOPT+=-FE$(COMPILER_TARGETDIR)'#010+ - 'ifeq ($(COMPILER_TARGETDIR),.)'#010+ + 'ifeq ($(COMPILER_TARGET','DIR),.)'#010+ 'override TARGETDIRPREFIX='#010+ 'else'#010+ 'override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/'#010+ - 'end','if'#010+ + 'endif'#010+ 'endif'#010+ #010+ '# Unit target dir (default is units/<cpu>-<os>/'#010+ 'ifdef COMPILER_UNITTARGETDIR'#010+ 'override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)'#010+ - 'ifeq ($(COMPILER_UNITTARGETDIR),.)'#010+ + 'ifeq ($(COMPILER_','UNITTARGETDIR),.)'#010+ 'override UNITTARGETDIRPREFIX='#010+ 'else'#010+ - 'override UNITTARGETDIRPREFIX=$(COMPIL','ER_UNITTARGETDIR)/'#010+ + 'override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/'#010+ 'endif'#010+ 'else'#010+ 'ifdef COMPILER_TARGETDIR'#010+ 'override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)'#010+ - 'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)'#010+ + 'override UNITTARGETDIRPREFIX=$(TARGETDIRP','REFIX)'#010+ 'endif'#010+ 'endif'#010+ #010+ @@ -1545,16 +1566,16 @@ const fpcmakeini : array[0..253,1..240] of char=( 'override FPCOPT+=-Cg'#010+ 'endif'#010+ #010+ - '# create always pic'#039'ed ','code on x86_64, mips and mipsel'#010+ + '# create always pic'#039'ed code on x86_64, mips and mipsel'#010+ '# on unix-like systems'#010+ 'ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linu'+ 'x solaris),)'#010+ - 'ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)'#010+ + 'ifneq ($(fin','dstring $(CPU_TARGET),x86_64 mips mipsel),)'#010+ 'override FPCOPT+=-Cg'#010+ 'endif'#010+ 'endif'#010+ #010+ - 'ifdef LINKSH','ARED'#010+ + 'ifdef LINKSHARED'#010+ '#!!! deactived for testing override FPCOPT+=-XD'#010+ 'endif'#010+ #010+ @@ -1562,11 +1583,11 @@ const fpcmakeini : array[0..253,1..240] of char=( '[command_libc]'#010+ '# Add GCC lib path if asked'#010+ 'ifdef GCCLIBDIR'#010+ - 'override FPCOPT+=-Fl$(GCCLIBDIR)'#010+ + 'override FPCOPT+=-Fl$(GCCLIBDI','R)'#010+ 'ifdef FPCMAKEGCCLIBDIR'#010+ 'override FPCMAKEOPT+=-Fl$(FPCMAKEGCCLIBDIR)'#010+ 'else'#010+ - 'override FPCMAK','EOPT+=-Fl$(GCCLIBDIR)'#010+ + 'override FPCMAKEOPT+=-Fl$(GCCLIBDIR)'#010+ 'endif'#010+ 'endif'#010+ 'ifdef OTHERLIBDIR'#010+ @@ -1575,20 +1596,20 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ #010+ '[command_end]'#010+ - '# Add commandline options last so they can override'#010+ + '# Add commandline options l','ast so they can override'#010+ 'ifdef OPT'#010+ 'override FPCOPT+=$(OPT)'#010+ 'endif'#010+ #010+ - '# Override options to co','mpile the fpmake-binary with command-line op'+ - 'tions provided in FPMAKEBUILDOPT'#010+ + '# Override options to compile the fpmake-binary with command-line opti'+ + 'ons provided in FPMAKEBUILDOPT'#010+ 'ifdef FPMAKEBUILDOPT'#010+ 'override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)'#010+ 'endif'#010+ - #010+ + #010, '# Add defines from FPCOPTDEF to FPCOPT'#010+ 'ifdef FPCOPTDEF'#010+ - 'override FPCOPT+=$(addprefix -d,$(F','PCOPTDEF))'#010+ + 'override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))'#010+ 'endif'#010+ #010+ '# Was a config file specified ?'#010+ @@ -1596,33 +1617,33 @@ const fpcmakeini : array[0..253,1..240] of char=( 'override FPCOPT+=@$(CFGFILE)'#010+ 'endif'#010+ #010+ - '# Use the environment to pass commandline options?'#010+ + '# Use the environment to pass commandline options?',#010+ 'ifdef USEENV'#010+ 'override FPCEXTCMD:=$(FPCOPT)'#010+ 'override FPCOPT:=!FPCEXTCMD'#010+ 'export FPCEXTCMD'#010+ - 'e','ndif'#010+ + 'endif'#010+ #010+ 'override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#010+ 'override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)'#010+ #010+ 'ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))'#010+ - 'override ACROSSCOMPILE=1'#010+ + 'overr','ide ACROSSCOMPILE=1'#010+ 'endif'#010+ #010+ 'ifdef ACROSSCOMPILE'#010+ 'override FPCOPT+=$(CROSSOPT)'#010+ 'endif'#010+ #010+ - '# Compi','ler commandline'#010+ + '# Compiler commandline'#010+ 'override COMPILER:=$(strip $(FPC) $(FPCOPT))'#010+ #010+ '# also call ppas if with command option -s'#010+ - '# but only if the FULL_SOURCE and FULL_TARGET are equal'#010+ + '# but only if the FULL_SOURCE and FULL_TARGET',' are equal'#010+ '# or if -sh is used'#010+ 'ifneq (,$(findstring -sh ,$(COMPILER)))'#010+ 'UseEXECPPAS=1'#010+ - 'endif',#010+ + 'endif'#010+ 'ifneq (,$(findstring -s ,$(COMPILER)))'#010+ 'ifeq ($(FULL_SOURCE),$(FULL_TARGET))'#010+ 'UseEXECPPAS=1'#010+ @@ -1631,7 +1652,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'ifneq ($(UseEXECPPAS),1)'#010+ 'EXECPPAS='#010+ 'else'#010+ - 'ifdef RUNBATCH'#010+ + 'ifdef R','UNBATCH'#010+ 'EXECPPAS:=@$(RUNBATCH) $(PPAS)'#010+ 'else'#010+ 'EXECPPAS:=@$(PPAS)'#010+ @@ -1639,24 +1660,25 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ #010+ - '[loaderrules]',#010+ + '[loaderrules]'#010+ '#####################################################################'#010+ '# Loaders'#010+ - '#####################################################################'#010+ + '#####################################################################', + #010+ #010+ '.PHONY: fpc_loaders'#010+ #010+ 'ifneq ($(TARGET_LOADERS),)'#010+ 'override ALLTARGET+=fpc_loaders'#010+ - 'override',' CLEANTARGET+=fpc_loaders_clean'#010+ + 'override CLEANTARGET+=fpc_loaders_clean'#010+ 'override INSTALLTARGET+=fpc_loaders_install'#010+ #010+ 'override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))'#010+ 'endif'#010+ #010+ - '%$(OEXT): %$(LOADEREXT)'#010+ + '%$(O','EXT): %$(LOADEREXT)'#010+ 'ifdef COMPILER_UNITTARGETDIR'#010+ - ' $(AS) -o $(COMPILER_UNITTARGETDIR',')/$*$(OEXT) $<'#010+ + ' $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $<'#010+ 'else'#010+ ' $(AS) -o $*$(OEXT) $<'#010+ 'endif'#010+ @@ -1664,83 +1686,83 @@ const fpcmakeini : array[0..253,1..240] of char=( 'fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)'#010+ #010+ 'fpc_loaders_clean:'#010+ - 'ifdef COMPILER_UNITTARGETDIR'#010+ + 'ifdef COMPILER_UNI','TTARGETDIR'#010+ ' -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)'+ ')'#010+ 'else'#010+ - ' ',' -$(DEL) $(LOADEROFILES)'#010+ + ' -$(DEL) $(LOADEROFILES)'#010+ 'endif'#010+ #010+ 'fpc_loaders_install:'#010+ ' $(MKDIR) $(INSTALL_UNITDIR)'#010+ 'ifdef COMPILER_UNITTARGETDIR'#010+ - ' $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFIL'+ - 'ES)) $(INSTALL_UNITDIR)'#010+ + ' $(INSTALL) $(addpre','fix $(COMPILER_UNITTARGETDIR)/,$(LOADEROF'+ + 'ILES)) $(INSTALL_UNITDIR)'#010+ 'else'#010+ - ' $(INSTALL)',' $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+ + ' $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+ 'endif'#010+ #010+ #010+ '[unitrules]'#010+ '#####################################################################'#010+ '# Units'#010+ - '#####################################################################'#010+ + '################','####################################################'+ + '#'#010+ #010+ '.PHONY: fpc_units'#010+ #010+ - 'ifneq ($(TARGET_','UNITS)$(TARGET_IMPLICITUNITS),)'#010+ + 'ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)'#010+ 'override ALLTARGET+=fpc_units'#010+ #010+ 'override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))'#010+ - 'override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITU'+ - 'NITS))'#010+ - 'override INSTALLPPUFILES+=$(UNITPPUFILE','S) $(IMPLICITUNITPPUFILES)'#010+ + 'override IMPLICITUNITPPUFI','LES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICI'+ + 'TUNITS))'#010+ + 'override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+ 'override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+ 'endif'#010+ #010+ - 'fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)'#010+ + 'fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)',#010+ #010+ #010+ '[exerules]'#010+ '#####################################################################'#010+ - '# Exes',#010+ + '# Exes'#010+ '#####################################################################'#010+ #010+ '.PHONY: fpc_exes'#010+ #010+ '# Programs are not needed for a cross installation'#010+ - 'ifndef CROSSINSTALL'#010+ + 'ifndef CR','OSSINSTALL'#010+ 'ifneq ($(TARGET_PROGRAMS),)'#010+ - 'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PR','OGRAMS))'#010+ + 'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#010+ 'override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addsuffi'+ 'x $(LTOEXT),$(TARGET_PROGRAMS))$(addprefix $(STATICLIBPREFIX),$(addsuf'+ - 'fix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX'+ - '),$(addsuffix $(STATI','CLIBEXT),$(TARGET_PROGRAMS)))'#010+ + 'f','ix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREF'+ + 'IX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))'#010+ 'override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))'#010+ #010+ 'override ALLTARGET+=fpc_exes'#010+ - 'override INSTALLEXEFILES+=$(EXEFILES)'#010+ + 'override INSTALLEXEFILE','S+=$(EXEFILES)'#010+ 'override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)'#010+ - 'override CLEANEXEDBGFILES+','=$(EXEDBGFILES)'#010+ + 'override CLEANEXEDBGFILES+=$(EXEDBGFILES)'#010+ 'ifeq ($(OS_TARGET),os2)'#010+ 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+ 'endif'#010+ 'ifeq ($(OS_TARGET),emx)'#010+ - 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+ + 'override CLEA','NEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ #010+ - 'fpc_exes: $(COMPI','LER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES'+ - ')'#010+ + 'fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)'#010+ #010+ #010+ '[rstrules]'#010+ '#####################################################################'#010+ - '# Resource strings'#010+ + '# Resource str','ings'#010+ '#####################################################################'#010+ #010+ - 'ifdef TARGET_R','STS'#010+ + 'ifdef TARGET_RSTS'#010+ 'override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))'#010+ #010+ 'override CLEANRSTFILES+=$(RSTFILES)'#010+ @@ -1748,53 +1770,52 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ #010+ '[examplerules]'#010+ - '#####################################################################'#010+ - '# Examples'#010+ - '#######################################','#############################'+ + '##############################','######################################'+ '#'#010+ + '# Examples'#010+ + '#####################################################################'#010+ #010+ '.PHONY: fpc_examples'#010+ #010+ 'ifneq ($(TARGET_EXAMPLES),)'#010+ 'HASEXAMPLES=1'#010+ - 'override EXAMPLESOURCEFILES=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPL'+ - 'ES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EX'+ - 'AMPL','ES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#010+ + 'override EXAMPLESOURCEFILES=$(wildcard $(addsuffix .pp',',$(TARGET_EXAM'+ + 'PLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_'+ + 'EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#010+ 'override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))'#010+ - 'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(adds'+ - 'uffix $(LTOEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPRE','FIX),$'+ + 'override EXAMPLEOFILES:=$(addsuffix $(OEXT','),$(TARGET_EXAMPLES)) $(ad'+ + 'dsuffix $(LTOEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$'+ '(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLI'+ 'BPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))'#010+ - 'override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES))'+ + 'override EXAMPLE','DBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES'+ + '))'#010+ #010+ - #010+ - 'override CLEANEXEFILES+=$(EXAMPLEF','ILES) $(EXAMPLEOFILES)'#010+ + 'override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)'#010+ 'override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES)'#010+ 'ifeq ($(OS_TARGET),os2)'#010+ - 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+ + 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_E','XAMPLES))'#010+ 'endif'#010+ 'ifeq ($(OS_TARGET),emx)'#010+ - 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(T','ARGET_EXAMPLES))'#010+ + 'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+ 'endif'#010+ 'endif'#010+ 'ifneq ($(TARGET_EXAMPLEDIRS),)'#010+ 'HASEXAMPLES=1'#010+ 'endif'#010+ #010+ - 'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIR'+ - 'S))'#010+ + 'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDI', + 'RS))'#010+ #010+ #010+ '[compilerules]'#010+ - '####################################################################','#'+ - #010+ + '#####################################################################'#010+ '# General compile rules'#010+ '#####################################################################'#010+ #010+ - '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared'#010+ + '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_s','hared'#010+ #010+ '$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)'#010+ - ' @$(ECHOREDIR) Compiled > $(FPCM','ADE)'#010+ + ' @$(ECHOREDIR) Compiled > $(FPCMADE)'#010+ #010+ 'fpc_all: $(FPCMADE)'#010+ #010+ @@ -1805,21 +1826,21 @@ const fpcmakeini : array[0..253,1..240] of char=( ' $(MAKE) all DEBUG=1'#010+ #010+ 'fpc_release:'#010+ - ' $(MAKE) all RELEASE=1'#010+ + ' $(MA','KE) all RELEASE=1'#010+ #010+ '# General compile rules, available for both possible .pp and .pas exte'+ - 'n','sions'#010+ + 'nsions'#010+ #010+ '.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) $(LTOEXT) .pas .lpr .dpr .pp .r'+ 'c .res'#010+ #010+ '$(COMPILER_UNITTARGETDIR):'#010+ - ' $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)'#010+ + ' $(MKDIRTREE) $(COMPILER_UNITTA','RGETDIR)'#010+ #010+ '$(COMPILER_TARGETDIR):'#010+ ' $(MKDIRTREE) $(COMPILER_TARGETDIR)'#010+ #010+ - '%$(PPUEXT): %','.pp'#010+ + '%$(PPUEXT): %.pp'#010+ ' $(COMPILER) $<'#010+ ' $(EXECPPAS)'#010+ #010+ @@ -1828,14 +1849,14 @@ const fpcmakeini : array[0..253,1..240] of char=( ' $(EXECPPAS)'#010+ #010+ '%$(EXEEXT): %.pp'#010+ - ' $(COMPILER) $<'#010+ + ' $(COMPILER) $<'#010, ' $(EXECPPAS)'#010+ #010+ '%$(EXEEXT): %.pas'#010+ ' $(COMPILER) $<'#010+ ' $(EXECPPAS)'#010+ #010+ - '%$(EXEE','XT): %.lpr'#010+ + '%$(EXEEXT): %.lpr'#010+ ' $(COMPILER) $<'#010+ ' $(EXECPPAS)'#010+ #010+ @@ -1844,79 +1865,78 @@ const fpcmakeini : array[0..253,1..240] of char=( ' $(EXECPPAS)'#010+ #010+ '%.res: %.rc'#010+ - ' windres -i $< -o $@'#010+ + ' windres -i $<',' -o $@'#010+ #010+ '# Search paths for .ppu, .pp, .pas, .lpr, .dpr'#010+ - 'vpath %.pp $(COMPILER_SOURCEDIR) $(','COMPILER_INCLUDEDIR)'#010+ + 'vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ 'vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ 'vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ - 'vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ + 'vpath %.dpr $(C','OMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+ 'vpath %.inc $(COMPILER_INCLUDEDIR)'#010+ - 'vpath %$(OEXT',') $(COMPILER_UNITTARGETDIR)'#010+ + 'vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)'#010+ 'vpath %$(LTOEXT) $(COMPILER_UNITTARGETDIR)'#010+ 'vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)'#010+ #010+ '[sharedrules]'#010+ - '#####################################################################'#010+ - '# Library'#010+ - '###############################','#####################################'+ + '#####################','###############################################'+ '#'#010+ + '# Library'#010+ + '#####################################################################'#010+ #010+ '.PHONY: fpc_shared'#010+ #010+ 'override INSTALLTARGET+=fpc_shared_install'#010+ #010+ 'ifndef SHARED_LIBVERSION'#010+ - 'SHARED_LIBVERSION=$(FPC_VERSION)'#010+ + 'SHARED_LIBVERSION=$(F','PC_VERSION)'#010+ 'endif'#010+ #010+ 'ifndef SHARED_LIBNAME'#010+ 'SHARED_LIBNAME=$(PACKAGE_NAME)'#010+ 'endif'#010+ #010+ - 'ifndef SHAR','ED_FULLNAME'#010+ + 'ifndef SHARED_FULLNAME'#010+ 'SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSIO'+ 'N)$(SHAREDLIBEXT)'#010+ 'endif'#010+ #010+ - '# Default sharedlib units are all unit objects'#010+ + '# Default sharedlib units are all unit obje','cts'#010+ 'ifndef SHARED_LIBUNITS'#010+ 'SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)'#010+ - 'overri','de SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED'+ - '_LIBUNITS))'#010+ + 'override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_L'+ + 'IBUNITS))'#010+ 'endif'#010+ #010+ 'fpc_shared:'#010+ 'ifdef HASSHAREDLIB'#010+ - ' $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1'#010+ + ' $(MAKE) all CREATESHARED=1 LIN','KSHARED=1 CREATESMART=1'#010+ 'ifneq ($(SHARED_BUILD),n)'#010+ - ' $(PPUMOVE) -q $(SHARED_LIBUNITS)',' -i$(COMPILER_UNITTARGETDIR)'+ - ' -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX)'#010+ + ' $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -'+ + 'o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX)'#010+ 'endif'#010+ 'else'#010+ - ' @$(ECHO) Shared Libraries not supported'#010+ + ' @$(ECHO) Shared Libraries not sup','ported'#010+ 'endif'#010+ #010+ 'fpc_shared_install:'#010+ 'ifneq ($(SHARED_BUILD),n)'#010+ 'ifneq ($(SHARED_LIBUNITS),)'#010+ - 'if','neq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)'#010+ + 'ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)'#010+ ' $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INST'+ 'ALL_SHAREDDIR)'#010+ - 'endif'#010+ + 'e','ndif'#010+ 'endif'#010+ 'endif'#010+ #010+ '[installrules]'#010+ - '#########################################################','###########'+ - '#'#010+ + '#####################################################################'#010+ '# Install rules'#010+ '#####################################################################'#010+ #010+ - '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall'#010+ + '.PHONY: fpc_install fpc_sourceinstall fpc_examplei','nstall'#010+ #010+ 'ifdef INSTALL_UNITS'#010+ - 'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNIT','S))'#010+ + 'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#010+ 'endif'#010+ #010+ 'ifdef INSTALL_BUILDUNIT'#010+ @@ -1924,30 +1944,29 @@ const fpcmakeini : array[0..253,1..240] of char=( '(INSTALLPPUFILES))'#010+ 'endif'#010+ #010+ - 'ifdef INSTALLPPUFILES'#010+ + 'ifdef INSTALLPPUFIL','ES'#010+ '# Avoid getting the same name twice as some install EXE fail'#010+ - '# in this case, happends f','or instance for OS/2 target'#010+ + '# in this case, happends for instance for OS/2 target'#010+ 'ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICL'+ 'IBEXT))'#010+ - 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+ - 'LES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefi','x $('+ + 'override INSTALLPPULINKFILES:=$(subst $(PPUE','XT),$(OEXT),$(INSTALLPPU'+ + 'FILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+ 'STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))'+ ') $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(I'+ - 'NSTALLPPUFILES)))'#010+ + 'NSTALL','PPUFILES)))'#010+ 'else'#010+ 'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+ - 'LES',')) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+ - 'STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))'+ - ')'#010+ + 'LES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(ST'+ + 'ATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))'#010+ 'endif'#010+ #010+ - 'ifneq ($(UNITTARGETDIRPREFIX),)'#010+ + 'ifneq ','($(UNITTARGETDIRPREFIX),)'#010+ 'override INSTALLPPUFILENAMES:=$(notdir $(INSTALLPPUFILES))'#010+ - 'overr','ide INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES))'#010+ + 'override INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES))'#010+ 'override INSTALLPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLP'+ 'PUFILENAMES))'#010+ - 'override INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPRE'+ - 'FIX),$(INSTALLPPULINKFIL','ENAMES)))'#010+ + 'over','ride INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRP'+ + 'REFIX),$(INSTALLPPULINKFILENAMES)))'#010+ 'endif'#010+ '# Implicitly install Package.fpc'#010+ 'override INSTALL_CREATEPACKAGEFPC=1'#010+ @@ -1955,25 +1974,25 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ 'ifdef INSTALLEXEFILES'#010+ 'ifneq ($(TARGETDIRPREFIX),)'#010+ - 'override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(IN'+ - 'STALLEXEFILES)))'#010+ + 'override',' INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $('+ + 'INSTALLEXEFILES)))'#010+ + 'endif'#010+ 'endif'#010+ - 'endif',#010+ #010+ 'fpc_install: all $(INSTALLTARGET)'#010+ 'ifdef INSTALLEXEFILES'#010+ ' $(MKDIR) $(INSTALL_BINDIR)'#010+ - ' $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)'#010+ + ' $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR',')'#010+ 'endif'#010+ 'ifdef INSTALL_CREATEPACKAGEFPC'#010+ 'ifdef FPCMAKE'#010+ - '# If the fpcpackage variable is set t','hen create and install Package.'+ - 'fpc,'#010+ + '# If the fpcpackage variable is set then create and install Package.fp'+ + 'c,'#010+ '# a safety check is done if Makefile.fpc is available'#010+ 'ifdef PACKAGE_VERSION'#010+ 'ifneq ($(wildcard Makefile.fpc),)'#010+ - ' $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#010+ - ' $(MKDIR) $(INSTALL_UNI','TDIR)'#010+ + ' ',' $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#010+ + ' $(MKDIR) $(INSTALL_UNITDIR)'#010+ ' $(INSTALL) Package.fpc $(INSTALL_UNITDIR)'#010+ 'endif'#010+ 'endif'#010+ @@ -1981,15 +2000,15 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ 'ifdef INSTALLPPUFILES'#010+ ' $(MKDIR) $(INSTALL_UNITDIR)'#010+ - ' $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+ + ' $(IN','STALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+ 'ifneq ($(INSTALLPPULINKFILES),)'#010+ - ' $(INS','TALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+ + ' $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+ 'endif'#010+ 'ifneq ($(wildcard $(LIB_FULLNAME)),)'#010+ ' $(MKDIR) $(INSTALL_LIBDIR)'#010+ - ' $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)'#010+ + ' $(INSTALL) $(LIB','_FULLNAME) $(INSTALL_LIBDIR)'#010+ 'ifdef inUnix'#010+ - ' ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)','/$(LIB_NAME)'#010+ + ' ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#010+ 'endif'#010+ 'endif'#010+ 'endif'#010+ @@ -1998,26 +2017,26 @@ const fpcmakeini : array[0..253,1..240] of char=( ' $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)'#010+ 'endif'#010+ #010+ - 'fpc_sourceinstall: distclean'#010+ + 'f','pc_sourceinstall: distclean'#010+ ' $(MKDIR) $(INSTALL_SOURCEDIR)'#010+ - ' $(COPYTREE) $(BA','SEDIR)/* $(INSTALL_SOURCEDIR)'#010+ + ' $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)'#010+ #010+ 'fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(T'+ 'ARGET_EXAMPLEDIRS))'#010+ 'ifdef HASEXAMPLES'#010+ - ' $(MKDIR) $(INSTALL_EXAMPLEDIR)'#010+ + ' $(M','KDIR) $(INSTALL_EXAMPLEDIR)'#010+ 'endif'#010+ 'ifdef EXAMPLESOURCEFILES'#010+ - ' $(COPY) $(EXAMPLESOURCE','FILES) $(INSTALL_EXAMPLEDIR)'#010+ + ' $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)'#010+ 'endif'#010+ 'ifdef TARGET_EXAMPLEDIRS'#010+ ' $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EX'+ 'AMPLEDIR)'#010+ 'endif'#010+ #010+ - '[distinstallrules]'#010+ + '[di','stinstallrules]'#010+ '#####################################################################'#010+ - '# Di','st Install'#010+ + '# Dist Install'#010+ '#####################################################################'#010+ #010+ '.PHONY: fpc_distinstall'#010+ @@ -2025,16 +2044,15 @@ const fpcmakeini : array[0..253,1..240] of char=( 'fpc_distinstall: install exampleinstall'#010+ #010+ #010+ - '[zipinstallrules]'#010+ + '[','zipinstallrules]'#010+ '#####################################################################'#010+ - '# Z','ip'#010+ + '# Zip'#010+ '#####################################################################'#010+ #010+ '.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall'#010+ #010+ - '# Temporary path to pack a file, can only use a single deep'#010+ - '# subdir, because the deltree can'#039't see',' the whole tree to remove'+ - #010+ + '# Tempora','ry path to pack a file, can only use a single deep'#010+ + '# subdir, because the deltree can'#039't see the whole tree to remove'#010+ 'ifndef PACKDIR'#010+ 'ifndef inUnix'#010+ 'PACKDIR=$(BASEDIR)/../fpc-pack'#010+ @@ -2043,12 +2061,12 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ 'endif'#010+ #010+ - '# Maybe create default zipname from packagename'#010+ + '# Maybe create default z','ipname from packagename'#010+ 'ifndef ZIPNAME'#010+ 'ifdef DIST_ZIPNAME'#010+ 'ZIPNAME=$(DIST_ZIPNAME)'#010+ 'else'#010+ - 'ZIP','NAME=$(PACKAGE_NAME)'#010+ + 'ZIPNAME=$(PACKAGE_NAME)'#010+ 'endif'#010+ 'endif'#010+ #010+ @@ -2057,7 +2075,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ #010+ '# ZipTarget'#010+ - 'ifndef ZIPTARGET'#010+ + 'ifndef ZIPTARG','ET'#010+ 'ifdef DIST_ZIPTARGET'#010+ 'ZIPTARGET=DIST_ZIPTARGET'#010+ 'else'#010+ @@ -2065,7 +2083,7 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ 'endif'#010+ #010+ - '# Use',' tar by default under linux'#010+ + '# Use tar by default under linux'#010+ 'ifndef USEZIP'#010+ 'ifdef inUnix'#010+ 'USETAR=1'#010+ @@ -2074,50 +2092,50 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '# Use a wrapper script by default for Os/2'#010+ 'ifndef inUnix'#010+ - 'USEZIPWRAPPER=1'#010+ + 'USEZIPWRAPPER=1'#010, 'endif'#010+ #010+ '# We need to be able to run in the current OS so fix'#010+ '# the path separator'#010+ - 'ifdef USE','ZIPWRAPPER'#010+ + 'ifdef USEZIPWRAPPER'#010+ 'ZIPPATHSEP=$(PATHSEP)'#010+ 'ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))'#010+ 'else'#010+ 'ZIPPATHSEP=/'#010+ 'endif'#010+ #010+ - '# Create commands to create the zip/tar file'#010+ + '# Create commands to c','reate the zip/tar file'#010+ 'ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))'#010+ - 'ZIPCMD_CDBASE',':=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#010+ + 'ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#010+ 'ifdef USETAR'#010+ 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)'#010+ - 'ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *'#010+ + 'ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDES','TFILE) *'#010+ 'else'#010+ 'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)'#010+ - 'ZIPCMD_ZIP:=$(subst /,$','(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPD'+ - 'ESTFILE) *'#010+ + 'ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDES'+ + 'TFILE) *'#010+ 'endif'#010+ #010+ 'fpc_zipinstall:'#010+ ' $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1'#010+ - ' $(MKDIR) $(DIST_DESTDIR)'#010+ + ' ',' $(MKDIR) $(DIST_DESTDIR)'#010+ ' $(DEL) $(ZIPDESTFILE)'#010+ 'ifdef USEZIPWRAPPER'#010+ - '# Handle g','echo separate as we need to espace \ with \\'#010+ + '# Handle gecho separate as we need to espace \ with \\'#010+ 'ifneq ($(ECHOREDIR),echo)'#010+ ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPE'+ 'R)'#010+ - ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)'+ - #010+ - ' $(ECHOREDIR) -e "','$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRA'+ - 'PPER)'#010+ + ' ',' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPE'+ + 'R)'#010+ + ' $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPP'+ + 'ER)'#010+ 'else'#010+ ' echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)'#010+ ' echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#010+ - ' echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+ + ' ',' echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+ 'endif'#010+ 'ifdef inUnix'#010+ - ' /bin/sh $(ZIPWRAPPER)'#010, + ' /bin/sh $(ZIPWRAPPER)'#010+ 'else'#010+ 'ifdef RUNBATCH'#010+ ' $(RUNBATCH) $(ZIPWRAPPER)'#010+ @@ -2127,75 +2145,102 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ ' $(DEL) $(ZIPWRAPPER)'#010+ 'else'#010+ - ' $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+ + ' $(ZIPCMD_CDPACK',') ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+ 'endif'#010+ ' $(DELTREE) $(PACKDIR)'#010+ #010+ - 'fpc_zipsourceins','tall:'#010+ + 'fpc_zipsourceinstall:'#010+ ' $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIP'+ 'SOURCESUFFIX)'#010+ #010+ 'fpc_zipexampleinstall:'#010+ 'ifdef HASEXAMPLES'#010+ - ' $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZI'+ - 'PEXAMPLESUFFIX)'#010+ + ' $(MAKE) fp','c_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$('+ + 'ZIPEXAMPLESUFFIX)'#010+ 'endif'#010+ #010+ - 'fpc_zipdistinst','all:'#010+ + 'fpc_zipdistinstall:'#010+ ' $(MAKE) fpc_zipinstall ZIPTARGET=distinstall'#010+ #010+ #010+ '[cleanrules]'#010+ '#####################################################################'#010+ - '# Clean rules'#010+ + '# Clean',' rules'#010+ '#####################################################################'#010+ #010+ - '.PHONY: fpc_','clean fpc_cleanall fpc_distclean'#010+ + '.PHONY: fpc_clean fpc_cleanall fpc_distclean'#010+ #010+ 'ifdef EXEFILES'#010+ 'override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES'+ '))'#010+ - 'override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDB'+ - 'GFILES))'#010+ + 'override CLEANEXEDBGFILES:=$','(addprefix $(TARGETDIRPREFIX),$(CLEANEXE'+ + 'DBGFILES))'#010+ 'endif'#010+ #010+ 'ifdef CLEAN_PROGRAMS'#010+ - 'override CL','EANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $'+ - '(EXEEXT), $(CLEAN_PROGRAMS)))'#010+ - 'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix '+ - '$(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+ + 'override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(E'+ + 'XEEXT), $(CLEAN_PROGRAMS)))'#010+ + 'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(add','suffi'+ + 'x $(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+ 'endif'#010+ #010+ 'ifdef CLEAN_UNITS'#010+ - 'override CLEANPPUFILES+=','$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#010+ + 'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#010+ 'endif'#010+ #010+ 'ifdef CLEANPPUFILES'#010+ 'override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)'+ - ') $(subst $(PPUEXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLI'+ - 'BPREFIX),$(subst $(PPUEXT),$(STATIC','LIBEXT),$(CLEANPPUFILES))) $(addp'+ + ') $(subst $(PPU','EXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATIC'+ + 'LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addp'+ 'refix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUF'+ 'ILES)))'#010+ 'ifdef DEBUGSYMEXT'#010+ - 'override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPP'+ - 'UFILES))'#010+ + 'override CLEANPPULINK','FILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEAN'+ + 'PPUFILES))'#010+ 'endif'#010+ - 'override CLEANPPUFILENAMES',':=$(CLEANPPUFILES)'#010+ + 'override CLEANPPUFILENAMES:=$(CLEANPPUFILES)'#010+ 'override CLEANPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFI'+ 'LENAMES))'#010+ - 'override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES)'#010+ + 'override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES',')'#010+ 'override CLEANPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPREFI'+ - 'X),$(CLEANPPULINKF','ILENAMES)))'#010+ + 'X),$(CLEANPPULINKFILENAMES)))'#010+ 'endif'#010+ #010+ 'fpc_clean: $(CLEANTARGET)'#010+ 'ifdef CLEANEXEFILES'#010+ ' -$(DEL) $(CLEANEXEFILES)'#010+ 'endif'#010+ - '# DELTREE instead of DEL because on Mac OS X these are directories'#010+ + '# DELTREE instead of DEL because on Mac OS X t','hese are directories'#010+ 'ifdef CLEANEXEDBGFILES'#010+ ' -$(DELTREE) $(CLEANEXEDBGFILES)'#010+ - 'endif'#010, + 'endif'#010+ + 'ifdef CLEANPPUFILES'#010+ + ' -$(DEL) $(CLEANPPUFILES)'#010+ + 'endif'#010+ + 'ifneq ($(CLEANPPULINKFILES),)'#010+ + ' -$(DEL) $(CLEANPPULINKFILES)'#010+ + 'endif'#010+ + 'ifdef CLEANRSTFILE','S'#010+ + ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+ + 'endif'#010+ + 'ifdef CLEAN_FILES'#010+ + ' -$(DEL) $(CLEAN_FILES)'#010+ + 'endif'#010+ + 'ifdef LIB_NAME'#010+ + ' -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+ + 'endif'#010+ + ' -$(DEL) $(FPCMADE) *$(FULL_TARGET).','fpm Package.fpc *$(ASMEXT'+ + ')'#010+ + ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_scr'+ + 'ipt.res *_link.res'#010+ + ' -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+ + 'TCHEXT)'#010+ + #010+ + 'fpc_cleanall: $(CLEANTARGET)'#010+ + 'ifdef CLEANEXEFI','LES'#010+ + ' -$(DEL) $(CLEANEXEFILES)'#010+ + 'endif'#010+ + 'ifdef COMPILER_UNITTARGETDIR'#010+ 'ifdef CLEANPPUFILES'#010+ ' -$(DEL) $(CLEANPPUFILES)'#010+ 'endif'#010+ @@ -2203,51 +2248,26 @@ const fpcmakeini : array[0..253,1..240] of char=( ' -$(DEL) $(CLEANPPULINKFILES)'#010+ 'endif'#010+ 'ifdef CLEANRSTFILES'#010+ - ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+ - 'endif'#010+ - 'ifdef CLEAN_F','ILES'#010+ - ' -$(DEL) $(CLEAN_FILES)'#010+ - 'endif'#010+ - 'ifdef LIB_NAME'#010+ - ' -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+ - 'endif'#010+ - ' -$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)'#010+ - ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.re','s *_s'+ - 'cript.res *_link.res'#010+ - ' -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+ - 'TCHEXT)'#010+ + ' -$(DEL) ','$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'+ #010+ - 'fpc_cleanall: $(CLEANTARGET)'#010+ - 'ifdef CLEANEXEFILES'#010+ - ' -$(DEL) $(CLEANEXEFILES)'#010+ - 'endif'#010+ - 'ifdef COMPILER_UNITTARGETDIR'#010+ - 'ifdef CLEANPPUFILE','S'#010+ - ' -$(DEL) $(CLEANPPUFILES)'#010+ - 'endif'#010+ - 'ifneq ($(CLEANPPULINKFILES),)'#010+ - ' -$(DEL) $(CLEANPPULINKFILES)'#010+ - 'endif'#010+ - 'ifdef CLEANRSTFILES'#010+ - ' -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+ 'endif'#010+ 'endif'#010+ 'ifdef CLEAN_FILES'#010+ - ' ',' -$(DEL) $(CLEAN_FILES)'#010+ + ' -$(DEL) $(CLEAN_FILES)'#010+ 'endif'#010+ ' -$(DELTREE) units'#010+ ' -$(DELTREE) bin'#010+ - ' -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *'+ + ' -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *', '$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)'#010+ 'ifneq ($(PPUEXT),.ppu)'#010+ - ' -$(DEL) *.o *.p','pu *.a'#010+ + ' -$(DEL) *.o *.ppu *.a'#010+ 'endif'#010+ ' -$(DELTREE) *$(SMARTEXT)'#010+ ' -$(DEL) fpcmade.* Package.fpc *.fpm'#010+ - ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_scr'+ - 'ipt.res *_link.res'#010+ - ' -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppa','slink$('+ - 'BATCHEXT)'#010+ + ' -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*','.res *_s'+ + 'cript.res *_link.res'#010+ + ' -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+ + 'TCHEXT)'#010+ 'ifdef AOUTEXT'#010+ ' -$(DEL) *$(AOUTEXT)'#010+ 'endif'#010+ @@ -2255,156 +2275,158 @@ const fpcmakeini : array[0..253,1..240] of char=( ' -$(DEL) *$(DEBUGSYMEXT)'#010+ 'endif'#010+ 'ifdef LOCALFPMAKEBIN'#010+ - ' -$(DEL) $(LOCALFPMAKEBIN)'#010+ + ' ','-$(DEL) $(LOCALFPMAKEBIN)'#010+ ' -$(DEL) $(FPMAKEBINOBJ)'#010+ 'endif'#010+ #010+ 'fpc_distclean: cleanall'#010+ - #010, + #010+ #010+ '[baseinforules]'#010+ '#####################################################################'#010+ '# Base info rules'#010+ - '#####################################################################'#010+ + '#############################################','#######################'+ + '#'#010+ #010+ '.PHONY: fpc_baseinfo'#010+ #010+ 'override INFORULES+=fpc_baseinfo'#010+ #010+ - 'fpc_base','info:'#010+ + 'fpc_baseinfo:'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Package info =='#010+ ' @$(ECHO) Package Name..... $(PACKAGE_NAME)'#010+ - ' @$(ECHO) Package Version.. $(PACKAGE_VERSION)'#010+ + ' @$(ECHO) Package Version.. $(','PACKAGE_VERSION)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Configuration info =='#010+ - ' @$(EC','HO)'#010+ + ' @$(ECHO)'#010+ ' @$(ECHO) FPC.......... $(FPC)'#010+ ' @$(ECHO) FPC Version.. $(FPC_VERSION)'#010+ ' @$(ECHO) Source CPU... $(CPU_SOURCE)'#010+ - ' @$(ECHO) Target CPU... $(CPU_TARGET)'#010+ + ' @$(ECH','O) Target CPU... $(CPU_TARGET)'#010+ ' @$(ECHO) Source OS.... $(OS_SOURCE)'#010+ - ' @$(EC','HO) Target OS.... $(OS_TARGET)'#010+ + ' @$(ECHO) Target OS.... $(OS_TARGET)'#010+ ' @$(ECHO) Full Source.. $(FULL_SOURCE)'#010+ ' @$(ECHO) Full Target.. $(FULL_TARGET)'#010+ - ' @$(ECHO) SourceSuffix. $(SOURCESUFFIX)'#010+ + ' @$(ECHO) Source','Suffix. $(SOURCESUFFIX)'#010+ ' @$(ECHO) TargetSuffix. $(TARGETSUFFIX)'#010+ - ' @$(ECHO) ','FPC fpmake... $(FPCFPMAKE)'#010+ + ' @$(ECHO) FPC fpmake... $(FPCFPMAKE)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Directory info =='#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)'#010+ + ' @$(ECHO) Required pkgs... $(REQUIRE_PACKA','GES)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) Basedir......... $(BASEDIR)'#010+ - ' @$(ECHO) FPCD','ir.......... $(FPCDIR)'#010+ + ' @$(ECHO) FPCDir.......... $(FPCDIR)'#010+ ' @$(ECHO) CrossBinDir..... $(CROSSBINDIR)'#010+ ' @$(ECHO) UnitsDir........ $(UNITSDIR)'#010+ - ' @$(ECHO) PackagesDir..... $(PACKAGESDIR)'#010+ + ' @$(ECHO) PackagesDir.','.... $(PACKAGESDIR)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) GCC library..... $(GCCLIBDIR)'#010+ - ' ',' @$(ECHO) Other library... $(OTHERLIBDIR)'#010+ + ' @$(ECHO) Other library... $(OTHERLIBDIR)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Tools info =='#010+ ' @$(ECHO)'#010+ ' @$(ECHO) As........ $(AS)'#010+ - ' @$(ECHO) Ld........ $(LD)'#010+ + ' ',' @$(ECHO) Ld........ $(LD)'#010+ ' @$(ECHO) Ar........ $(AR)'#010+ - ' @$(ECHO) Rc.','....... $(RC)'#010+ + ' @$(ECHO) Rc........ $(RC)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) Mv........ $(MVPROG)'#010+ ' @$(ECHO) Cp........ $(CPPROG)'#010+ ' @$(ECHO) Rm........ $(RMPROG)'#010+ - ' @$(ECHO) GInstall.. $(GINSTALL)'#010+ + ' ',' @$(ECHO) GInstall.. $(GINSTALL)'#010+ ' @$(ECHO) Echo...... $(ECHO)'#010+ - ' @$(ECH','O) Shell..... $(SHELL)'#010+ + ' @$(ECHO) Shell..... $(SHELL)'#010+ ' @$(ECHO) Date...... $(DATE)'#010+ ' @$(ECHO) FPCMake... $(FPCMAKE)'#010+ ' @$(ECHO) PPUMove... $(PPUMOVE)'#010+ - ' @$(ECHO) Zip....... $(ZIPPROG)'#010+ + ' @','$(ECHO) Zip....... $(ZIPPROG)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) == Object info =='#010+ - ' ',' @$(ECHO)'#010+ + ' @$(ECHO)'#010+ ' @$(ECHO) Target Loaders........ $(TARGET_LOADERS)'#010+ ' @$(ECHO) Target Units.......... $(TARGET_UNITS)'#010+ - ' @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)'#010+ - ' @$(ECHO) Target Programs....... $(TARGE','T_PROGRAMS)'#010+ + ' @$(ECHO) Targe','t Implicit Units. $(TARGET_IMPLICITUNITS)'#010+ + ' @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)'#010+ ' @$(ECHO) Target Dirs........... $(TARGET_DIRS)'#010+ ' @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)'#010+ - ' @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)'#010+ + ' @$(ECHO) Targ','et ExampleDirs.... $(TARGET_EXAMPLEDIRS)'#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Clean Units...','...... $(CLEAN_UNITS)'#010+ + ' @$(ECHO) Clean Units......... $(CLEAN_UNITS)'#010+ ' @$(ECHO) Clean Files......... $(CLEAN_FILES)'#010+ ' @$(ECHO)'#010+ ' @$(ECHO) Install Units....... $(INSTALL_UNITS)'#010+ - ' @$(ECHO) Install Files....... $(INSTALL_FILES)'#010+ + ' ',' @$(ECHO) Install Files....... $(INSTALL_FILES)'#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) ','== Install info =='#010+ + ' @$(ECHO) == Install info =='#010+ ' @$(ECHO)'#010+ ' @$(ECHO) DateStr.............. $(DATESTR)'#010+ ' @$(ECHO) ZipName.............. $(ZIPNAME)'#010+ - ' @$(ECHO) ZipPrefix............ $(ZIPPREFIX)'#010+ - ' @$(ECHO) ZipCrossPrefix....... $(ZIPCROS','SPREFIX)'#010+ + ' @$(E','CHO) ZipPrefix............ $(ZIPPREFIX)'#010+ + ' @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)'#010+ ' @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)'#010+ ' @$(ECHO) FullZipName.......... $(FULLZIPNAME)'#010+ - ' @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)'#010+ + ' @$(ECHO) Install FPC Pac','kage.. $(INSTALL_FPCPACKAGE)'#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Install base dir..... $(IN','STALL_BASEDIR)'#010+ + ' @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)'#010+ ' @$(ECHO) Install binary dir... $(INSTALL_BINDIR)'#010+ ' @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)'#010+ - ' @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)'#010+ - ' @$(ECHO) Install source dir... $(INSTALL_','SOURCEDIR)'#010+ + ' @$(ECHO) I','nstall units dir.... $(INSTALL_UNITDIR)'#010+ + ' @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)'#010+ ' @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)'#010+ ' @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)'#010+ - ' @$(ECHO) Install data dir..... $(INSTALL_DATADIR)'#010+ + ' @$(ECHO) I','nstall data dir..... $(INSTALL_DATADIR)'#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Dist destinatio','n dir. $(DIST_DESTDIR)'#010+ + ' @$(ECHO) Dist destination dir. $(DIST_DESTDIR)'#010+ ' @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)'#010+ ' @$(ECHO)'#010+ #010+ '[inforules]'#010+ - '#####################################################################'#010+ - '# Info rules'#010+ - '################################################','####################'+ + '#########################################','###########################'+ '#'#010+ + '# Info rules'#010+ + '#####################################################################'#010+ #010+ '.PHONY: fpc_info'#010+ #010+ 'fpc_info: $(INFORULES)'#010+ #010+ '[makefilerules]'#010+ - '#####################################################################'#010+ + '#####################################################################', + #010+ '# Rebuild Makefile'#010+ - '#####################################################################'#010, + '#####################################################################'#010+ #010+ '.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2'+ ' \'#010+ ' fpc_makefile_dirs'#010+ #010+ 'fpc_makefile:'#010+ - ' $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc'#010+ + ' $(FPCMAKE) -w -T$(OS_TARGET',') Makefile.fpc'#010+ #010+ 'fpc_makefile_sub1:'#010+ 'ifdef TARGET_DIRS'#010+ - ' $(FPCMAKE) -w -T$(OS_TARGET) ','$(addsuffix /Makefile.fpc,$(TAR'+ - 'GET_DIRS))'#010+ + ' $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+ + 'T_DIRS))'#010+ 'endif'#010+ 'ifdef TARGET_EXAMPLEDIRS'#010+ ' $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+ - 'T_EXAMPLEDIRS))'#010+ + 'T_EXAMP','LEDIRS))'#010+ 'endif'#010+ #010+ 'fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_'+ - 'EXAM','PLEDIRS))'#010+ + 'EXAMPLEDIRS))'#010+ #010+ 'fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2'#010+ #010+ 'fpc_makefiles: fpc_makefile fpc_makefile_dirs'#010+ #010+ '[localmakefile]'#010+ - '#####################################################################'#010+ - '# Local Makefile'#010+ - '#######################','#############################################'+ + '####################','################################################'+ '#'#010+ + '# Local Makefile'#010+ + '#####################################################################'#010+ #010+ 'ifneq ($(wildcard fpcmake.loc),)'#010+ 'include fpcmake.loc'#010+ @@ -2412,19 +2434,20 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ #010+ '[userrules]'#010+ - '#####################################################################'#010+ - '# Users rules'#010+ - '###################################','#################################'+ + '#############################','#######################################'+ '#'#010+ + '# Users rules'#010+ + '#####################################################################'#010+ #010+ '[lclrules]'#010+ '#####################################################################'#010+ '# LCL Rules'#010+ - '#####################################################################'#010+ + '#####################','###############################################'+ + '#'#010+ #010+ '# LCL Platform'#010+ 'ifndef LCL_PLATFORM'#010+ - 'ifneq',' ($(findstring $(OS_TARGET),win32 win64),)'#010+ + 'ifneq ($(findstring $(OS_TARGET),win32 win64),)'#010+ 'LCL_PLATFORM=win32'#010+ 'else'#010+ 'LCL_PLATFORM=gtk'#010+ @@ -2432,10 +2455,10 @@ const fpcmakeini : array[0..253,1..240] of char=( 'endif'#010+ 'export LCL_PLATFORM'#010+ #010+ - '# Check if the specified LCLDIR is correct'#010+ + '# Check if the specified LCLDIR i','s correct'#010+ 'ifdef LCLDIR'#010+ 'override LCLDIR:=$(subst \,/,$(LCLDIR))'#010+ - 'ifeq ($(wildcard $(LCLDIR)/','units/$(LCL_PLATFORM)),)'#010+ + 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+ 'override LCLDIR=wrong'#010+ 'endif'#010+ 'else'#010+ @@ -2444,26 +2467,26 @@ const fpcmakeini : array[0..253,1..240] of char=( #010+ '# Check if the default LCLDIR is correct'#010+ 'ifdef DEFAULT_LCLDIR'#010+ - 'override LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+ - 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLAT','FORM)),)'#010+ + 'o','verride LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+ + 'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+ 'override LCLDIR=wrong'#010+ 'endif'#010+ 'endif'#010+ #010+ '# Check for development version'#010+ 'ifeq ($(LCLDIR),wrong)'#010+ - 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+ - ' $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+ - 'ifeq ','($(LCLDIR),)'#010+ + 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(f','irstword $(wildca'+ + 'rd $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+ + 'ifeq ($(LCLDIR),)'#010+ 'override LCLDIR=wrong'#010+ 'endif'#010+ 'endif'#010+ #010+ '# Check for release version'#010+ 'ifeq ($(LCLDIR),wrong)'#010+ - 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+ - ' $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#010+ - 'ife','q ($(LCLDIR),)'#010+ + 'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(f','irstword $(wildca'+ + 'rd $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#010+ + 'ifeq ($(LCLDIR),)'#010+ 'override LCLDIR=wrong'#010+ 'endif'#010+ 'endif'#010+ @@ -2471,17 +2494,16 @@ const fpcmakeini : array[0..253,1..240] of char=( '# Generate dirs'#010+ 'override LCLUNITDIR=$(wildcard $(LCLDIR)/units/$(LCL_PLATFORM) $(LCLDI'+ 'R)/units)'#010+ - 'override LCLCOMPONENTDIR=$(wildcard $(LCLDIR)/.. $(LCLDIR)/../componen'+ - 'ts $(LCLDIR)/components)',#010+ + 'over','ride LCLCOMPONENTDIR=$(wildcard $(LCLDIR)/.. $(LCLDIR)/../compon'+ + 'ents $(LCLDIR)/components)'#010+ 'export LCLDIR LCLUNITDIR LCLCOMPONENTDIR'#010+ #010+ '# Add LCL dirs to paths'#010+ 'override REQUIRE_PACKAGESDIR+=$(LCLCOMPONENTDIR)'#010+ - 'override COMPILER_UNITDIR+=$(LCLUNITDIR)'#010+ + 'override COMPILER_UNITDIR+=$(LCLUN','ITDIR)'#010+ #010+ '[lclinforules]'#010+ - '###################################################################','#'+ - '#'#010+ + '#####################################################################'#010+ '# LCL Info rules'#010+ '#####################################################################'#010+ 'override INFORULES+=lclinfo'#010+ @@ -2489,113 +2511,113 @@ const fpcmakeini : array[0..253,1..240] of char=( '.PHONY: lclinfo'#010+ #010+ 'lclinfo:'#010+ - ' @$(ECHO) == LCL info =='#010+ + ' ',' @$(ECHO) == LCL info =='#010+ ' @$(ECHO)'#010+ - ' @$(ECHO) Platform............. $(LCL','_PLATFORM)'#010+ + ' @$(ECHO) Platform............. $(LCL_PLATFORM)'#010+ ' @$(ECHO) LCLDIR............... $(LCLDIR)'#010+ ' @$(ECHO) LCL Unit dir......... $(LCLUNITDIR)'#010+ - ' @$(ECHO) LCL Component dir.... $(LCLCOMPONENTDIR)'#010+ + ' @$(ECHO) LCL Component dir','.... $(LCLCOMPONENTDIR)'#010+ ' @$(ECHO)'#010+ #010+ '[fpmakeprerules]'#010+ - '###############################','#####################################'+ - '#'#010+ + '#####################################################################'#010+ '# fpmake prerules'#010+ '#####################################################################'#010+ - 'FPMAKEBIN=fpmake$(SRCEXEEXT)'#010+ + 'FPMAKEBIN=fpmake$(SRCEX','EEXT)'#010+ 'FPMAKEBINOBJ=fpmake$(OEXT) fpmake$(LTOEXT)'#010+ 'LOCALFPMAKEBIN=.$(PATHSEP)$(FPMAKEBIN)'#010+ #010+ - '#',' Convert the OS_TARGET and CPU_TARGET options to fpmake'#039's --os '+ - 'and --cpu parameters'#010+ + '# Convert the OS_TARGET and CPU_TARGET options to fpmake'#039's --os an'+ + 'd --cpu parameters'#010+ 'ifdef OS_TARGET'#010+ 'FPC_TARGETOPT+=--os=$(OS_TARGET)'#010+ 'endif'#010+ - 'ifdef CPU_TARGET'#010+ + 'ifdef CPU_T','ARGET'#010+ 'FPC_TARGETOPT+=--cpu=$(CPU_TARGET)'#010+ 'endif'#010+ #010+ - '# Get the location of the bootstrap-fpmkun','it units'#010+ + '# Get the location of the bootstrap-fpmkunit units'#010+ 'PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wild'+ 'card $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))'#010+ - 'ifneq ($(PACKAGEDIR_FPMKUNIT),)'#010+ - 'UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFI', - 'X)'#010+ + 'ifneq ($(PA','CKAGEDIR_FPMKUNIT),)'#010+ + 'UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX'+ + ')'#010+ 'override COMPILER_FPMAKE_UNITDIR=$(UNITDIR_FPMAKE_FPMKUNIT)'#010+ 'FPMKUNIT_SRC=$(PACKAGEDIR_FPMKUNIT)/src/fpmkunit.pp'#010+ - 'FPMKUNIT_PPU=$(UNITDIR_FPMAKE_FPMKUNIT)/fpmkunit.ppu'#010+ + 'FPMKUNIT_PPU=$(UNITDIR_FPMAKE_FPMKU','NIT)/fpmkunit.ppu'#010+ 'endif'#010+ #010+ 'ifdef FPMAKE_SKIP_CONFIG'#010+ - 'override FPMAKE_BUILD_OPT+=$(FPMAKE_SKIP','_CONFIG)'#010+ + 'override FPMAKE_BUILD_OPT+=$(FPMAKE_SKIP_CONFIG)'#010+ 'endif'#010+ #010+ '[fpmakerules]'#010+ '#####################################################################'#010+ '# fpmake rules'#010+ - '#####################################################################'#010+ - '.PHONY: fpc_fpmake fpc_fpmake_clean fpc_fpmake_install ','fpc_fpmake_ex'+ - 'ampleinstall'#010+ + '###################################','#################################'+ + '#'#010+ + '.PHONY: fpc_fpmake fpc_fpmake_clean fpc_fpmake_install fpc_fpmake_exam'+ + 'pleinstall'#010+ #010+ '# Do not pass the Makefile'#039's unit and binary target locations. fpm'+ 'ake uses it'#039's own.'#010+ - 'override FPCOPT:=$(filter-out -FU%,$(FPCOPT))'#010+ + 'override FPCOPT:=$(filter-out -FU%,$(F','PCOPT))'#010+ 'override FPCOPT:=$(filter-out -FE%,$(FPCOPT))'#010+ - '# Compose general fpmake-parameters'#010, + '# Compose general fpmake-parameters'#010+ 'ifdef FPMAKEOPT'#010+ 'FPMAKE_OPT+=$(FPMAKEOPT)'#010+ 'endif'#010+ 'FPMAKE_OPT+=--localunitdir=$(FPCDIR)'#010+ 'FPMAKE_OPT+=--globalunitdir=$(FPCDIR)/packages'#010+ - 'FPMAKE_OPT+=$(FPC_TARGETOPT)'#010+ + 'FPMAKE_OPT+=$(FPC_T','ARGETOPT)'#010+ 'FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))'#010+ 'FPMAKE_OPT+=--compiler=$(FPC)'#010+ - 'FPMAKE_OPT+','=-bu'#010+ + 'FPMAKE_OPT+=-bu'#010+ #010+ 'FPMAKE_INSTALL_OPT+=--unitinstalldir=$(INSTALL_UNITDIR)'#010+ 'ifdef UNIXHier'#010+ 'FPMAKE_INSTALL_OPT+=--prefix=$(INSTALL_PREFIX)'#010+ - 'FPMAKE_INSTALL_OPT+=--baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSI'+ - 'ON)'#010+ + 'FPMAKE_INSTALL_OPT+=--base','installdir=$(INSTALL_LIBDIR)/fpc/$(FPC_VER'+ + 'SION)'#010+ 'else'#010+ - 'FPMAKE_INSTALL_OPT+=--prefix=$(INSTAL','L_BASEDIR)'#010+ + 'FPMAKE_INSTALL_OPT+=--prefix=$(INSTALL_BASEDIR)'#010+ 'endif'#010+ #010+ 'override ALLTARGET+=fpc_fpmake'#010+ 'override INSTALLTARGET+=fpc_fpmake_install'#010+ 'override EXAMPLEINSTALLTARGET+=fpc_fpmake_exampleinstall'#010+ - '# If no fpmake exists and (dist)clean is called, do not try to build f'+ - 'pmake, it will'#010+ - '# most',' often fail because the dependencies are cleared.'#010+ + '#',' If no fpmake exists and (dist)clean is called, do not try to build'+ + ' fpmake, it will'#010+ + '# most often fail because the dependencies are cleared.'#010+ '# In case of a clean, simply do nothing'#010+ 'ifneq ($(wildcard $(LOCALFPMAKEBIN)),)'#010+ - 'override CLEANTARGET+=fpc_fpmake_clean'#010+ + 'override CLEANTARGET+','=fpc_fpmake_clean'#010+ 'endif'#010+ #010+ '$(FPMKUNIT_PPU): $(FPMKUNIT_SRC)'#010+ - ' $(MAKE) -C $(PACKAGE','DIR_FPMKUNIT) bootstrap $(addprefix '+ - 'OPT=,$(FPMAKE_BUILD_OPT))'#010+ + ' $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) bootstrap $(addprefix OP'+ + 'T=,$(FPMAKE_BUILD_OPT))'#010+ #010+ '$(FPMAKEBIN): fpmake.pp $(FPMKUNIT_PPU)'#010+ - ' $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,$(COMPILER_FPMAKE_UNITD'+ - 'IR)) $(FPMAKE_BUILD_OPT)'#010+ + ' $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,','$(COMPILER_FPMAKE_UNI'+ + 'TDIR)) $(FPMAKE_BUILD_OPT)'#010+ #010+ 'fpc_fpmake: $(FPMAKEBIN)'#010+ - ' $(LO','CALFPMAKEBIN) compile $(FPMAKE_OPT)'#010+ + ' $(LOCALFPMAKEBIN) compile $(FPMAKE_OPT)'#010+ #010+ 'fpc_fpmake_clean: $(FPMAKEBIN)'#010+ ' $(LOCALFPMAKEBIN) clean $(FPMAKE_OPT)'#010+ #010+ - 'fpc_fpmake_install: $(FPMAKEBIN)'#010+ + 'fpc_fpmake_install: $(FPMAKEBIN',')'#010+ ' $(LOCALFPMAKEBIN) install $(FPMAKE_OPT) $(FPMAKE_INSTALL_O'+ 'PT)'#010+ #010+ - '# This is not',' completely valid. Exampleinstall should only install t'+ - 'he examples, while'#010+ + '# This is not completely valid. Exampleinstall should only install the'+ + ' examples, while'#010+ '# fpmake -ie installs everything, including the examples. This also me'+ - 'ans that on'#010+ + 'ans th','at on'#010+ '# a distinstall fpmake install wil be called twice.'#010+ - 'fpc_fpmake_exampleinstall: $(FPM','AKEBIN)'#010+ + 'fpc_fpmake_exampleinstall: $(FPMAKEBIN)'#010+ ' $(LOCALFPMAKEBIN) install -ie $(FPMAKE_OPT) $(FPMAKE_INSTA'+ 'LL_OPT)'#010 ); diff --git a/utils/fpcm/fpcmake.ini b/utils/fpcm/fpcmake.ini index b88a2ca947..74cff38bb0 100644 --- a/utils/fpcm/fpcmake.ini +++ b/utils/fpcm/fpcmake.ini @@ -871,11 +871,16 @@ ifneq ($(findstring sparc64,$(shell uname -a)),) ifeq ($(BINUTILSPREFIX),) GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) else +# gcc mips seems not to recognize -m32/-m64 +ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),) +CROSSGCCOPT=-mabi=32 +else CROSSGCCOPT=-m32 endif endif endif endif +endif # Check if FPCFPMAKE compiler is same target as FPC ifdef FPCFPMAKE @@ -883,6 +888,21 @@ FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP) ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET)) # In that case use GCCLIBDIR value for FPCMAKEGCCLIBDIR FPCMAKEGCCLIBDIR:=$(GCCLIBDIR) +else +ifneq ($(findstring $(FPCFPMAKE_CPU_TARGET),aarch64 powerpc64 riscv64 sparc64 x86_64),) +FPCMAKE_CROSSGCCOPT=-m64 +else +ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips64 mips64el),) +FPCMAKE_CROSSGCCOPT=-mabi=64 +else +ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),) +FPCMAKE_CROSSGCCOPT=-mabi=32 +else +FPCMAKE_CROSSGCCOPT=-m32 +endif +endif +endif +FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`) endif endif diff --git a/utils/fpcm/revision.inc b/utils/fpcm/revision.inc index 70d80a4261..657b6679ad 100644 --- a/utils/fpcm/revision.inc +++ b/utils/fpcm/revision.inc @@ -1 +1 @@ -'2020-08-06 rev 46290' +'2020-09-16 rev 46877'