forked from pEp.foundation/pEpPythonAdapter
Add Windows project and adjust build script for Windows build
parent
35305650f5
commit
ea5d4f62ed
|
@ -0,0 +1,36 @@
|
|||
syntax: glob
|
||||
|
||||
local.conf
|
||||
*.swp
|
||||
ws/
|
||||
tags/
|
||||
.DS_Store/
|
||||
pEp.egg-info/
|
||||
dist/
|
||||
build/
|
||||
.pythonhist
|
||||
.gnupg
|
||||
.lldb
|
||||
.pEp_management.db*
|
||||
.python_history
|
||||
__pycache__/
|
||||
test/Laptop/
|
||||
test/Library/
|
||||
test/Phone/
|
||||
test/TestInbox/
|
||||
test/Backup/
|
||||
test/lib/
|
||||
test/imap_settings.py
|
||||
venv/
|
||||
build-windows/Debug/
|
||||
build-windows/Release/
|
||||
build-windows/packages/
|
||||
build-windows/.vs/
|
||||
build-windows/pEpPythonAdapter.vcxproj.*
|
||||
launch.json
|
||||
settings.json
|
||||
# Default ignored files
|
||||
.idea/
|
||||
docs/build/
|
||||
.eggs/
|
||||
.tox/
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.31005.135
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pEpPythonAdapter", "pEpPythonAdapter.vcxproj", "{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Debug|x64.Build.0 = Debug|x64
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Debug|x86.Build.0 = Debug|Win32
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Release|x64.ActiveCfg = Release|x64
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Release|x64.Build.0 = Release|x64
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Release|x86.ActiveCfg = Release|Win32
|
||||
{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B63BC9BA-EF76-4FB4-9126-29CBFAD9092C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,112 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{F7D4314B-C7BA-4117-9AE7-AC5C1492153D}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Makefile</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<NMakeBuildCommandLine>nmake /F "$(ProjectDir)..\make.mak" all</NMakeBuildCommandLine>
|
||||
<NMakeOutput>
|
||||
</NMakeOutput>
|
||||
<NMakePreprocessorDefinitions>WIN32;_DEBUG;_DLL;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
||||
<NMakeCleanCommandLine>nmake /F "$(ProjectDir)..\make.mak" clean</NMakeCleanCommandLine>
|
||||
<SourcePath>$(VC_SourcePath);$(ProjectDir)..</SourcePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<NMakeBuildCommandLine>make.cmd</NMakeBuildCommandLine>
|
||||
<NMakeOutput>pEpPythonAdapter.exe</NMakeOutput>
|
||||
<NMakePreprocessorDefinitions>_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<NMakeBuildCommandLine>nmake /F "$(ProjectDir)..\make.mak" all</NMakeBuildCommandLine>
|
||||
<NMakeOutput>
|
||||
</NMakeOutput>
|
||||
<NMakePreprocessorDefinitions>WIN32;NDEBUG;_DLL;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
||||
<NMakeCleanCommandLine>nmake /F "$(ProjectDir)..\make.mak" clean</NMakeCleanCommandLine>
|
||||
<SourcePath>$(VC_SourcePath);$(ProjectDir)..</SourcePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<NMakeBuildCommandLine>make.cmd</NMakeBuildCommandLine>
|
||||
<NMakeOutput>pEpPythonAdapter.exe</NMakeOutput>
|
||||
<NMakePreprocessorDefinitions>NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\make.mak" />
|
||||
<None Include="..\setup.py" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="packages\boost.1.72.0.0\build\boost.targets" Condition="Exists('packages\boost.1.72.0.0\build\boost.targets')" />
|
||||
<Import Project="packages\boost_locale-vc142.1.72.0.0\build\boost_locale-vc142.targets" Condition="Exists('packages\boost_locale-vc142.1.72.0.0\build\boost_locale-vc142.targets')" />
|
||||
<Import Project="packages\boost_python38-vc142.1.72.0.0\build\boost_python38-vc142.targets" Condition="Exists('packages\boost_python38-vc142.1.72.0.0\build\boost_python38-vc142.targets')" />
|
||||
</ImportGroup>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\boost.1.72.0.0\build\boost.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\boost.1.72.0.0\build\boost.targets'))" />
|
||||
<Error Condition="!Exists('packages\boost_locale-vc142.1.72.0.0\build\boost_locale-vc142.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\boost_locale-vc142.1.72.0.0\build\boost_locale-vc142.targets'))" />
|
||||
<Error Condition="!Exists('packages\boost_python38-vc142.1.72.0.0\build\boost_python38-vc142.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\boost_python38-vc142.1.72.0.0\build\boost_python38-vc142.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="boost" version="1.72.0.0" targetFramework="native" />
|
||||
<package id="boost_locale-vc142" version="1.72.0.0" targetFramework="native" />
|
||||
<package id="boost_python38-vc142" version="1.72.0.0" targetFramework="native" />
|
||||
</packages>
|
|
@ -0,0 +1,27 @@
|
|||
# build dirs
|
||||
BUILD_DIR = $(ProjectDir)..\build
|
||||
DIST_DIR = $(ProjectDir)..\dist
|
||||
|
||||
# create wheel and egg package in dist
|
||||
dist: dist-whl dist-egg
|
||||
|
||||
# create wheel package in dist
|
||||
dist-whl: compile
|
||||
PY -3.8-32 setup.py bdist_wheel
|
||||
|
||||
# create egg package in dist
|
||||
dist-egg: compile
|
||||
PY -3.8-32 setup.py bdist_egg
|
||||
|
||||
# build the module into build
|
||||
compile:
|
||||
CD..
|
||||
PY -3.8-32 setup.py build_ext
|
||||
|
||||
# delete output directories
|
||||
clean:
|
||||
@if exist $(BUILD_DIR) rmdir /S /Q $(BUILD_DIR)
|
||||
@if exist $(DIST_DIR) rmdir /S /Q $(DIST_DIR)
|
||||
|
||||
# create directories and build application
|
||||
all: clean dist
|
55
setup.py
55
setup.py
|
@ -42,53 +42,44 @@ class BuildExtCommand(build_ext):
|
|||
self.prefix = getattr(self, "prefix=", None)
|
||||
|
||||
def windowsGetInstallLocation(self):
|
||||
# Note: should be installed to 'C:\Program Files (x86)' while a 32-bit distro
|
||||
# TODO: Try desktop adapter location first, then COM server
|
||||
# FIXME: This is wrong, we should chase the COM server, not the Outlook Plugin (even if they're in the same place)
|
||||
reg_path = "Software\\Microsoft\\Office\\Outlook\\Addins\\pEp"
|
||||
KeyName = 'FileName'
|
||||
reg_path = "SOFTWARE\\Classes\\TypeLib\\{564A4350-419E-47F1-B0DF-6FCCF0CD0BBC}\\1.0\\0\\win32"
|
||||
KeyName = None
|
||||
regKey = None
|
||||
pEpLog("Registry Lookup:", reg_path, KeyName)
|
||||
try:
|
||||
regKey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_path, 0, winreg.KEY_READ)
|
||||
# Keys: Description, FileName, FriendlyName, LoadBehavior
|
||||
com_server, regtype = winreg.QueryValueEx(regKey, KeyName)
|
||||
winreg.CloseKey(regKey)
|
||||
except WindowsError:
|
||||
pEpLog("Unknown Error")
|
||||
com_server, _ = winreg.QueryValueEx(regKey, KeyName)
|
||||
except WindowsError as error:
|
||||
pEpLog("Error ocurred: " + error)
|
||||
com_server = None
|
||||
finally:
|
||||
if winreg:
|
||||
winreg.CloseKey(regKey)
|
||||
# <install-base>\\bin\\COM_Server.exe
|
||||
dirname = os.path.dirname
|
||||
ret = dirname(dirname(com_server))
|
||||
pEpLog("Value:", ret)
|
||||
return ret
|
||||
|
||||
def get_build_info_winnt(self):
|
||||
def windowsGetBoostDirs(self):
|
||||
for dir in [f.path for f in os.scandir(join(os.getcwd(), 'build-windows', 'packages')) if f.is_dir()]:
|
||||
if 'boost.' in dir or 'boost_python' in dir or 'boost_locale' in dir:
|
||||
yield join(dir, 'lib', 'native'), join(dir, 'lib', 'native', 'include')
|
||||
|
||||
def get_build_info_win32(self):
|
||||
home = environ.get('PER_USER_DIRECTORY') or environ.get('USERPROFILE')
|
||||
sys_root = environ.get('SystemRoot')
|
||||
profile_root = environ.get('AppData')
|
||||
local_root = environ.get('LocalAppData')
|
||||
inst_prefix = self.windowsGetInstallLocation()
|
||||
sys_includes = [
|
||||
join(inst_prefix, 'include'),
|
||||
join(profile_root, 'pEp', 'include'),
|
||||
join(local_root, 'pEp', 'include'),
|
||||
join(sys_root, 'pEp', 'include'),
|
||||
]
|
||||
join(inst_prefix),
|
||||
] + [d[1] for d in self.windowsGetBoostDirs()]
|
||||
sys_libdirs = [
|
||||
join(inst_prefix, 'bin'),
|
||||
join(profile_root, 'pEp', 'bin'),
|
||||
join(local_root, 'pEp', 'bin'),
|
||||
join(sys_root, 'pEp', 'bin'),
|
||||
]
|
||||
join(inst_prefix, 'Release')
|
||||
] + [d[0] for d in self.windowsGetBoostDirs()]
|
||||
libs = [
|
||||
'pEpEngine',
|
||||
'pEpAdapter',
|
||||
'boost_python37-mt',
|
||||
'boost_locale-mt'
|
||||
'libpEpAdapter',
|
||||
'boost_python38-vc142-mt-x32-1_72',
|
||||
'boost_locale-vc142-mt-x32-1_72'
|
||||
]
|
||||
return (home, sys_includes, sys_libdirs, libs)
|
||||
|
||||
|
@ -135,8 +126,8 @@ class BuildExtCommand(build_ext):
|
|||
pEpLog("sys.platform: ", sys.platform)
|
||||
|
||||
# get build information for platform
|
||||
if sys.platform == 'winnt':
|
||||
build_info = self.get_build_info_winnt()
|
||||
if sys.platform == 'win32':
|
||||
build_info = self.get_build_info_win32()
|
||||
elif sys.platform == 'darwin':
|
||||
build_info = self.get_build_info_darwin()
|
||||
elif sys.platform == 'linux':
|
||||
|
@ -172,7 +163,7 @@ class BuildExtCommand(build_ext):
|
|||
libdirs += sys_libdirs
|
||||
|
||||
# Compile flags
|
||||
compile_flags = ['-std=c++14', '-fpermissive']
|
||||
compile_flags = ['/std:c++14', '/permissive'] if sys.platform == 'win32' else [ '--std:c++14', '--fpermissive' ]
|
||||
if self.debug:
|
||||
pEpLog("debug mode")
|
||||
compile_flags += ['-O0', '-g', '-UNDEBUG']
|
||||
|
@ -193,8 +184,8 @@ class BuildExtCommand(build_ext):
|
|||
build_ext.run(self)
|
||||
|
||||
|
||||
if sys.platform == 'winnt':
|
||||
if sys.version_info[0] >= 3:
|
||||
if sys.platform == 'win32':
|
||||
if sys.version_info[0] >= 3:
|
||||
import winreg
|
||||
else:
|
||||
import _winreg as winreg
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <pEp/timestamp.h>
|
||||
#include <pEp/stringlist.h>
|
||||
#include <pEp/stringpair.h>
|
||||
#include <pEp/platform.h>
|
||||
|
||||
namespace pEp {
|
||||
namespace PythonAdapter {
|
||||
|
|
Loading…
Reference in New Issue