import shutil import os import tarfile Import('env') if env.GetOption('clean'): if os.path.exists(os.environ['SECURITY_TRANSFORMS_HOME']+"/include/targ-config.h"): print 'Removing include/targ-config.h' os.remove(os.environ['SECURITY_TRANSFORMS_HOME']+"/include/targ-config.h") os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']+"/third_party/capstone") os.system("make clean") os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']) else: os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']+"/third_party/capstone") print "Rebuilding libcapstone." jobs=env.GetOption('num_jobs') os.system("make -j "+str(jobs)) os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']) if "PEDI_HOME" in os.environ: pedi = Command( target = "./testoutput", source = "./SConscript", action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " ) env['BASE_IRDB_LIBS']="irdb-core" libPEBLISS=SConscript("third_party/SConscript.pebliss") # setup libraries needed for linking if "PEDI_HOME" in os.environ: Depends(pedi,libPEBLISS) Export('env') # get the libcapstone.so.[version] file regardless of the version extension libcapstone_path = Glob(os.environ['SECURITY_TRANSFORMS_HOME']+'/third_party/capstone/libcapstone.so.*') assert len(libcapstone_path) <= 1, "More than one candidate for libcapstone.so.[version]?!" libcapstone_path = env.Install("$SECURITY_TRANSFORMS_HOME/lib/", libcapstone_path) env.Command(os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libcapstone.so", libcapstone_path, "ln -s $SOURCE.abspath $TARGET.abspath") libcapstone=os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libcapstone.so" libehp=env.SConscript("libehp/SConscript") libehp=env.Install("$SECURITY_TRANSFORMS_HOME/lib", libehp); libIRDBcore=env.SConscript("libIRDB-core/src/SConscript") Depends(libIRDBcore,libcapstone) libIRDBcfg=env.SConscript("libIRDB-cfg/src/SConscript") libIRDButil=env.SConscript("libIRDB-util/src/SConscript") libIRDBsyscall=env.SConscript("libIRDB-syscall/src/SConscript") libElfDep=SConscript("libIRDB-elfdep/src/SConscript") libtransform=SConscript("libIRDB-transform/src/SConscript") libEXEIO=SConscript("libEXEIO/SConscript") libMEDSannotation=SConscript("libMEDSannotation/SConscript") libStructDiv=SConscript("libStructDiv/SConscript") thanos=SConscript("thanos/SConscript") rida=SConscript("rida/SConscript") meds2pdb=SConscript("meds2pdb/SConscript") dump_map=SConscript("dump_map/SConscript") dump_insns=SConscript("dump_insns/SConscript") ir_builders=SConscript("ir_builders/SConscript") libs=( libIRDBcore, libIRDBcfg, libIRDButil, libIRDBcore, libehp, libtransform, libEXEIO, libMEDSannotation, libStructDiv, libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders) if "PEDI_HOME" in os.environ: Depends(pedi, libs) Default(libs) # if is local build if Dir('.').abspath == Dir('#.').abspath: Default( pedi ) ret=[pedi]+ libs Return('ret') else: Return('libs') else: Default(libIRDBcore, libIRDBcfg, libIRDButil, libIRDBdeep, libIRDBcore, libehp,libtransform,libEXEIO,libMEDSannotation,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders)