3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 12:08:18 +00:00

trying reexport trick for OSX

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
Leonardo de Moura 2012-10-26 11:20:03 -07:00
parent fef6d622f5
commit 7ebc6fdd66
2 changed files with 15 additions and 4 deletions

View file

@ -63,7 +63,7 @@ add_lib('api', ['portfolio', 'user_plugin'])
add_exe('shell', ['api', 'sat', 'extra_cmds'], exe_name='z3') add_exe('shell', ['api', 'sat', 'extra_cmds'], exe_name='z3')
add_exe('test', ['api', 'fuzzing'], exe_name='test-z3') add_exe('test', ['api', 'fuzzing'], exe_name='test-z3')
API_files = ['z3_api.h'] API_files = ['z3_api.h']
add_dll('api_dll', ['api', 'sat', 'extra_cmds'], 'api/dll', dll_name='z3', export_files=API_files) add_dll('api_dll', ['sat', 'extra_cmds'], 'api/dll', reexports=['api'], dll_name='z3', export_files=API_files)
add_dot_net_dll('dotnet', ['api_dll'], 'bindings/dotnet/Microsoft.Z3', dll_name='Microsoft.Z3', assembly_info_dir='Properties') add_dot_net_dll('dotnet', ['api_dll'], 'bindings/dotnet/Microsoft.Z3', dll_name='Microsoft.Z3', assembly_info_dir='Properties')
add_dot_net_dll('dotnetV3', ['api_dll'], 'bindings/dotnet/Microsoft.Z3V3', dll_name='Microsoft.Z3V3') add_dot_net_dll('dotnetV3', ['api_dll'], 'bindings/dotnet/Microsoft.Z3V3', dll_name='Microsoft.Z3V3')
set_python_dir('bindings/python') set_python_dir('bindings/python')

View file

@ -335,12 +335,17 @@ class ExeComponent(Component):
return True return True
class DLLComponent(Component): class DLLComponent(Component):
def __init__(self, name, dll_name, path, deps, export_files): def __init__(self, name, dll_name, path, deps, export_files, reexports):
Component.__init__(self, name, path, deps) Component.__init__(self, name, path, deps)
if dll_name == None: if dll_name == None:
dll_name = name dll_name = name
self.dll_name = dll_name self.dll_name = dll_name
self.export_files = export_files self.export_files = export_files
new_deps = find_all_deps(name, reexports)
for new_dep in new_deps:
if not new_dep in reexports:
self.deps.append(new_dep)
self.reexports = reexports
def mk_makefile(self, out): def mk_makefile(self, out):
global _Name2Component global _Name2Component
@ -356,6 +361,12 @@ class DLLComponent(Component):
for cppfile in get_cpp_files(self.src_dir): for cppfile in get_cpp_files(self.src_dir):
objfile = '%s/%s$(OBJ_EXT)' % (self.build_dir, os.path.splitext(cppfile)[0]) objfile = '%s/%s$(OBJ_EXT)' % (self.build_dir, os.path.splitext(cppfile)[0])
objs.append(objfile) objs.append(objfile)
# Explicitly include obj files of reexport. This fixes problems with exported symbols on Linux and OSX.
for reexport in self.reexports:
reexport = get_component(reexport)
for cppfile in get_cpp_files(reexport.src_dir):
objfile = '%s/%s$(OBJ_EXT)' % (reexport.build_dir, os.path.splitext(cppfile)[0])
objs.append(objfile)
for obj in objs: for obj in objs:
out.write(' ') out.write(' ')
out.write(obj) out.write(obj)
@ -427,8 +438,8 @@ def add_exe(name, deps=[], path=None, exe_name=None):
c = ExeComponent(name, exe_name, path, deps) c = ExeComponent(name, exe_name, path, deps)
reg_component(name, c) reg_component(name, c)
def add_dll(name, deps=[], path=None, dll_name=None, export_files=[]): def add_dll(name, deps=[], path=None, dll_name=None, export_files=[], reexports=[]):
c = DLLComponent(name, dll_name, path, deps, export_files) c = DLLComponent(name, dll_name, path, deps, export_files, reexports)
reg_component(name, c) reg_component(name, c)
def add_dot_net_dll(name, deps=[], path=None, dll_name=None, assembly_info_dir=None): def add_dot_net_dll(name, deps=[], path=None, dll_name=None, assembly_info_dir=None):