Commit d4f1ea17 by Victor M. Alvarez

Make setup.py work in Windows

parent 7699b0da
...@@ -96,8 +96,19 @@ class BuildCommand(build): ...@@ -96,8 +96,19 @@ class BuildCommand(build):
exclusions = ['yara/libyara/modules/pe_utils.c'] exclusions = ['yara/libyara/modules/pe_utils.c']
libraries = ['yara'] libraries = ['yara']
include_dirs = [] include_dirs = []
library_dirs = []
compile_args = []
macros = [] macros = []
if self.plat_name in ('win32','win-amd64'):
building_for_windows = True
bits = '64' if self.plat_name == 'win-amd64' else '32'
macros.append(('_CRT_SECURE_NO_WARNINGS','1'))
libraries.append('advapi32')
libraries.append('user32')
else:
building_for_windows = False
if has_function('memmem'): if has_function('memmem'):
macros.append(('HAVE_MEMMEM', '1')) macros.append(('HAVE_MEMMEM', '1'))
if has_function('strlcpy'): if has_function('strlcpy'):
...@@ -109,10 +120,17 @@ class BuildCommand(build): ...@@ -109,10 +120,17 @@ class BuildCommand(build):
macros.append(('PROFILING_ENABLED', '1')) macros.append(('PROFILING_ENABLED', '1'))
if self.static: if self.static:
libraries = [] libraries.remove('yara')
include_dirs = ['yara/libyara/include', 'yara/libyara/', '.'] include_dirs.extend(['yara/libyara/include', 'yara/libyara/', '.'])
if building_for_windows:
include_dirs.append('yara/windows/include')
library_dirs.append('yara/windows/lib')
if (has_function('MD5_Init', libraries=['crypto']) and if building_for_windows:
macros.append(('HASH', '1'))
libraries.append('libeay%s' % bits)
elif (has_function('MD5_Init', libraries=['crypto']) and
has_function('SHA256_Init', libraries=['crypto'])): has_function('SHA256_Init', libraries=['crypto'])):
macros.append(('HASH', '1')) macros.append(('HASH', '1'))
libraries.append('crypto') libraries.append('crypto')
...@@ -126,12 +144,18 @@ class BuildCommand(build): ...@@ -126,12 +144,18 @@ class BuildCommand(build):
if self.enable_cuckoo: if self.enable_cuckoo:
macros.append(('CUCKOO', '1')) macros.append(('CUCKOO', '1'))
if building_for_windows:
libraries.append('jansson%s' % bits)
else:
libraries.append('jansson')
else: else:
exclusions.append('yara/libyara/modules/cuckoo.c') exclusions.append('yara/libyara/modules/cuckoo.c')
exclusions = [os.path.normpath(x) for x in exclusions]
for directory, _, files in os.walk('yara/libyara/'): for directory, _, files in os.walk('yara/libyara/'):
for x in files: for x in files:
x = os.path.join(directory, x) x = os.path.normpath(os.path.join(directory, x))
if x.endswith('.c') and x not in exclusions: if x.endswith('.c') and x not in exclusions:
sources.append(x) sources.append(x)
...@@ -139,9 +163,10 @@ class BuildCommand(build): ...@@ -139,9 +163,10 @@ class BuildCommand(build):
name='yara', name='yara',
sources=sources, sources=sources,
include_dirs=include_dirs, include_dirs=include_dirs,
library_dirs=library_dirs,
libraries=libraries, libraries=libraries,
define_macros=macros, define_macros=macros,
extra_compile_args=['-std=gnu99', '-Wno-deprecated-declarations'])] extra_compile_args=compile_args)]
build.run(self) build.run(self)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment