#! /usr/bin/env python

# build subdirectories
bld.add_subdirs('plug/hack')
bld.add_subdirs('rahash')
bld.add_subdirs('radiff')
bld.add_subdirs('rabin')
bld.add_subdirs('rsc')
bld.add_subdirs('rasm')
bld.add_subdirs('rasc')
bld.add_subdirs('javasm')
if bld.env['OS'] == 'Darwin' : bld.add_subdirs('arch/arm/aasm')

obj = bld.new_task_gen('cc', 'program')
obj.target = 'radare'
obj.includes += ' .. include '
obj.env.append_value('CCFLAGS','-DRADARE_CORE -I../vala')
obj.env.append_value('LINKFLAGS','-lm') ## XXX: only for unix
# Linking against..
if bld.env['OS'] == 'Linux':
	obj.env.append_value('LINKFLAGS','-ldl')

#if Options.options.DEBUGGER == 1:
if bld.env['DEBUGGER'] == 1:
	bld.add_subdirs('dbg')
	obj.uselib_local += 'debugger'

if bld.env['SYSPROXY'] == 1:
	obj.env.append_value('CCFLAGS','-DSYSPROXY=1')
# IF GUI
if bld.env['GUI'] == 1:
	obj.uselib += 'GTK'
	obj.uselib_local += ' grava'
	obj.includes += ' ..//build/default/vala/'
	bld.add_subdirs('../gui')

if bld.env['HAVE_LIB_EWF'] == 1:
	obj.env.append_value('LINKFLAGS','-lewf')

# Subdirectories
bld.add_subdirs('plug/io')
obj.uselib_local += ' plug-io'

#if Options.options.HAVE_READLINE:
if bld.env['HAVE_READLINE'] == 1:
	obj.env.append_value('LINKFLAGS','-lreadline')

if bld.env['OS'] == 'SunOS':
	obj.env.append_value('LINKFLAGS','-lsocket')
	obj.env.append_value('LINKFLAGS','-lnsl')

# sources for radare-core
obj.source = 'aes-find.c analyze.c binparse.c bytepat.c cmds.c code.c config.c cons.c dietline.c environ.c flags.c grava.c hack.c rio.c main.c plugin.c print.c project.c rabin.c radare.c rdb.c readline.c search.c socket.c stripstr.c trace.c undo.c visual.c utils.c radiff/rdbdiff.c rahash/hash.c vm.c rahash/entropy.c rahash/crc16.c rabin/javasm.c section.c data.c pas.c macros.c ranges.c vars.c b64.c rtr.c'
# olly assembler
obj.source += ' arch/x86/ollyasm/assembl.c'
obj.source += ' arch/x86/ollyasm/asmserv.c'
obj.source += ' arch/x86/ollyasm/disasm.c'
# rest of dirs
obj.source += ' rasm/arm.c'
obj.source += ' rasm/java.c'
obj.source += ' rasm/olly.c'
obj.source += ' rasm/ppc.c'
obj.source += ' rasm/rasm.c'
obj.source += ' rasm/x86.c'
obj.source += ' rasm/nasm.c'
obj.source += ' rasm/rsc.c'
obj.find_sources_in_dirs('arch/8051')
obj.find_sources_in_dirs('arch/x86')
obj.find_sources_in_dirs('arch/x86/udis86')
obj.find_sources_in_dirs('arch/msil')
obj.find_sources_in_dirs('arch/ppc')
obj.find_sources_in_dirs('arch/sparc')
obj.find_sources_in_dirs('arch/arm')
obj.find_sources_in_dirs('arch/arm/gnu')
obj.find_sources_in_dirs('arch/m68k')
obj.find_sources_in_dirs('arch/java')
obj.find_sources_in_dirs('arch/csr')
obj.find_sources_in_dirs('arch/bf')
obj.find_sources_in_dirs('arch/mips')


#obj.includes += ' ../build/vala/'
#obj.includes += ' /home/pancake/prg/radare/build/default/vala/grava '
	#obj.includes += " ../vala/"

xrefs = bld.new_task_gen('cc', 'program')
xrefs.target = 'xrefs'
xrefs.source = 'xrefs.c'

rax = bld.new_task_gen('cc', 'program')
rax.target = 'rax'
rax.source = 'rax.c'

rax = bld.new_task_gen('cc', 'program')
rax.target = 'lsbstego'
rax.source = 'lsbstego.c'
