VMProtect/utils/x86disasm/Sconstruct-x86disasm

94 lines
1.8 KiB
Plaintext
Raw Normal View History

2023-05-14 16:21:09 +03:00
import os
import platform
import sys
sys.path.append("../..")
import fileop
def get_arg(arg_str):
return int((ARGUMENTS.get(arg_str, '0'))) != 0
release = get_arg('release')
clean = get_arg('clean')
amd64 = get_arg('amd64')
system = platform.system().lower()
linux = (system == 'linux')
macosx = (system == 'darwin')
win = (system == 'windows')
assert win or linux or macosx, 'Unsupported platform'
defs = {}
if win:
if release:
compiler_flags = '-MD -Ox -Oy '
defs['NDEBUG'] = None
else:
compiler_flags = '-WX -MTd -Zi -Od '
defs['_DEBUG'] = None
defs['_DPRINT'] = None
compiler_flags += ' -GS -GF -EHsc '
defs['WIN'] = None
defs['_CRT_SECURE_NO_DEPRECATE'] = None
defs['_FILE_OFFSET_BITS'] = '64'
defs['WIN32'] = None
defs['_CONSOLE'] = None
linker_flags = '-debug -opt:ref'
elif linux or macosx:
if release:
compiler_flags = '-O3 -fomit-frame-pointer'
defs['NDEBUG'] = None
else:
compiler_flags = '-g'
defs['_DPRINT'] = None
if linux:
defs['LIN'] = None
else:
defs['MACOSX'] = None
linker_flags = ' -pthread '
else:
assert False, 'Unsupported OS'
defs['UNITTEST'] = None
incdirs = ['../../third-party/libudis86']
if amd64:
defs['AMD64'] = None
target_arch = 'x86_64'
else:
defs['I386'] = None
target_arch = 'x86'
project_name = 'x86disasm'
env = Environment(
ENV = os.environ,
CCFLAGS = compiler_flags,
CPPPATH = incdirs,
CPPDEFINES = defs,
LINKFLAGS = linker_flags,
NAME = project_name,
TARGET_ARCH = target_arch
)
if win:
obj_ext = '.obj'
elif linux or macosx:
obj_ext = '.o'
else:
assert False
dirs = ['.', '../../third-party/libudis86']
if clean:
fileop.clean_dirs(dirs, obj_ext)
else:
# Build file list
sources = []
sources += Glob('./*.cc')
sources += Glob('../../third-party/libudis86/*.c')
# Perform build
env.Program(project_name, sources)