diff --git a/compiler/comprsrc.pas b/compiler/comprsrc.pas
index c3d20857e5..b3379a90b2 100644
--- a/compiler/comprsrc.pas
+++ b/compiler/comprsrc.pas
@@ -53,6 +53,9 @@ type
 procedure CompileResourceFiles;
 procedure CollectResourceFiles;
 
+Var
+  ResCompiler : String;
+  RCCompiler  : String;
 
 implementation
 
@@ -96,6 +99,16 @@ end;
 
 
 procedure tresourcefile.compile(output: tresoutput; const OutName: ansistring);
+
+  Function SelectBin(Const Bin1,Bin2 : String) : String;
+  
+  begin
+    If (Bin1<>'') then
+      SelectBin:=Bin1
+    else
+      SelectBin:=Bin2;  
+  end;
+  
 var
   respath,
   srcfilepath,
@@ -106,9 +119,9 @@ var
   objused  : boolean;
 begin
   if output=roRES then
-    bin:=target_res.rcbin
+    Bin:=SelectBin(RCCompiler,target_res.rcbin)
   else
-    bin:=target_res.resbin;
+    Bin:=SelectBin(ResCompiler,target_res.resbin);
   if bin='' then
     exit;
   resfound:=false;
diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg
index a22d2a19ef..fff8261a47 100644
--- a/compiler/msg/errore.msg
+++ b/compiler/msg/errore.msg
@@ -2519,6 +2519,7 @@ S*2Aas_assemble using GNU AS
 **1F<x>_set file names and paths:
 **2Fa<x>[,y]_for a program load first units <x> and [y] before uses is parsed
 **2Fc<x>_sets input codepage to <x>
+**2FC<x>_sets RC compiler binary name to <x>
 **2FD<x>_sets the directory where to search for compiler utilities
 **2Fe<x>_redirect error output to <x>
 **2FE<x>_set exe/unit output path to <x>
@@ -2528,6 +2529,7 @@ S*2Aas_assemble using GNU AS
 **2Fm<x>_load unicode conversion table from <x>.txt in the compiler dir
 **2Fo<x>_adds <x> to object path
 **2Fr<x>_load error message file <x>
+**2FR<x>_sets resource (.res) linker to <x>
 **2Fu<x>_adds <x> to unit path
 **2FU<x>_set unit output path to <x>, overrides -FE
 *g1g_generate debugger information:
diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc
index ab367d105a..71fffce85a 100644
--- a/compiler/msgidx.inc
+++ b/compiler/msgidx.inc
@@ -729,7 +729,7 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 43738;
+  MsgTxtSize = 43827;
 
   MsgIdxMax : array[1..20] of longint=(
     24,83,237,83,63,49,107,22,135,60,
diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc
index b118b96dbb..8a56a8a268 100644
--- a/compiler/msgtxt.inc
+++ b/compiler/msgtxt.inc
@@ -895,168 +895,171 @@ const msgtxt : array[0..000182,1..240] of char=(
   '**2Fa<x>[,y]_for a program load first units <x> and [y] before uses',' '+
   'is parsed'#010+
   '**2Fc<x>_sets input codepage to <x>'#010+
+  '**2FC<x>_sets RC compiler binary name to <x>'#010+
   '**2FD<x>_sets the directory where to search for compiler utilities'#010+
   '**2Fe<x>_redirect error output to <x>'#010+
   '**2FE<x>_set exe/unit output path to <x>'#010+
-  '**2Fi<x>_adds <x> to include path'#010+
-  '**2Fl<x>_adds',' <x> to library path'#010+
+  '**','2Fi<x>_adds <x> to include path'#010+
+  '**2Fl<x>_adds <x> to library path'#010+
   '**2FL<x>_uses <x> as dynamic linker'#010+
   '**2Fm<x>_load unicode conversion table from <x>.txt in the compiler di'+
   'r'#010+
   '**2Fo<x>_adds <x> to object path'#010+
-  '**2Fr<x>_load error message file <x>'#010+
+  '**2Fr<x>_load error message file ','<x>'#010+
+  '**2FR<x>_sets resource (.res) linker to <x>'#010+
   '**2Fu<x>_adds <x> to unit path'#010+
-  '**2FU<x>_s','et unit output path to <x>, overrides -FE'#010+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
   '*g1g_generate debugger information:'#010+
   '*g2gc_generate checks for pointers'#010+
   '*g2gd_use dbx'#010+
   '*g2gg_use gsym'#010+
-  '*g2gh_use heap trace unit (for memory leak debugging)'#010+
-  '*g2gl_use line info unit to show more info f','or backtraces'#010+
+  '*g2gh_use',' heap trace unit (for memory leak debugging)'#010+
+  '*g2gl_use line info unit to show more info for backtraces'#010+
   '*g2gp_preserve case in stabs symbol names'#010+
   '*g2gt_trash local variables (to detect uninitialized uses)'#010+
-  '*g2gv_generates programs traceable with valgrind'#010+
+  '*g2gv_generates programs traceable w','ith valgrind'#010+
   '*g2gw_generate dwarf debugging info'#010+
   '**1i_information'#010+
-  '**2iD_return compiler d','ate'#010+
+  '**2iD_return compiler date'#010+
   '**2iV_return compiler version'#010+
   '**2iW_return full compiler version'#010+
   '**2iSO_return compiler OS'#010+
   '**2iSP_return compiler processor'#010+
-  '**2iTO_return target OS'#010+
+  '**2iTO_return target OS',#010+
   '**2iTP_return target processor'#010+
   '**1I<x>_adds <x> to include path'#010+
-  '**1k<x>_Pass <x> to the ','linker'#010+
+  '**1k<x>_Pass <x> to the linker'#010+
   '**1l_write logo'#010+
   '**1M<x>_set language mode to <x>'#010+
   '**2Mfpc_free pascal dialect (default)'#010+
   '**2Mobjfpc_switch some Delphi 2 extensions on'#010+
-  '**2Mdelphi_tries to be Delphi compatible'#010+
+  '**2Mdelphi_','tries to be Delphi compatible'#010+
   '**2Mtp_tries to be TP/BP 7.0 compatible'#010+
-  '**2Mmacpas_tries to',' be compatible to the macintosh pascal dialects'#010+
+  '**2Mmacpas_tries to be compatible to the macintosh pascal dialects'#010+
   '**1n_don'#039't read the default config file'#010+
   '**1N<x>_node tree optimizations'#010+
   '**2Nu_unroll loops'#010+
-  '**1o<x>_change the name of the executable produced to <x>'#010+
+  '**1o<x>_chan','ge the name of the executable produced to <x>'#010+
   '**1O<x>_optimizations:'#010+
-  '**2O-_disable optimi','zations'#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 + slow optimizations)'#010+
+  '**2O3_level 3 optimizations (','-O2 + slow optimizations)'#010+
   '**2Oa<x>=<y>_set alignment'#010+
-  '**2Oo[NO]<x>_enable or disable optim','izations, see fpc -i for possibl'+
-  'e values'#010+
+  '**2Oo[NO]<x>_enable or disable optimizations, see fpc -i for possible '+
+  'values'#010+
   '**2Op<x>_set target cpu for optimizing, see fpc -i for possible values'+
   #010+
   '**2Os_generate smaller code'#010+
-  '**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+
+  '**1pg_gener','ate profile code for gprof (defines FPC_PROFILE)'#010+
   '**1R<x>_assembler reading style:'#010+
-  '**2Rdef','ault_use default assembler'#010+
+  '**2Rdefault_use default assembler'#010+
   '3*2Ratt_read AT&T style assembler'#010+
   '3*2Rintel_read Intel style assembler'#010+
   '6*2RMOT_read motorola style assembler'#010+
-  '**1S<x>_syntax options:'#010+
+  '**1S<x>_syntax ','options:'#010+
   '**2S2_same as -Mobjfpc'#010+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
-  '**2Sa_i','nclude assertion code.'#010+
+  '**2Sa_include assertion code.'#010+
   '**2Sd_same as -Mdelphi'#010+
   '**2Se<x>_error options. <x> is a combination of the following:'#010+
-  '**3*_<n> : compiler stops after the <n> errors (default is 1)'#010+
+  '**3*_<n> : compiler stops after the <n> er','rors (default is 1)'#010+
   '**3*_w : compiler stops also after warnings'#010+
-  '**3*_n : compiler stops a','lso after notes'#010+
+  '**3*_n : compiler stops also after notes'#010+
   '**3*_h : compiler stops also after hints'#010+
   '**2Sg_allow LABEL and GOTO'#010+
   '**2Sh_Use ansistrings'#010+
   '**2Si_support C++ styled INLINE'#010+
-  '**2Sk_load fpcylix unit'#010+
+  '**2Sk_load fp','cylix unit'#010+
   '**2SI<x>_set interface style to <x>'#010+
-  '**3SIcom_COM compatible interface (default',')'#010+
+  '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcorba_CORBA compatible interface'#010+
   '**2Sm_support macros like C (global)'#010+
   '**2So_same as -Mtp'#010+
   '**2Sp_same as -Mgpc'#010+
-  '**2Ss_constructor name must be init (destructor must be done)'#010+
+  '**2Ss_constructor name must be init',' (destructor must be done)'#010+
   '**2St_allow static keyword in objects'#010+
-  '**2Sx_enable exception k','eywords (default in Delphi/ObjFPC modes)'#010+
+  '**2Sx_enable exception keywords (default in Delphi/ObjFPC modes)'#010+
   '**1s_don'#039't call assembler and linker'#010+
   '**2sh_Generate script to link on host'#010+
-  '**2st_Generate script to link on target'#010+
+  '**2st_Generate script to link on ta','rget'#010+
   '**2sr_Skip register allocation phase (use with -alr)'#010+
-  '**1T<x>_Target operating system',':'#010+
+  '**1T<x>_Target operating system:'#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*2Tlinux_Linux'#010+
-  '3*2Tnetbsd_NetBSD'#010+
+  '3*2Tnetbsd_NetB','SD'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
-  '3*2','Topenbsd_OpenBSD'#010+
+  '3*2Topenbsd_OpenBSD'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
   '3*2Twdosx_WDOSX DOS extender'#010+
-  '3*2Twin32_Windows 32 Bit'#010+
+  '3*2Twin32_Wi','ndows 32 Bit'#010+
   '3*2Twince_Windows CE'#010+
   '4*2Tlinux_Linux'#010+
   '6*2Tamiga_Commodore Amiga'#010+
-  '6*2Tatari_Ata','ri ST/STe/TT'#010+
+  '6*2Tatari_Atari ST/STe/TT'#010+
   '6*2Tlinux_Linux/m68k'#010+
   '6*2Tmacos_Macintosh m68k (not supported)'#010+
   '6*2Tpalmos_PalmOS'#010+
   'A*2Tlinux_Linux'#010+
   'A*2Twince_Windows CE'#010+
-  'P*2Tamiga_AmigaOS on PowerPC'#010+
+  'P*2Tamiga_AmigaOS on ','PowerPC'#010+
   'P*2Tdarwin_Darwin and Mac OS X on PowerPC'#010+
   'P*2Tlinux_Linux on PowerPC'#010+
-  'P*2Tmacos_Ma','c OS (classic) on PowerPC'#010+
+  'P*2Tmacos_Mac OS (classic) on PowerPC'#010+
   'P*2Tmorphos_MorphOS'#010+
   'S*2Tlinux_Linux'#010+
   '**1u<x>_undefines the symbol <x>'#010+
   '**1U_unit options:'#010+
   '**2Un_don'#039't check the unit name'#010+
-  '**2Ur_generate release unit files'#010+
+  '**2Ur','_generate release unit files'#010+
   '**2Us_compile a system unit'#010+
-  '**1v<x>_Be verbose. <x> is a com','bination 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*_w : Show warnings               u : Show ','unit info'#010+
   '**2*_n : Show notes                  t : Show tried/used files'#010+
-  '**2*_h : Show hi','nts                  c : Show conditionals'#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*_a : Show everything             x : Executable info (Win32 only)'#010,
+  '**2*_l : Show linenumbers            r : Rhide/GCC ','compatibility mod'+
+  'e'#010+
+  '**2*_a : Show everything             x : Executable info (Win32 only)'#010+
   '**2*_b : Write file names messages with full path'#010+
   '**2*_v : write fpcdebug.txt with     p : Write tree.log with parse tre'+
   'e'#010+
-  '**2*_    lots of debugging info'#010+
+  '**2*_    lots of debugging in','fo'#010+
   '3*1W<x>_Win32-like target options'#010+
   '3*2WB_Create a relocatable image'#010+
-  '3*2WB<x>_Set Image ','base to Hexadecimal <x> value'#010+
+  '3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
   '3*2WC_Specify console type application'#010+
   '3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
-  '3*2WF_Specify full-screen type application (OS/2 only)'#010+
+  '3*2WF_Specify full-screen type',' application (OS/2 only)'#010+
   '3*2WG_Specify graphic type application'#010+
-  '3*2WN_Do not generate rel','ocation code (necessary for debugging)'#010+
+  '3*2WN_Do not generate relocation code (necessary for debugging)'#010+
   '3*2WR_Generate relocation code'#010+
   'P*2WC_Specify console type application (Mac OS only)'#010+
-  'P*2WG_Specify graphic type application (Mac OS only)'#010+
+  'P*2WG_Specify graphic type a','pplication (Mac OS only)'#010+
   'P*2WT_Specify tool type application (MPW tool, Mac OS only)'#010+
-  '**1X','_executable options:'#010+
+  '**1X_executable options:'#010+
   '**2Xc_pass --shared to the linker (Unix only)'#010+
   '**2Xd_don'#039't use standard library search path (needed for cross com'+
   'pile)'#010+
-  '**2Xe_use external linker'#010+
+  '**2Xe_use ex','ternal linker'#010+
   '**2XD_try to link units dynamic          (defines FPC_LINK_DYNAMIC)'#010+
-  '**2Xi_u','se internal linker'#010+
+  '**2Xi_use internal linker'#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+
-  '**2XP<x>_prepend the binutils names with the prefix <x>'#010+
+  '**2XP<x>_prepend the binutils names ','with the prefix <x>'#010+
   '**2Xr<x>_set library search path to <x> (needed for cross compile)'#010+
-  '**','2Xs_strip all symbols from executable'#010+
+  '**2Xs_strip all symbols from executable'#010+
   '**2XS_try to link units static (default) (defines FPC_LINK_STATIC)'#010+
-  '**2Xt_link with static libraries (-static is passed to linker)'#010+
+  '**2Xt_link with static libraries (-static is p','assed to linker)'#010+
   '**2XX_try to link units smart            (defines FPC_LINK_SMART)'#010+
-  '**1*_'#010,
+  '**1*_'#010+
   '**1?_shows this help'#010+
   '**1h_shows this help without waiting'#000
 );
diff --git a/compiler/options.pas b/compiler/options.pas
index 15caa80b2f..f9080ae80d 100644
--- a/compiler/options.pas
+++ b/compiler/options.pas
@@ -27,7 +27,7 @@ interface
 
 uses
   CClasses,cfileutl,
-  globtype,globals,verbose,systems,cpuinfo;
+  globtype,globals,verbose,systems,cpuinfo, comprsrc;
 
 Type
   TOption=class
@@ -704,6 +704,8 @@ begin
                      else
                        init_settings.sourcecodepage:=more;
                    end;
+                 'C' : 
+                   RCCompiler := More;  
                  'D' :
                    utilsdirectory:=FixPath(More,true);
                  'e' :
@@ -750,6 +752,8 @@ begin
                    end;
                  'r' :
                    Msgfilename:=More;
+                 'R' :
+                   ResCompiler := More;  
                  'u' :
                    begin
                      if ispara then