Explorar o código

+ implemented a better error message if a PPU file isn't found as suggested
by Lee John

florian %!s(int64=26) %!d(string=hai) anos
pai
achega
b2c99ecb9d
Modificáronse 6 ficheiros con 89 adicións e 52 borrados
  1. 3 0
      compiler/errore.msg
  2. 15 1
      compiler/files.pas
  3. 1 0
      compiler/msgidx.inc
  4. 47 47
      compiler/msgtxt.inc
  5. 13 2
      compiler/pmodules.pas
  6. 10 2
      compiler/symppu.inc

+ 3 - 0
compiler/errore.msg

@@ -1303,6 +1303,9 @@ unit_f_circular_unit_reference=F_Circular unit reference between $1 and $2
 unit_f_cant_compile_unit=F_Can't compile unit $1, no sources available
 unit_f_cant_compile_unit=F_Can't compile unit $1, no sources available
 % A unit was found that needs to be recompiled, but no sources are
 % A unit was found that needs to be recompiled, but no sources are
 % available.
 % available.
+unit_f_cant_find_ppu=F_Can't find unit $1
+% You tried to use a unit of which the PPU file isn't found by the
+% compiler. Check your config files for the unit pathes
 unit_w_switch_us_missed=W_Compiling the system unit requires the -Us switch
 unit_w_switch_us_missed=W_Compiling the system unit requires the -Us switch
 % When recompiling the system unit (it needs special treatment), the
 % When recompiling the system unit (it needs special treatment), the
 % \var{-Us} must be specified.
 % \var{-Us} must be specified.

+ 15 - 1
compiler/files.pas

@@ -62,6 +62,8 @@ unit files;
 {$endif}
 {$endif}
 
 
     type
     type
+       trecompile_reason = (rr_unknown,rr_noppu,rr_sourcenewer,
+         rr_build,rr_libolder,rr_objolder,rr_asmolder,rr_crcchanged);
 {$ifdef FPC}
 {$ifdef FPC}
        tlongintarr = array[0..1000000] of longint;
        tlongintarr = array[0..1000000] of longint;
 {$else}
 {$else}
@@ -169,6 +171,8 @@ unit files;
           in_second_compile,        { is this unit being compiled for the 2nd time? }
           in_second_compile,        { is this unit being compiled for the 2nd time? }
           in_implementation,        { processing the implementation part? }
           in_implementation,        { processing the implementation part? }
           in_global     : boolean;  { allow global settings }
           in_global     : boolean;  { allow global settings }
+          recompile_reason : trecompile_reason;  { the reason why the unit should be recompiled }
+
           islibrary     : boolean;  { if it is a library (win32 dll) }
           islibrary     : boolean;  { if it is a library (win32 dll) }
           map           : punitmap; { mapping of all used units }
           map           : punitmap; { mapping of all used units }
           unitcount     : word;     { local unit counter }
           unitcount     : word;     { local unit counter }
@@ -900,6 +904,7 @@ end;
               Message2(unit_u_check_time,staticlibfilename^,filetimestring(objfiletime));
               Message2(unit_u_check_time,staticlibfilename^,filetimestring(objfiletime));
               if (ppufiletime<0) or (objfiletime<0) or (ppufiletime>objfiletime) then
               if (ppufiletime<0) or (objfiletime<0) or (ppufiletime>objfiletime) then
                 begin
                 begin
+                  recompile_reason:=rr_libolder;
                   Message(unit_u_recompile_staticlib_is_older);
                   Message(unit_u_recompile_staticlib_is_older);
                   do_compile:=true;
                   do_compile:=true;
                   exit;
                   exit;
@@ -918,6 +923,7 @@ end;
                  if (asmfiletime<0) or (ppufiletime>asmfiletime) then
                  if (asmfiletime<0) or (ppufiletime>asmfiletime) then
                   begin
                   begin
                     Message(unit_u_recompile_obj_and_asm_older);
                     Message(unit_u_recompile_obj_and_asm_older);
