* Implemented support for custom RC compiler and .RES linker

git-svn-id: trunk@8164 -
This commit is contained in:
michael 2007-07-25 12:06:57 +00:00
parent 0cd246808e
commit bedf0151cc
5 changed files with 79 additions and 57 deletions

View File

@ -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;

View File

@ -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:

View File

@ -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,

View File

@ -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
);

View File

@ -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