diff --git a/ide/buildmanager.pas b/ide/buildmanager.pas
index dae0dc47e6..eff57d63e5 100644
--- a/ide/buildmanager.pas
+++ b/ide/buildmanager.pas
@@ -67,6 +67,8 @@ type
var Abort: boolean): string;
function MacroFuncTargetOS(const Param: string; const Data: PtrInt;
var Abort: boolean): string;
+ function MacroFuncSrcOS(const Param: string; const Data: PtrInt;
+ var Abort: boolean): string;
function MacroFuncFPCVer(const Param: string; const Data: PtrInt;
var Abort: boolean): string;
function MacroFuncParams(const Param: string; const Data: PtrInt;
@@ -231,6 +233,8 @@ begin
lisTargetCPU,@MacroFuncTargetCPU,[]));
GlobalMacroList.Add(TTransferMacro.Create('TargetOS','',
lisTargetOS,@MacroFuncTargetOS,[]));
+ GlobalMacroList.Add(TTransferMacro.Create('SrcOS','',
+ lisSrcOS,@MacroFuncSrcOS,[]));
GlobalMacroList.Add(TTransferMacro.Create('FPCVer','',
lisFPCVersionEG222, @MacroFuncFPCVer, []));
GlobalMacroList.Add(TTransferMacro.Create('Params','',
@@ -1089,6 +1093,15 @@ begin
Result:=GetTargetOS(true);
end;
+function TBuildManager.MacroFuncSrcOS(const Param: string; const Data: PtrInt;
+ var Abort: boolean): string;
+begin
+ if Data=CompilerOptionMacroPlatformIndependent then
+ Result:='%(OS_TARGET)'
+ else
+ Result:=GetDefaultSrcOSForTargetOS(GetTargetOS(true));
+end;
+
function TBuildManager.MacroFuncFPCVer(const Param: string; const Data: PtrInt;
var Abort: boolean): string;
var
diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas
index 01e5759ce5..403ed1a47f 100644
--- a/ide/lazarusidestrconsts.pas
+++ b/ide/lazarusidestrconsts.pas
@@ -101,6 +101,7 @@ resourcestring
lisCOVarious = '%s (various)';
lisTargetCPU = 'Target CPU';
lisTargetOS = 'Target OS';
+ lisSrcOS = 'Src OS';
lisCommandLineParamsOfProgram = 'Command line parameters of program';
lisPromptForValue = 'Prompt for value';
lisProjectFilename = 'Project filename';
diff --git a/ide/startlazarus.lpi b/ide/startlazarus.lpi
index 2f137888ec..121b3878be 100644
--- a/ide/startlazarus.lpi
+++ b/ide/startlazarus.lpi
@@ -53,7 +53,7 @@
-
+