+                    recompile_reason:=rr_objolder;
                     do_compile:=true;
                     do_compile:=true;
                     exit;
                     exit;
                   end
                   end
@@ -927,6 +933,7 @@ end;
                     if not(cs_asm_extern in aktglobalswitches) then
                     if not(cs_asm_extern in aktglobalswitches) then
                      begin
                      begin
                        do_compile:=true;
                        do_compile:=true;
+                       recompile_reason:=rr_asmolder;
                        exit;
                        exit;
                      end;
                      end;
                   end;
                   end;
@@ -991,6 +998,7 @@ end;
               begin
               begin
                 ppufile:=nil;
                 ppufile:=nil;
                 do_compile:=true;
                 do_compile:=true;
+                recompile_reason:=rr_noppu;
               {Check for .pp file}
               {Check for .pp file}
                 Found:=UnitExists(target_os.sourceext);
                 Found:=UnitExists(target_os.sourceext);
                 if Found then
                 if Found then
@@ -1123,6 +1131,7 @@ end;
         crc:=0;
         crc:=0;
         interface_crc:=0;
         interface_crc:=0;
         unitcount:=1;
         unitcount:=1;
+        recompile_reason:=rr_unknown;
       end;
       end;
 
 
 
 
@@ -1185,6 +1194,7 @@ end;
         do_compile:=false;
         do_compile:=false;
         sources_avail:=true;
         sources_avail:=true;
         compiled:=false;
         compiled:=false;
+        recompile_reason:=rr_unknown;
         in_second_compile:=false;
         in_second_compile:=false;
         in_implementation:=false;
         in_implementation:=false;
         in_global:=true;
         in_global:=true;
@@ -1302,7 +1312,11 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.96  1999-07-03 00:29:47  peter
+  Revision 1.97  1999-07-14 21:19:03  florian
+    + implemented a better error message if a PPU file isn't found as suggested
+      by Lee John
+
+  Revision 1.96  1999/07/03 00:29:47  peter
     * new link writing to the ppu, one .ppu is needed for all link types,
     * new link writing to the ppu, one .ppu is needed for all link types,
       static (.o) is now always created also when smartlinking is used
       static (.o) is now always created also when smartlinking is used
 
 

+ 1 - 0
compiler/msgidx.inc

