mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-19 15:22:37 +02:00
92 lines
2.6 KiB
Diff
92 lines
2.6 KiB
Diff
Index: compiler/comprsrc.pas
|
|
===================================================================
|
|
--- compiler/comprsrc.pas (revision 12548)
|
|
+++ compiler/comprsrc.pas (working copy)
|
|
@@ -110,16 +110,31 @@
|
|
else
|
|
SelectBin:=Bin2;
|
|
end;
|
|
-
|
|
+
|
|
+ function WindresFileName(filename: TCmdStr): TCmdStr;
|
|
+ // to be on the safe side, only give short file names with forward slashes to
|
|
+ // windres
|
|
+ var
|
|
+ i: longint;
|
|
+ begin
|
|
+ Result := GetShortName(filename);
|
|
+ for I:=1 to Length(Result) do
|
|
+ if Result[I] in AllowDirectorySeparators then
|
|
+ Result[i]:='/';
|
|
+ end;
|
|
+
|
|
var
|
|
respath,
|
|
srcfilepath,
|
|
preprocessorbin,
|
|
s,
|
|
bin,
|
|
- resbin : TCmdStr;
|
|
+ resbin,
|
|
+ fnameparam : TCmdStr;
|
|
+ usewindres,
|
|
resfound,
|
|
objused : boolean;
|
|
+
|
|
begin
|
|
if output=roRES then
|
|
Bin:=SelectBin(RCCompiler,target_res.rcbin)
|
|
@@ -128,6 +143,7 @@
|
|
if bin='' then
|
|
exit;
|
|
resfound:=false;
|
|
+ usewindres:= bin='windres';
|
|
if utilsdirectory<>'' then
|
|
resfound:=FindFile(utilsprefix+bin+source_info.exeext,utilsdirectory,false,resbin);
|
|
if not resfound then
|
|
@@ -140,11 +156,15 @@
|
|
current_settings.globalswitches:=current_settings.globalswitches+[cs_link_nolink];
|
|
end;
|
|
srcfilepath:=ExtractFilePath(current_module.mainsource^);
|
|
+ if usewindres then
|
|
+ fnameparam:=WindresFileName(fname)
|
|
+ else
|
|
+ fnameparam:=maybequoted(fname);
|
|
if output=roRES then
|
|
begin
|
|
s:=target_res.rccmd;
|
|
Replace(s,'$RES',maybequoted(OutName));
|
|
- Replace(s,'$RC',maybequoted(fname));
|
|
+ Replace(s,'$RC',fnameparam);
|
|
ObjUsed:=False;
|
|
end
|
|
else
|
|
@@ -152,20 +172,23 @@
|
|
s:=target_res.rescmd;
|
|
ObjUsed:=(pos('$OBJ',s)>0);
|
|
Replace(s,'$OBJ',maybequoted(OutName));
|
|
- Replace(s,'$RES',maybequoted(fname));
|
|
+ Replace(s,'$RES',fnameparam);
|
|
end;
|
|
{ windres doesn't like empty include paths }
|
|
if respath='' then
|
|
respath:='.';
|
|
- Replace(s,'$INC',maybequoted(respath));
|
|
+ if usewindres then
|
|
+ Replace(s,'$INC',WindresFileName(respath))
|
|
+ else
|
|
+ Replace(s,'$INC',maybequoted(respath));
|
|
if (target_res.resbin='windres') then
|
|
begin
|
|
if (srcfilepath<>'') then
|
|
- s:=s+' --include '+maybequoted(srcfilepath);
|
|
+ s:=s+' --include '+WindresFileName(srcfilepath);
|
|
{ try to find a preprocessor }
|
|
preprocessorbin := respath+'cpp'+source_info.exeext;
|
|
if FileExists(preprocessorbin,true) then
|
|
- s:=s+' --preprocessor='+preprocessorbin;
|
|
+ s:=s+' --preprocessor='+maybequoted(preprocessorbin);
|
|
end;
|
|
{ Execute the command }
|
|
if not (cs_link_nolink in current_settings.globalswitches) then
|