94 lines
1.8 KiB
Plaintext
94 lines
1.8 KiB
Plaintext
|
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)
|
||
|
|