@@ -432,6 +432,7 @@ type tmsgconst=(
   unit_f_too_much_units,
   unit_f_too_much_units,
   unit_f_circular_unit_reference,
   unit_f_circular_unit_reference,
   unit_f_cant_compile_unit,
   unit_f_cant_compile_unit,
+  unit_f_cant_find_ppu,
   unit_w_switch_us_missed,
   unit_w_switch_us_missed,
   unit_f_errors_in_unit,
   unit_f_errors_in_unit,
   unit_u_load_unit,
   unit_u_load_unit,

+ 47 - 47
compiler/msgtxt.inc

@@ -455,67 +455,68 @@ const msgtxt : array[0..000097,1..240] of char=(
   'F_Too much units'#000+
   'F_Too much units'#000+
   'F_Circular unit reference between $1 and $2'#000+
   'F_Circular unit reference between $1 and $2'#000+
   'F_Can'#039't compile unit $1, no sources available'#000+
   'F_Can'#039't compile unit $1, no sources available'#000+
+  'F_Can'#039't find unit $1'#000+
   'W_Compiling the system unit requires the -Us switch'#000+
   'W_Compiling the system unit requires the -Us switch'#000+
-  'F_There were $1 errors compiling mod','ule, stopping'#000+
+  'F_There were $1',' errors compiling module, stopping'#000+
   'U_Load from $1 ($2) unit $3'#000+
   'U_Load from $1 ($2) unit $3'#000+
   'U_Recompiling $1, checksum changed for $2'#000+
   'U_Recompiling $1, checksum changed for $2'#000+
   'U_Recompiling $1, source found only'#000+
   'U_Recompiling $1, source found only'#000+
   'U_Recompiling unit, static lib is older than ppufile'#000+
   'U_Recompiling unit, static lib is older than ppufile'#000+
-  'U_Recompiling unit, shared lib is older than ppufile'#000+
-  'U_Recompiling ','unit, obj and asm are older than ppufile'#000+
+  'U_Recompiling unit, shared lib is older than p','pufile'#000+
+  'U_Recompiling unit, obj and asm are older than ppufile'#000+
   'U_Recompiling unit, obj is older than asm'#000+
   'U_Recompiling unit, obj is older than asm'#000+
   'U_Parsing interface of $1'#000+
   'U_Parsing interface of $1'#000+
   'U_Parsing implementation of $1'#000+
   'U_Parsing implementation of $1'#000+
   'U_Second load for unit $1'#000+
   'U_Second load for unit $1'#000+
   'U_PPU Check file $1 time $2'#000+
   'U_PPU Check file $1 time $2'#000+
-  '$1 [options] <inputfile> [options]'#000+
-  'W_Only one ','source file supported'#000+
+  '$1 [options] <inputfile> ','[options]'#000+
+  'W_Only one source file supported'#000+
   'W_DEF file can be created only for OS/2'#000+
   'W_DEF file can be created only for OS/2'#000+
   'E_nested response files are not supported'#000+
   'E_nested response files are not supported'#000+
   'F_No source file name in command line'#000+
   'F_No source file name in command line'#000+
   'E_Illegal parameter: $1'#000+
   'E_Illegal parameter: $1'#000+
   'H_-? writes help pages'#000+
   'H_-? writes help pages'#000+
-  'F_Too many config files nested'#000+
-  'F_Unable to open fil','e $1'#000+
+  'F_Too many config files nested',#000+
+  'F_Unable to open file $1'#000+
   'N_Reading further options from $1'#000+
   'N_Reading further options from $1'#000+
   'W_Target is already set to: $1'#000+
   'W_Target is already set to: $1'#000+
   'W_Shared libs not supported on DOS platform, reverting to static'#000+
   'W_Shared libs not supported on DOS platform, reverting to static'#000+
   'F_too many IF(N)DEFs'#000+
   'F_too many IF(N)DEFs'#000+
   'F_too many ENDIFs'#000+
   'F_too many ENDIFs'#000+
   'F_open conditional at the end of the file'#000+
   'F_open conditional at the end of the file'#000+
-  'W_Debug information gene','ration is not supported by this executable'#000+
+  'W_D','ebug information generation is not supported by this executable'#000+
   'H_Try recompiling with -dGDB'#000+
   'H_Try recompiling with -dGDB'#000+
   'E_You are using the obsolete switch $1'#000+
   'E_You are using the obsolete switch $1'#000+
   'E_You are using the obsolete switch $1, please use $2'#000+
   'E_You are using the obsolete switch $1, please use $2'#000+
-  'N_Switching assembler to default source writing assembler'#000+
-  'Free Pascal Compi','ler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
+  'N_Switching assembler to default source writing assemb','ler'#000+
+  'Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#000+
   'Copyright (c) 1993-98 by Florian Klaempfl'#000+
   'Copyright (c) 1993-98 by Florian Klaempfl'#000+
   'Free Pascal Compiler version $FPCVER'#000+
   'Free Pascal Compiler version $FPCVER'#000+
   #000+
   #000+
   'Compiler Date  : $FPCDATE'#000+
   'Compiler Date  : $FPCDATE'#000+
   'Compiler Target: $FPCTARGET'#000+
   'Compiler Target: $FPCTARGET'#000+
   #000+
   #000+
-  'This program comes under the GNU General Public Licence'#000+
-  'For',' more information read COPYING.FPC'#000+
+  'This program comes under the GNU Gener','al Public Licence'#000+
+  'For more information read COPYING.FPC'#000+
   #000+
   #000+
   'Report bugs,suggestions etc to:'#000+
   'Report bugs,suggestions etc to:'#000+
   '                 [email protected]'#000+
   '                 [email protected]'#000+
   '**0*_put + after a boolean switch option to enable it, - to disable it'+
   '**0*_put + after a boolean switch option to enable it, - to disable it'+
   #000+
   #000+
-  '**1a_the compiler doesn'#039't delete the generated ass','embler file'#000+
+  '**1a_the compiler doesn'#039't del','ete the generated assembler file'#000+
   '**2al_list sourcecode lines in assembler file'#000+
   '**2al_list sourcecode lines in assembler file'#000+
   '**2ar_list register allocation/release info in assembler file'#000+
   '**2ar_list register allocation/release info in assembler file'#000+
   '**2at_list temp allocation/release info in assembler file'#000+
   '**2at_list temp allocation/release info in assembler file'#000+
   '**1b_generate browser info'#000+
   '**1b_generate browser info'#000+
-  '**2bl_generate local symbol info'#000+
-  '**','1B_build all modules'#000+
+  '**2bl_generate',' local symbol info'#000+
+  '**1B_build all modules'#000+
   '**1C<x>_code generation options:'#000+
   '**1C<x>_code generation options:'#000+
   '3*2CD_create dynamic library'#000+
   '3*2CD_create dynamic library'#000+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#000+
   '**2Ci_IO-checking'#000+
   '**2Ci_IO-checking'#000+
   '**2Cn_omit linking stage'#000+
   '**2Cn_omit linking stage'#000+
-  '**2Co_check overflow of integer operations'#000+
-  '**2Cr_range checkin','g'#000+
+  '**2Co_check overflow of integer operation','s'#000+
+  '**2Cr_range checking'#000+
   '**2Cs<n>_set stack size to <n>'#000+
   '**2Cs<n>_set stack size to <n>'#000+
   '**2Ct_stack checking'#000+
   '**2Ct_stack checking'#000+
   '3*2CS_create static library'#000+
   '3*2CS_create static library'#000+
@@ -524,20 +525,20 @@ const msgtxt : array[0..000097,1..240] of char=(
   '*O1D_generate a DEF file'#000+
   '*O1D_generate a DEF file'#000+
   '*O2Dd<x>_set description to <x>'#000+
   '*O2Dd<x>_set description to <x>'#000+
   '*O2Dw_PM application'#000+
   '*O2Dw_PM application'#000+
-  '**1e<x>_set path to execut','able'#000+
+  '**1e<','x>_set path to executable'#000+
   '**1E_same as -Cn'#000+
   '**1E_same as -Cn'#000+
   '**1F<x>_set file names and paths:'#000+
   '**1F<x>_set file names and paths:'#000+
   '**2FD<x>_sets the directory where to search for compiler utilities'#000+
   '**2FD<x>_sets the directory where to search for compiler utilities'#000+
   '**2Fe<x>_redirect error output to <x>'#000+
   '**2Fe<x>_redirect error output to <x>'#000+
   '**2FE<x>_set exe/unit output path to <x>'#000+
   '**2FE<x>_set exe/unit output path to <x>'#000+
-  '**2Fi<x>_adds <x> to include path'#000+
-  '**2F','l<x>_adds <x> to library path'#000+
+  '**2Fi<x>_adds <x>',' to include path'#000+
+  '**2Fl<x>_adds <x> to library path'#000+
   '*L2FL<x>_uses <x> as dynamic linker'#000+
   '*L2FL<x>_uses <x> as dynamic linker'#000+
   '**2Fo<x>_adds <x> to object path'#000+
   '**2Fo<x>_adds <x> to object path'#000+
   '**2Fr<x>_load error message file <x>'#000+
   '**2Fr<x>_load error message file <x>'#000+
   '**2Fu<x>_adds <x> to unit path'#000+
   '**2Fu<x>_adds <x> to unit path'#000+
-  '**2FU<x>_set unit output path to <x>, overrides -FE'#000+
-  '*g1g<x>_generate debu','gger information:'#000+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#000,
+  '*g1g<x>_generate debugger information:'#000+
   '*g2gg_use gsym'#000+
   '*g2gg_use gsym'#000+
   '*g2gd_use dbx'#000+
   '*g2gd_use dbx'#000+
   '*g2gh_use heap trace unit'#000+
   '*g2gh_use heap trace unit'#000+
@@ -546,82 +547,81 @@ const msgtxt : array[0..000097,1..240] of char=(
   '**2iD_return compiler date'#000+
   '**2iD_return compiler date'#000+
   '**2iV_return compiler version'#000+
   '**2iV_return compiler version'#000+
   '**2iSO_return compiler OS'#000+
   '**2iSO_return compiler OS'#000+
-  '**2iSP_return compiler processor',#000+
+  '**2iSP_retu','rn compiler processor'#000+
   '**2iTO_return target OS'#000+
   '**2iTO_return target OS'#000+
   '**2iTP_return target processor'#000+
   '**2iTP_return target processor'#000+
   '**1I<x>_adds <x> to include path'#000+
   '**1I<x>_adds <x> to include path'#000+
   '**1k<x>_Pass <x> to the linker'#000+
   '**1k<x>_Pass <x> to the linker'#000+
   '**1l_write logo'#000+
   '**1l_write logo'#000+
   '**1n_don'#039't read the default config file'#000+
   '**1n_don'#039't read the default config file'#000+
-  '**1o<x>_change the name of the executable produced to <x>'#000+
-  '**1pg_','generate profile code for gprof'#000+
+  '**1o<x>_change the name of the executable p','roduced to <x>'#000+
+  '**1pg_generate profile code for gprof'#000+
   '*L1P_use pipes instead of creating temporary assembler files'#000+
   '*L1P_use pipes instead of creating temporary assembler files'#000+
   '**1S<x>_syntax options:'#000+
   '**1S<x>_syntax options:'#000+
   '**2S2_switch some Delphi 2 extensions on'#000+
   '**2S2_switch some Delphi 2 extensions on'#000+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#000+
-  '**2Sd_tries to be Delphi compati','ble'#000+
+  '**2Sd_tries',' to be Delphi compatible'#000+
   '**2Se<x>_compiler stops after the <x> errors (default is 1)'#000+
   '**2Se<x>_compiler stops after the <x> errors (default is 1)'#000+
   '**2Sg_allow LABEL and GOTO'#000+
   '**2Sg_allow LABEL and GOTO'#000+
   '**2Sh_Use ansistrings'#000+
   '**2Sh_Use ansistrings'#000+
   '**2Si_support C++ styled INLINE'#000+
   '**2Si_support C++ styled INLINE'#000+
   '**2Sm_support macros like C (global)'#000+
   '**2Sm_support macros like C (global)'#000+
-  '**2So_tries to be TP/BP 7.0 compatible'#000+
-  '**2Sp_tries to be g','pc compatible'#000+
+  '**2So_tries to be TP/BP 7.0 compatibl','e'#000+
+  '**2Sp_tries to be gpc compatible'#000+
   '**2Ss_constructor name must be init (destructor must be done)'#000+
   '**2Ss_constructor name must be init (destructor must be done)'#000+
   '**2St_allow static keyword in objects'#000+
   '**2St_allow static keyword in objects'#000+
   '**1s_don'#039't call assembler and linker (only with -a)'#000+
   '**1s_don'#039't call assembler and linker (only with -a)'#000+
   '**1u<x>_undefines the symbol <x>'#000+
   '**1u<x>_undefines the symbol <x>'#000+
   '**1U_unit options:'#000+
   '**1U_unit options:'#000+
-  '**2Un_don'#039't check the ','unit name'#000+
+  '*','*2Un_don'#039't check the unit name'#000+
   '**2Us_compile a system unit'#000+
   '**2Us_compile a system unit'#000+
   '**1v<x>_Be verbose. <x> is a combination of the following letters:'#000+
   '**1v<x>_Be verbose. <x> is a combination of the following letters:'#000+
   '**2*_e : Show errors (default)       d : Show debug info'#000+
   '**2*_e : Show errors (default)       d : Show debug info'#000+
   '**2*_w : Show warnings               u : Show unit info'#000+
   '**2*_w : Show warnings               u : Show unit info'#000+
-  '**2*_n : Show notes   ','               t : Show tried/used files'#000+
+  '*','*2*_n : Show notes                  t : Show tried/used files'#000+
   '**2*_h : Show hints                  m : Show defined macros'#000+
   '**2*_h : Show hints                  m : Show defined macros'#000+
   '**2*_i : Show general info           p : Show compiled procedures'#000+
   '**2*_i : Show general info           p : Show compiled procedures'#000+
-  '**2*_l : Show linenumbers            c : Show conditionals'#000+
-  '**2*_a : Show',' everything             0 : Show nothing (except errors'+
-  ')'#000+
+  '**2*_l : Show linenumbers            c : Show condi','tionals'#000+
+  '**2*_a : Show everything             0 : Show nothing (except errors)'#000+
   '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
   '**2*_b : Show all procedure          r : Rhide/GCC compatibility mode'#000+
   '**2*_    declarations if an error    x : Executable info (Win32 only)'#000+
   '**2*_    declarations if an error    x : Executable info (Win32 only)'#000+
   '**2*_    occurs'#000+
   '**2*_    occurs'#000+
-  '**1X_executable options:'#000+
-  '*L','2Xc_link with the c library'#000+
+  '**1X_e','xecutable options:'#000+
+  '*L2Xc_link with the c library'#000+
   '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
   '**2XD_link with dynamic libraries (defines FPC_LINK_DYNAMIC)'#000+
   '**2Xs_strip all symbols from executable'#000+
   '**2Xs_strip all symbols from executable'#000+
   '**2XS_link with static libraries (defines FPC_LINK_STATIC)'#000+
   '**2XS_link with static libraries (defines FPC_LINK_STATIC)'#000+
-  '**0*_Processor specific options:'#000+
-  '3*1A<x>_output form','at:'#000+
+  '**0*_Processor specific options',':'#000+
+  '3*1A<x>_output format:'#000+
   '3*2Aas_assemble using GNU AS'#000+
   '3*2Aas_assemble using GNU AS'#000+
   '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
   '3*2Aasaout_assemble using GNU AS for aout (Go32v1)'#000+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#000+
   '3*2Anasmelf_elf32 (Linux) file using Nasm'#000+
   '3*2Anasmelf_elf32 (Linux) file using Nasm'#000+
   '3*2Anasmobj_obj file using Nasm'#000+
   '3*2Anasmobj_obj file using Nasm'#000+
-  '3*2Amasm_obj file using Masm (Microsoft',')'#000+
+  '3*2Amasm_obj file ','using Masm (Microsoft)'#000+
   '3*2Atasm_obj file using Tasm (Borland)'#000+
   '3*2Atasm_obj file using Tasm (Borland)'#000+
   '3*2Acoff_coff (Go32v2) using internal writer'#000+
   '3*2Acoff_coff (Go32v2) using internal writer'#000+
   '3*2Apecoff_pecoff (Win32) using internal writer'#000+
   '3*2Apecoff_pecoff (Win32) using internal writer'#000+
   '3*1R<x>_assembler reading style:'#000+
   '3*1R<x>_assembler reading style:'#000+
   '3*2Ratt_read AT&T style assembler'#000+
   '3*2Ratt_read AT&T style assembler'#000+
-  '3*2Rintel_read Intel style assembler'#000+
-  '3*','2Rdirect_copy assembler text directly to assembler file'#000+
+  '3*2Rintel_read Int','el style assembler'#000+
+  '3*2Rdirect_copy assembler text directly to assembler file'#000+
   '3*1O<x>_optimizations:'#000+
   '3*1O<x>_optimizations:'#000+
   '3*2Og_generate smaller code'#000+
   '3*2Og_generate smaller code'#000+
   '3*2OG_generate faster code (default)'#000+
   '3*2OG_generate faster code (default)'#000+
   '3*2Or_keep certain variables in registers (still BUGGY!!!)'#000+
   '3*2Or_keep certain variables in registers (still BUGGY!!!)'#000+
-  '3*2Ou_enable uncertain optimizations ','(see docs)'#000+
+  '3*2Ou_enable unc','ertain optimizations (see docs)'#000+
   '3*2O1_level 1 optimizations (quick optimizations)'#000+
   '3*2O1_level 1 optimizations (quick optimizations)'#000+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#000+
   '3*2O3_level 3 optimizations (same as -O2u)'#000+
   '3*2O3_level 3 optimizations (same as -O2u)'#000+
   '3*2Op<x>_target processor:'#000+
   '3*2Op<x>_target processor:'#000+
-  '3*3Op1_set target processor to 386/486'#000+
-  '3*3Op2_set ta','rget processor to Pentium/PentiumMMX (tm)'#000+
+  '3*3Op1_set target processor to ','386/486'#000+
+  '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#000+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#000+
   '3*1T<x>_Target operating system:'#000+
   '3*1T<x>_Target operating system:'#000+
   '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#000+
   '3*2TGO32V1_version 1 of DJ Delorie DOS extender'#000+
-  '3*2TGO32V2_version 2 of DJ Delorie DOS extender'#000+
-  '3*2TLINUX_Linux',#000+
+  '3*2TGO32V2_version 2 of DJ Delorie DOS ext','ender'#000+
+  '3*2TLINUX_Linux'#000+
   '3*2TOS2_OS/2 2.x'#000+
   '3*2TOS2_OS/2 2.x'#000+
   '3*2TWin32_Windows 32 Bit'#000+
   '3*2TWin32_Windows 32 Bit'#000+
   '6*1A<x>_output format'#000+
   '6*1A<x>_output format'#000+
@@ -630,14 +630,14 @@ const msgtxt : array[0..000097,1..240] of char=(
   '6*2Amit_MIT Syntax (old GAS)'#000+
   '6*2Amit_MIT Syntax (old GAS)'#000+
   '6*2Amot_Standard Motorola assembler'#000+
   '6*2Amot_Standard Motorola assembler'#000+
   '6*1O_optimizations:'#000+
   '6*1O_optimizations:'#000+
-  '6*2Oa_turn on the optimizer',#000+
+  '6*2Oa_','turn on the optimizer'#000+
   '6*2Og_generate smaller code'#000+
   '6*2Og_generate smaller code'#000+
   '6*2OG_generate faster code (default)'#000+
   '6*2OG_generate faster code (default)'#000+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#000+
   '6*2O2_set target processor to a MC68020+'#000+
   '6*2O2_set target processor to a MC68020+'#000+
   '6*1R<x>_assembler reading style:'#000+
   '6*1R<x>_assembler reading style:'#000+
   '6*2RMOT_read motorola style assembler'#000+
   '6*2RMOT_read motorola style assembler'#000+
-  '6*1T<x>_Target operati','ng system:'#000+
+  '6','*1T<x>_Target operating system:'#000+
   '6*2TAMIGA_Commodore Amiga'#000+
   '6*2TAMIGA_Commodore Amiga'#000+
   '6*2TATARI_Atari ST/STe/TT'#000+
   '6*2TATARI_Atari ST/STe/TT'#000+
   '6*2TMACOS_Macintosh m68k'#000+
   '6*2TMACOS_Macintosh m68k'#000+

+ 13 - 2
compiler/pmodules.pas

@@ -282,6 +282,7 @@ unit pmodules;
               if loaded_unit^.crc<>pu^.checksum then
               if loaded_unit^.crc<>pu^.checksum then
                begin
                begin
                  Message2(unit_u_recompile_crc_change,current_module^.modulename^,pu^.name^);
                  Message2(unit_u_recompile_crc_change,current_module^.modulename^,pu^.name^);
+                 current_module^.recompile_reason:=rr_crcchanged;
                  current_module^.do_compile:=true;
                  current_module^.do_compile:=true;
                  dispose(current_module^.map);
                  dispose(current_module^.map);
                  current_module^.map:=nil;
                  current_module^.map:=nil;
@@ -320,6 +321,7 @@ unit pmodules;
                  not(current_module^.in_second_compile) then
                  not(current_module^.in_second_compile) then
                 begin
                 begin
                   Message2(unit_u_recompile_crc_change,current_module^.modulename^,pu^.name^+' {impl}');
                   Message2(unit_u_recompile_crc_change,current_module^.modulename^,pu^.name^+' {impl}');
+                  current_module^.recompile_reason:=rr_crcchanged;
                   current_module^.do_compile:=true;
                   current_module^.do_compile:=true;
                   dispose(current_module^.map);
                   dispose(current_module^.map);
                   current_module^.map:=nil;
                   current_module^.map:=nil;
@@ -381,7 +383,12 @@ unit pmodules;
                   and (length(current_module^.modulename^)>8) then
                   and (length(current_module^.modulename^)>8) then
                  current_module^.search_unit(copy(current_module^.modulename^,1,8),true);
                  current_module^.search_unit(copy(current_module^.modulename^,1,8),true);
              if not(current_module^.sources_avail) then
              if not(current_module^.sources_avail) then
-              Message1(unit_f_cant_compile_unit,current_module^.modulename^)
+               begin
+                  if current_module^.recompile_reason=rr_noppu then
+                    Message1(unit_f_cant_find_ppu,current_module^.modulename^)
+                  else
+                    Message1(unit_f_cant_compile_unit,current_module^.modulename^);
+               end
              else
              else
               begin
               begin
                 if current_module^.in_second_compile then
                 if current_module^.in_second_compile then
@@ -1332,7 +1339,11 @@ unit pmodules;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.129  1999-07-06 21:48:24  florian
+  Revision 1.130  1999-07-14 21:19:11  florian
+    + implemented a better error message if a PPU file isn't found as suggested
+      by Lee John
+
+  Revision 1.129  1999/07/06 21:48:24  florian
     * a lot bug fixes:
     * a lot bug fixes:
        - po_external isn't any longer necessary for procedure compatibility
        - po_external isn't any longer necessary for procedure compatibility
        - m_tp_procvar is in -Sd now available
        - m_tp_procvar is in -Sd now available

+ 10 - 2
compiler/symppu.inc

@@ -516,6 +516,7 @@
                     if (source_time>ppufiletime) then
                     if (source_time>ppufiletime) then
                      begin
                      begin
                        current_module^.do_compile:=true;
                        current_module^.do_compile:=true;
+                       current_module^.recompile_reason:=rr_sourcenewer;
                        temp:=temp+' *'
                        temp:=temp+' *'
                      end;
                      end;
                   end;
                   end;
@@ -535,7 +536,10 @@
       { check if we want to rebuild every unit, only if the sources are
       { check if we want to rebuild every unit, only if the sources are
         available }
         available }
         if do_build and current_module^.sources_avail then
         if do_build and current_module^.sources_avail then
-         current_module^.do_compile:=true;
+          begin
+             current_module^.do_compile:=true;
+             current_module^.recompile_reason:=rr_build;
+          end;
       end;
       end;
 
 
 
 
@@ -610,7 +614,11 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.43  1999-07-03 00:30:00  peter
+  Revision 1.44  1999-07-14 21:19:12  florian
+    + implemented a better error message if a PPU file isn't found as suggested
+      by Lee John
+
+  Revision 1.43  1999/07/03 00:30:00  peter
     * new link writing to the ppu, one .ppu is needed for all link types,
     * new link writing to the ppu, one .ppu is needed for all link types,
       static (.o) is now always created also when smartlinking is used
       static (.o) is now always created also when smartlinking is used