mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 00:55:31 +00:00
Merge branch 'master' of https://github.com/z3prover/z3 into polysat
This commit is contained in:
commit
57df45dc16
162 changed files with 2885 additions and 1941 deletions
|
@ -25,7 +25,7 @@ jobs:
|
|||
- task: EsrpCodeSigning@1
|
||||
displayName: Sign
|
||||
inputs:
|
||||
ConnectedServiceName: 'z3-esrp-signing'
|
||||
ConnectedServiceName: 'z3-esrp-signing-2'
|
||||
FolderPath: 'dist/z3-${{parameters.ReleaseVersion}}-${{parameters.BuildArchitecture}}-win/bin'
|
||||
Pattern: 'Microsoft.Z3.dll,libz3.dll,libz3java.dll,z3.exe'
|
||||
signConfigType: 'inlineSignParams'
|
||||
|
|
|
@ -1,136 +0,0 @@
|
|||
#
|
||||
# Copyright (c) 2018 Microsoft Corporation
|
||||
#
|
||||
|
||||
# 1. download releases from github
|
||||
# 2. copy over libz3.dll for the different architectures
|
||||
# 3. copy over Microsoft.Z3.dll from suitable distribution
|
||||
# 4. copy nuspec file from packages
|
||||
# 5. call nuget pack
|
||||
# 6. sign package
|
||||
|
||||
import json
|
||||
import os
|
||||
import urllib.request
|
||||
import zipfile
|
||||
import sys
|
||||
import os.path
|
||||
import shutil
|
||||
import subprocess
|
||||
import mk_util
|
||||
import mk_project
|
||||
|
||||
release_data = json.loads(urllib.request.urlopen("https://api.github.com/repos/Z3Prover/z3/releases/latest").read().decode())
|
||||
release_tag_name = release_data['tag_name']
|
||||
release_tag_ref_data = json.loads(urllib.request.urlopen("https://api.github.com/repos/Z3Prover/z3/git/refs/tags/%s" % release_tag_name).read().decode())
|
||||
release_tag_sha = release_tag_ref_data['object']['sha']
|
||||
#release_tag_data = json.loads(urllib.request.urlopen("https://api.github.com/repos/Z3Prover/z3/commits/%s" % release_tag_sha).read().decode())
|
||||
|
||||
release_version = release_tag_name[3:]
|
||||
release_commit = release_tag_sha # release_tag_data['object']['sha']
|
||||
|
||||
print(release_version)
|
||||
|
||||
def mk_dir(d):
|
||||
if not os.path.exists(d):
|
||||
os.makedirs(d)
|
||||
|
||||
def download_installs():
|
||||
for asset in release_data['assets']:
|
||||
url = asset['browser_download_url']
|
||||
name = asset['name']
|
||||
print("Downloading ", url)
|
||||
sys.stdout.flush()
|
||||
urllib.request.urlretrieve(url, "packages/%s" % name)
|
||||
|
||||
os_info = {"z64-ubuntu-14" : ('so', 'ubuntu.14.04-x64'),
|
||||
'ubuntu-16' : ('so', 'ubuntu-x64'),
|
||||
'x64-win' : ('dll', 'win-x64'),
|
||||
# Skip x86 as I can't get dotnet build to produce AnyCPU TargetPlatform
|
||||
# 'x86-win' : ('dll', 'win-x86'),
|
||||
'osx' : ('dylib', 'osx-x64'),
|
||||
'debian' : ('so', 'debian.8-x64') }
|
||||
|
||||
def classify_package(f):
|
||||
for os_name in os_info:
|
||||
if os_name in f:
|
||||
ext, dst = os_info[os_name]
|
||||
return os_name, f[:-4], ext, dst
|
||||
return None
|
||||
|
||||
|
||||
def unpack():
|
||||
shutil.rmtree("out", ignore_errors=True)
|
||||
# unzip files in packages
|
||||
# out
|
||||
# +- runtimes
|
||||
# +- win-x64
|
||||
# +- win-x86
|
||||
# +- ubuntu.16.04-x64
|
||||
# +- ubuntu.14.04-x64
|
||||
# +- debian.8-x64
|
||||
# +- osx-x64
|
||||
# +
|
||||
for f in os.listdir("packages"):
|
||||
print(f)
|
||||
if f.endswith(".zip") and classify_package(f):
|
||||
os_name, package_dir, ext, dst = classify_package(f)
|
||||
path = os.path.abspath(os.path.join("packages", f))
|
||||
zip_ref = zipfile.ZipFile(path, 'r')
|
||||
zip_ref.extract("%s/bin/libz3.%s" % (package_dir, ext), "tmp")
|
||||
mk_dir("out/runtimes/%s/native" % dst)
|
||||
shutil.move("tmp/%s/bin/libz3.%s" % (package_dir, ext), "out/runtimes/%s/native/." % dst, "/y")
|
||||
if "x64-win" in f:
|
||||
mk_dir("out/lib/netstandard1.4/")
|
||||
for b in ["Microsoft.Z3.dll"]:
|
||||
zip_ref.extract("%s/bin/%s" % (package_dir, b), "tmp")
|
||||
shutil.move("tmp/%s/bin/%s" % (package_dir, b), "out/lib/netstandard1.4/%s" % b)
|
||||
|
||||
def mk_targets():
|
||||
mk_dir("out/build")
|
||||
shutil.copy("../src/api/dotnet/Microsoft.Z3.targets.in", "out/build/Microsoft.Z3.targets")
|
||||
|
||||
def create_nuget_spec():
|
||||
contents = """<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Microsoft.Z3</id>
|
||||
<version>{0}</version>
|
||||
<authors>Microsoft</authors>
|
||||
<description>
|
||||
Z3 is a satisfiability modulo theories solver from Microsoft Research.
|
||||
|
||||
Linux Dependencies:
|
||||
libgomp.so.1 installed
|
||||
</description>
|
||||
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
|
||||
<tags>smt constraint solver theorem prover</tags>
|
||||
<iconUrl>https://raw.githubusercontent.com/Z3Prover/z3/{1}/resources/icon.jpg</iconUrl>
|
||||
<projectUrl>https://github.com/Z3Prover/z3</projectUrl>
|
||||
<licenseUrl>https://raw.githubusercontent.com/Z3Prover/z3/{1}/LICENSE.txt</licenseUrl>
|
||||
<repository
|
||||
type="git"
|
||||
url="https://github.com/Z3Prover/z3.git"
|
||||
branch="master"
|
||||
commit="{1}"
|
||||
/>
|
||||
<requireLicenseAcceptance>true</requireLicenseAcceptance>
|
||||
<language>en</language>
|
||||
</metadata>
|
||||
</package>""".format(release_version, release_commit)
|
||||
|
||||
with open("out/Microsoft.Z3.nuspec", 'w') as f:
|
||||
f.write(contents)
|
||||
|
||||
def create_nuget_package():
|
||||
subprocess.call(["nuget", "pack"], cwd="out")
|
||||
|
||||
def main():
|
||||
mk_dir("packages")
|
||||
download_installs()
|
||||
unpack()
|
||||
mk_targets()
|
||||
create_nuget_spec()
|
||||
create_nuget_package()
|
||||
|
||||
main()
|
|
@ -22,14 +22,14 @@ def mk_dir(d):
|
|||
os.makedirs(d)
|
||||
|
||||
|
||||
os_info = {"z64-ubuntu-14" : ('so', 'ubuntu.14.04-x64'),
|
||||
'ubuntu-18' : ('so', 'ubuntu-x64'),
|
||||
'ubuntu-20' : ('so', 'ubuntu-x64'),
|
||||
'glibc-2.31' : ('so', 'ubuntu-x64'),
|
||||
os_info = {"z64-ubuntu-14" : ('so', 'linux-x64'),
|
||||
'ubuntu-18' : ('so', 'linux-x64'),
|
||||
'ubuntu-20' : ('so', 'linux-x64'),
|
||||
'glibc-2.31' : ('so', 'linux-x64'),
|
||||
'x64-win' : ('dll', 'win-x64'),
|
||||
'x86-win' : ('dll', 'win-x86'),
|
||||
'osx' : ('dylib', 'osx-x64'),
|
||||
'debian' : ('so', 'debian.8-x64') }
|
||||
'debian' : ('so', 'linux-x64') }
|
||||
|
||||
def classify_package(f):
|
||||
for os_name in os_info:
|
||||
|
@ -51,7 +51,7 @@ def unpack(packages, symbols):
|
|||
# +- runtimes
|
||||
# +- win-x64
|
||||
# +- win-x86
|
||||
# +- ubuntu-x64
|
||||
# +- linux-x64
|
||||
# +- osx-x64
|
||||
# +
|
||||
tmp = "tmp" if not symbols else "tmpsym"
|
||||
|
|
|
@ -2398,6 +2398,7 @@ def mk_config():
|
|||
config = open(os.path.join(BUILD_DIR, 'config.mk'), 'w')
|
||||
global CXX, CC, GMP, GUARD_CF, STATIC_BIN, GIT_HASH, CPPFLAGS, CXXFLAGS, LDFLAGS, EXAMP_DEBUG_FLAG, FPMATH_FLAGS, LOG_SYNC, SINGLE_THREADED
|
||||
if IS_WINDOWS:
|
||||
CXXFLAGS = '/nologo /Zi /D WIN32 /D _WINDOWS /EHsc /GS /Gd /std:c++17'
|
||||
config.write(
|
||||
'CC=cl\n'
|
||||
'CXX=cl\n'
|
||||
|
@ -2438,7 +2439,7 @@ def mk_config():
|
|||
'SLINK_FLAGS=/nologo /LDd\n' % static_opt)
|
||||
if VS_X64:
|
||||
config.write(
|
||||
'CXXFLAGS=/c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm- /EHsc /RTC1 /GS /Gd %s %s\n' % (extra_opt, static_opt))
|
||||
'CXXFLAGS=/c %s /W3 /WX- /Od /Oy- /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /Gm- /RTC1 %s %s\n' % (CXXFLAGS, extra_opt, static_opt))
|
||||
config.write(
|
||||
'LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X64 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT %s\n'
|
||||
'SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X64 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 %s %s\n' % (link_extra_opt, maybe_disable_dynamic_base, link_extra_opt))
|
||||
|
@ -2447,7 +2448,7 @@ def mk_config():
|
|||
exit(1)
|
||||
else:
|
||||
config.write(
|
||||
'CXXFLAGS=/c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /D _WINDOWS /Gm- /EHsc /RTC1 /GS /Gd /arch:SSE2 %s %s\n' % (extra_opt, static_opt))
|
||||
'CXXFLAGS=/c %s /W3 /WX- /Od /Oy- /D _DEBUG /D Z3DEBUG /D _CONSOLE /D _TRACE /Gm- /RTC1 /arch:SSE2 %s %s\n' % (CXXFLAGS, extra_opt, static_opt))
|
||||
config.write(
|
||||
'LINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT %s\n'
|
||||
'SLINK_EXTRA_FLAGS=/link /DEBUG /MACHINE:X86 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 %s %s\n' % (link_extra_opt, maybe_disable_dynamic_base, link_extra_opt))
|
||||
|
@ -2463,7 +2464,7 @@ def mk_config():
|
|||
extra_opt = '%s /D _TRACE ' % extra_opt
|
||||
if VS_X64:
|
||||
config.write(
|
||||
'CXXFLAGS=/c%s /Zi /nologo /W3 /WX- /O2 /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _LIB /D _WINDOWS /D _UNICODE /D UNICODE /Gm- /EHsc /GS /Gd /GF /Gy /TP %s %s\n' % (GL, extra_opt, static_opt))
|
||||
'CXXFLAGS=/c%s %s /W3 /WX- /O2 /D _EXTERNAL_RELEASE /D NDEBUG /D _LIB /D UNICODE /Gm- /GF /Gy /TP %s %s\n' % (GL, CXXFLAGS, extra_opt, static_opt))
|
||||
config.write(
|
||||
'LINK_EXTRA_FLAGS=/link%s /profile /MACHINE:X64 /SUBSYSTEM:CONSOLE /STACK:8388608 %s\n'
|
||||
'SLINK_EXTRA_FLAGS=/link%s /profile /MACHINE:X64 /SUBSYSTEM:WINDOWS /STACK:8388608 %s\n' % (LTCG, link_extra_opt, LTCG, link_extra_opt))
|
||||
|
@ -2472,7 +2473,7 @@ def mk_config():
|
|||
exit(1)
|
||||
else:
|
||||
config.write(
|
||||
'CXXFLAGS=/nologo /c%s /Zi /W3 /WX- /O2 /Oy- /D _EXTERNAL_RELEASE /D WIN32 /D NDEBUG /D _CONSOLE /D _WINDOWS /D ASYNC_COMMANDS /Gm- /EHsc /GS /Gd /arch:SSE2 %s %s\n' % (GL, extra_opt, static_opt))
|
||||
'CXXFLAGS=/c%s %s /WX- /O2 /Oy- /D _EXTERNAL_RELEASE /D NDEBUG /D _CONSOLE /D ASYNC_COMMANDS /Gm- /arch:SSE2 %s %s\n' % (GL, CXXFLAGS, extra_opt, static_opt))
|
||||
config.write(
|
||||
'LINK_EXTRA_FLAGS=/link%s /DEBUG /MACHINE:X86 /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 /DYNAMICBASE /NXCOMPAT %s\n'
|
||||
'SLINK_EXTRA_FLAGS=/link%s /DEBUG /MACHINE:X86 /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /STACK:8388608 /OPT:REF /OPT:ICF /TLBID:1 %s %s\n' % (LTCG, link_extra_opt, LTCG, maybe_disable_dynamic_base, link_extra_opt))
|
||||
|
@ -2514,7 +2515,7 @@ def mk_config():
|
|||
if GIT_HASH:
|
||||
CPPFLAGS = '%s -DZ3GITHASH=%s' % (CPPFLAGS, GIT_HASH)
|
||||
CXXFLAGS = '%s -std=c++17' % CXXFLAGS
|
||||
CXXFLAGS = '%s -fvisibility=hidden -c' % CXXFLAGS
|
||||
CXXFLAGS = '%s -fvisibility=hidden -fvisibility-inlines-hidden -c' % CXXFLAGS
|
||||
FPMATH = test_fpmath(CXX)
|
||||
CXXFLAGS = '%s %s' % (CXXFLAGS, FPMATH_FLAGS)
|
||||
if LOG_SYNC:
|
||||
|
|
|
@ -181,10 +181,10 @@ def exec_cmds(cmds):
|
|||
def mk_z3(x64):
|
||||
cmds = []
|
||||
if x64:
|
||||
cmds.append('call "%VCINSTALLDIR%vcvarsall.bat" amd64')
|
||||
cmds.append('call "%VCINSTALLDIR%Auxiliary\\build\\vcvarsall.bat" amd64')
|
||||
cmds.append('cd %s' % BUILD_X64_DIR)
|
||||
else:
|
||||
cmds.append('call "%VCINSTALLDIR%vcvarsall.bat" x86')
|
||||
cmds.append('call "%VCINSTALLDIR%Auxiliary\\build\\vcvarsall.bat" x86')
|
||||
cmds.append('cd %s' % BUILD_X86_DIR)
|
||||
cmds.append('nmake')
|
||||
if exec_cmds(cmds) != 0:
|
||||
|
|
|
@ -93,7 +93,7 @@ stages:
|
|||
- task: CmdLine@2
|
||||
inputs:
|
||||
script:
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x86 &&
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 &
|
||||
python scripts\mk_win_dist.py
|
||||
--x86-only
|
||||
--dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk
|
||||
|
@ -116,7 +116,7 @@ stages:
|
|||
- task: CmdLine@2
|
||||
inputs:
|
||||
script:
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 &&
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 &
|
||||
python scripts\mk_win_dist.py
|
||||
--x64-only
|
||||
--dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk
|
||||
|
|
|
@ -254,7 +254,7 @@ stages:
|
|||
artifact: 'WindowsBuild-x64'
|
||||
path: $(Agent.TempDirectory)
|
||||
- script: cd $(Agent.TempDirectory); mkdir osx-bin; cd osx-bin; unzip ../*osx*.zip
|
||||
- script: cd $(Agent.TempDirectory); mkdir linux-bin; cd linux-bin; unzip ../*centos*.zip
|
||||
- script: cd $(Agent.TempDirectory); mkdir linux-bin; cd linux-bin; unzip ../*glibc*.zip
|
||||
- script: cd $(Agent.TempDirectory); mkdir win32-bin; cd win32-bin; unzip ../*x86-win*.zip
|
||||
- script: cd $(Agent.TempDirectory); mkdir win64-bin; cd win64-bin; unzip ../*x64-win*.zip
|
||||
- script: python3 -m pip install --user -U setuptools wheel
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue