diff options
| author | serpilliere <devnull@localhost> | 2014-06-03 10:27:56 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2014-06-03 10:27:56 +0200 |
| commit | ed5c3668cc9f545b52674ad699fc2b0ed1ccb575 (patch) | |
| tree | 07faf97d7e4d083173a1f7e1bfd249baed2d74f9 /setup.py | |
| parent | a183e1ebd525453710306695daa8c410fd0cb2af (diff) | |
| download | miasm-ed5c3668cc9f545b52674ad699fc2b0ed1ccb575.tar.gz miasm-ed5c3668cc9f545b52674ad699fc2b0ed1ccb575.zip | |
Miasm v2
* API has changed, so old scripts need updates * See example for API usage * Use tcc or llvm for jit emulation * Go to test and run test_all.py to check install Enjoy !
Diffstat (limited to 'setup.py')
| -rwxr-xr-x | setup.py | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/setup.py b/setup.py new file mode 100755 index 00000000..5292a849 --- /dev/null +++ b/setup.py @@ -0,0 +1,135 @@ +#! /usr/bin/env python + +from distutils.core import setup, Extension +from distutils.util import get_platform +import shutil +import os, sys + +def buil_all(): + packages=['miasm2', + 'miasm2/arch', + 'miasm2/arch/x86', + 'miasm2/arch/arm', + 'miasm2/arch/msp430', + 'miasm2/arch/sh4', + 'miasm2/core', + 'miasm2/expression', + 'miasm2/ir', + 'miasm2/analysis', + 'miasm2/jitter', + 'miasm2/jitter/arch', + 'miasm2/jitter/os_dep', + ] + + ext_modules_no_tcc = [ + Extension("miasm2.jitter.vm_mngr", + ["miasm2/jitter/vm_mngr.c", + "miasm2/jitter/vm_mngr_py.c"]), + Extension("miasm2.jitter.arch.JitCore_x86", + ["miasm2/jitter/arch/JitCore_x86.c"]), + Extension("miasm2.jitter.arch.JitCore_arm", + ["miasm2/jitter/arch/JitCore_arm.c"]), + Extension("miasm2.jitter.arch.JitCore_msp430", + ["miasm2/jitter/arch/JitCore_msp430.c"]), + Extension("miasm2.jitter.Jitllvm", + ["miasm2/jitter/Jitllvm.c"]), + ] + + ext_modules_all = [ + Extension("miasm2.jitter.vm_mngr", + ["miasm2/jitter/vm_mngr.c", + "miasm2/jitter/vm_mngr_py.c"]), + Extension("miasm2.jitter.arch.JitCore_x86", + ["miasm2/jitter/arch/JitCore_x86.c"]), + Extension("miasm2.jitter.arch.JitCore_arm", + ["miasm2/jitter/arch/JitCore_arm.c"]), + Extension("miasm2.jitter.arch.JitCore_msp430", + ["miasm2/jitter/arch/JitCore_msp430.c"]), + Extension("miasm2.jitter.Jitllvm", + ["miasm2/jitter/Jitllvm.c"]), + Extension("miasm2.jitter.Jittcc", + ["miasm2/jitter/Jittcc.c"], + libraries=["tcc"]) + ] + + + print 'building' + build_ok = False + for name, ext_modules in [('all', ext_modules_all), + ('notcc', ext_modules_no_tcc)]: + print 'build with', repr(name) + try: + s = setup( + name = 'Miasm', + version = '2.0', + packages = packages, + package_data = {'miasm2':['jitter/*.h', + 'jitter/arch/*.h',]}, + ext_modules = ext_modules, + # Metadata + author = 'Fabrice Desclaux', + author_email = 'serpilliere@droid-corp.org', + description = 'Machine code manipulation library', + license = 'GPLv2', + # keywords = '', + # url = '', + ) + except SystemExit, e: + print repr(e) + continue + build_ok = True + break + if not build_ok: + raise ValueError('Unable to build Miasm!') + print 'build', name + if name == 'notcc': + print + print "*"*80 + print "Warning: TCC is not properly installed," + print "Miasm will be installed without TCC Jitter" + print "Etheir install TCC or use LLVM jitter" + print "*"*80 + print + # we copy libraries from build dir to current miasm directory + build_base = None + if 'build' in s.command_options: + if 'build_base' in s.command_options['build']: + build_base = s.command_options['build']['build_base'] + if build_base is None: + build_base = "build" + plat_specifier = ".%s-%s" % (get_platform(), sys.version[0:3]) + build_base = os.path.join('build','lib' + plat_specifier) + print build_base + +def buil_no_tcc(): + setup( + name = 'Miasm', + version = '2.0', + packages=['miasm2', 'miasm2/tools', + 'miasm2/expression', 'miasm2/graph', 'miasm2/arch', + 'miasm2/core', 'miasm2/tools/emul_lib' ], + package_data = {'miasm2':['tools/emul_lib/*.h']}, + # data_files = [('toto', ['miasm2/tools/emul_lib/queue.h'])], + # Metadata + author = 'Fabrice Desclaux', + author_email = 'serpilliere@droid-corp.org', + description = 'Machine code manipulation library', + license = 'GPLv2', + # keywords = '', + # url = '', + ) + + +def try_build(): + buil_all() + """ + try: + buil_all() + return + except: + print "WARNING cannot build with libtcc!, trying without it" + print "Miasm will not be able to emulate code" + buil_no_tcc() + """ + +try_build() |