Skip to content

Commit 442802f

Browse files
authored
Including iOS support (Embarcadero#78)
1 parent 2c5d8a2 commit 442802f

File tree

9 files changed

+44
-23
lines changed

9 files changed

+44
-23
lines changed

Packages/Delphi/Delphi 10.4+/Python.dpk

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ contains
5050
WrapFireDAC in '..\..\..\Source\WrapFireDAC.pas',
5151
WrapActions in '..\..\..\Source\WrapActions.pas',
5252
WrapDelphiDataBind in '..\..\..\Source\WrapDelphiDataBind.pas',
53-
WrapDelphiImageList in '..\..\..\Source\WrapDelphiImageList.pas',
54-
PythonDocs in '..\..\..\Source\PythonDocs.pas';
53+
WrapDelphiImageList in '..\..\..\Source\WrapDelphiImageList.pas';
5554

5655
end.

Packages/Delphi/Delphi 10.4+/Python.dproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
<DCC_DcuOutput>..\..\..\lib\$(Platform)\$(Config)</DCC_DcuOutput>
8989
<DCC_Description>Python4Delphi - Run-time Engine Package</DCC_Description>
9090
<DCC_ImageBase>00400000</DCC_ImageBase>
91-
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
91+
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
9292
<DllSuffix>$(Auto)</DllSuffix>
9393
<GenDll>true</GenDll>
9494
<GenPackage>true</GenPackage>
@@ -178,7 +178,6 @@
178178
<DCCReference Include="..\..\..\Source\WrapActions.pas"/>
179179
<DCCReference Include="..\..\..\Source\WrapDelphiDataBind.pas"/>
180180
<DCCReference Include="..\..\..\Source\WrapDelphiImageList.pas"/>
181-
<DCCReference Include="..\..\..\Source\PythonDocs.pas"/>
182181
<BuildConfiguration Include="Base">
183182
<Key>Base</Key>
184183
</BuildConfiguration>
@@ -204,13 +203,13 @@
204203
<Platforms>
205204
<Platform value="Android">True</Platform>
206205
<Platform value="Android64">True</Platform>
206+
<Platform value="iOSDevice64">True</Platform>
207+
<Platform value="iOSSimARM64">True</Platform>
207208
<Platform value="Linux64">True</Platform>
208209
<Platform value="OSX64">True</Platform>
209210
<Platform value="OSXARM64">True</Platform>
210211
<Platform value="Win32">True</Platform>
211212
<Platform value="Win64">True</Platform>
212-
<Platform value="iOSDevice64">False</Platform>
213-
<Platform value="iOSSimARM64">False</Platform>
214213
</Platforms>
215214
</BorlandProject>
216215
<ProjectFileVersion>12</ProjectFileVersion>

Packages/Delphi/Delphi 10.4+/PythonFmx.dproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
</PropertyGroup>
6262
<PropertyGroup Condition="'$(Base)'!=''">
6363
<SanitizedProjectName>PythonFmx</SanitizedProjectName>
64-
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
6564
<DCC_DcuOutput>..\..\..\lib\$(Platform)\$(Config)</DCC_DcuOutput>
6665
<DCC_Description>Python4Delphi - Run-time Engine Package for FMX</DCC_Description>
6766
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
@@ -185,13 +184,13 @@
185184
<Platforms>
186185
<Platform value="Android">True</Platform>
187186
<Platform value="Android64">True</Platform>
187+
<Platform value="iOSDevice64">True</Platform>
188+
<Platform value="iOSSimARM64">True</Platform>
188189
<Platform value="Linux64">False</Platform>
189190
<Platform value="OSX64">True</Platform>
190191
<Platform value="OSXARM64">True</Platform>
191192
<Platform value="Win32">True</Platform>
192193
<Platform value="Win64">True</Platform>
193-
<Platform value="iOSDevice64">False</Platform>
194-
<Platform value="iOSSimARM64">False</Platform>
195194
</Platforms>
196195
</BorlandProject>
197196
<ProjectFileVersion>12</ProjectFileVersion>

Packages/Delphi/Delphi 10.4+/PythonVcl.dproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@
144144
<Platforms>
145145
<Platform value="Android">False</Platform>
146146
<Platform value="Android64">False</Platform>
147+
<Platform value="iOSDevice64">False</Platform>
148+
<Platform value="iOSSimARM64">False</Platform>
147149
<Platform value="Linux64">False</Platform>
148150
<Platform value="OSX64">False</Platform>
149151
<Platform value="OSXARM64">False</Platform>
150152
<Platform value="Win32">True</Platform>
151153
<Platform value="Win64">True</Platform>
152-
<Platform value="iOSDevice64">False</Platform>
153-
<Platform value="iOSSimARM64">False</Platform>
154154
</Platforms>
155155
</BorlandProject>
156156
<ProjectFileVersion>12</ProjectFileVersion>

Packages/Delphi/Delphi 10.4+/dclPython.dproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@
144144
<Platforms>
145145
<Platform value="Android">False</Platform>
146146
<Platform value="Android64">False</Platform>
147+
<Platform value="iOSDevice64">False</Platform>
148+
<Platform value="iOSSimARM64">False</Platform>
147149
<Platform value="Linux64">False</Platform>
148150
<Platform value="OSX64">False</Platform>
149151
<Platform value="OSXARM64">False</Platform>
150152
<Platform value="Win32">True</Platform>
151153
<Platform value="Win64">False</Platform>
152-
<Platform value="iOSDevice64">False</Platform>
153-
<Platform value="iOSSimARM64">False</Platform>
154154
</Platforms>
155155
</BorlandProject>
156156
<ProjectFileVersion>12</ProjectFileVersion>

Packages/Delphi/Delphi 10.4+/dclPythonFmx.dproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,13 @@
120120
<Platforms>
121121
<Platform value="Android">False</Platform>
122122
<Platform value="Android64">False</Platform>
123+
<Platform value="iOSDevice64">False</Platform>
124+
<Platform value="iOSSimARM64">False</Platform>
123125
<Platform value="Linux64">False</Platform>
124126
<Platform value="OSX64">False</Platform>
125127
<Platform value="OSXARM64">False</Platform>
126128
<Platform value="Win32">True</Platform>
127129
<Platform value="Win64">False</Platform>
128-
<Platform value="iOSDevice64">False</Platform>
129-
<Platform value="iOSSimARM64">False</Platform>
130130
</Platforms>
131131
</BorlandProject>
132132
<ProjectFileVersion>12</ProjectFileVersion>

Packages/Delphi/Delphi 10.4+/dclPythonVcl.dproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,13 @@
120120
<Platforms>
121121
<Platform value="Android">False</Platform>
122122
<Platform value="Android64">False</Platform>
123+
<Platform value="iOSDevice64">False</Platform>
124+
<Platform value="iOSSimARM64">False</Platform>
123125
<Platform value="Linux64">False</Platform>
124126
<Platform value="OSX64">False</Platform>
125127
<Platform value="OSXARM64">False</Platform>
126128
<Platform value="Win32">True</Platform>
127129
<Platform value="Win64">False</Platform>
128-
<Platform value="iOSDevice64">False</Platform>
129-
<Platform value="iOSSimARM64">False</Platform>
130130
</Platforms>
131131
</BorlandProject>
132132
<ProjectFileVersion>12</ProjectFileVersion>

Source/PythonDocs.pas

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1+
(**************************************************************************)
2+
(* This unit is part of the Python for Delphi (P4D) library *)
3+
(* Project home: https://github.com/pyscripter/python4delphi *)
4+
(* *)
5+
(* Project Maintainer: PyScripter ([email protected]) *)
6+
(* Original Authors: Dr. Dietmar Budelsky ([email protected]) *)
7+
(* Morgan Martinet (https://github.com/mmm-experts) *)
8+
(* Core developer: Lucas Belo ([email protected]) *)
9+
(* Contributors: See contributors.md at project home *)
10+
(* *)
11+
(* LICENCE and Copyright: MIT (see project home) *)
12+
(**************************************************************************)
13+
114
{$I Definition.Inc}
15+
216
unit PythonDocs;
317

418
interface

Source/PythonEngine.pas

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,6 +1363,8 @@ TPythonInterface=class(TDynamicDll)
13631363
Py_NoSiteFlag: PInteger;
13641364
Py_FrozenFlag: PInteger;
13651365
Py_IgnoreEnvironmentFlag: PInteger;
1366+
Py_DontWriteBytecodeFlag: PInteger;
1367+
Py_IsolatedFlag: PInteger;
13661368

13671369
PyImport_FrozenModules: PP_frozen;
13681370

@@ -1880,16 +1882,17 @@ TPythonInterface=class(TDynamicDll)
18801882
//--------------------------------------------------------
18811883
type
18821884
TDatetimeConversionMode = (dcmToTuple, dcmToDatetime);
1885+
TPythonFlag = (pfDebug, pfInteractive, pfNoSite, pfOptimize, pfVerbose,
1886+
pfFrozenFlag, pfIgnoreEnvironmentFlag,
1887+
pfDontWriteBytecodeFlag, pfIsolatedFlag);
1888+
TPythonFlags = set of TPythonFlag;
18831889
const
18841890
DEFAULT_DATETIME_CONVERSION_MODE = dcmToTuple;
1891+
DEFAULT_FLAGS = {$IFNDEF IOS}[]{$ELSE}[pfDontWriteBytecodeFlag, pfIsolatedFlag]{$ENDIF};
18851892
type
18861893
TEngineClient = class;
18871894
TPathInitializationEvent = procedure ( Sender : TObject; var Path : string ) of Object;
18881895
TSysPathInitEvent = procedure ( Sender : TObject; PathList : PPyObject ) of Object;
1889-
TPythonFlag = (pfDebug, pfInteractive, pfNoSite, pfOptimize, pfVerbose,
1890-
pfFrozenFlag, pfIgnoreEnvironmentFlag);
1891-
TPythonFlags = set of TPythonFlag;
1892-
18931896

18941897
TTracebackItem = class
18951898
public
@@ -2089,7 +2092,7 @@ TPythonEngine = class(TPythonInterface)
20892092
property InitScript: TStrings read FInitScript write SetInitScript;
20902093
property InitThreads: Boolean read FInitThreads write SetInitThreads default False;
20912094
property IO: TPythonInputOutput read FIO write SetIO;
2092-
property PyFlags: TPythonFlags read FPyFlags write SetPyFlags default [];
2095+
property PyFlags: TPythonFlags read FPyFlags write SetPyFlags default DEFAULT_FLAGS;
20932096
property RedirectIO: Boolean read FRedirectIO write FRedirectIO default True;
20942097
property UseWindowsConsole: Boolean read FUseWindowsConsole write FUseWindowsConsole default False;
20952098
property OnAfterInit: TNotifyEvent read FOnAfterInit write FOnAfterInit;
@@ -3656,6 +3659,9 @@ procedure TPythonInterface.MapDll;
36563659

36573660
Py_IgnoreEnvironmentFlag := Import('Py_IgnoreEnvironmentFlag');
36583661

3662+
Py_DontWriteBytecodeFlag := Import('Py_DontWriteBytecodeFlag');
3663+
Py_IsolatedFlag := Import('Py_IsolatedFlag');
3664+
36593665
Py_None := Import('_Py_NoneStruct');
36603666
Py_Ellipsis := Import('_Py_EllipsisObject');
36613667
Py_False := Import('_Py_FalseStruct');
@@ -4484,7 +4490,7 @@ constructor TPythonEngine.Create(AOwner: TComponent);
44844490
FInitThreads := False;
44854491
FTraceback := TPythonTraceback.Create;
44864492
FUseWindowsConsole := False;
4487-
FPyFlags := [];
4493+
FPyFlags := DEFAULT_FLAGS;
44884494
FDatetimeConversionMode := DEFAULT_DATETIME_CONVERSION_MODE;
44894495
if csDesigning in ComponentState then
44904496
begin
@@ -4615,6 +4621,8 @@ procedure TPythonEngine.AssignPyFlags;
46154621
SetFlag(Py_NoSiteFlag, pfNoSite in FPyFlags);
46164622
SetFlag(Py_FrozenFlag, pfFrozenFlag in FPyFlags);
46174623
SetFlag(Py_IgnoreEnvironmentFlag, pfIgnoreEnvironmentFlag in FPyFlags);
4624+
SetFlag(Py_DontWriteBytecodeFlag, pfDontWriteBytecodeFlag in FPyFlags);
4625+
SetFlag(Py_IsolatedFlag, pfIsolatedFlag in FPyFlags);
46184626
end;
46194627

46204628
procedure TPythonEngine.Initialize;
@@ -4706,6 +4714,8 @@ procedure TPythonEngine.Initialize;
47064714
AssignPyFlags;
47074715
if Length(FPythonHome) > 0 then
47084716
Py_SetPythonHome(PWCharT(FPythonHome));
4717+
if Length(FPythonPath) > 0 then
4718+
Py_SetPath(PWCharT(FPythonPath));
47094719
Py_Initialize;
47104720
if Assigned(Py_IsInitialized) then
47114721
FInitialized := Py_IsInitialized() <> 0

0 commit comments

Comments
 (0)