Skip to content
Snippets Groups Projects
SConscript 4.66 KiB
Newer Older
import shutil
import os
import tarfile

jdh8d's avatar
 
jdh8d committed
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")
jdh8d's avatar
jdh8d committed
    os.system("make clean")
    os.chdir(os.environ['SECURITY_TRANSFORMS_HOME'])
    os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']+"/third_party/keystone/build")
    os.system("rm -rf " + os.environ['SECURITY_TRANSFORMS_HOME']+"/third_party/keystone/build")
    os.chdir(os.environ['SECURITY_TRANSFORMS_HOME'])
    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']+"/third_party/keystone")
    print("Rebuilding libkeystone.")
    os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']+"/third_party/keystone")
    os.system("mkdir -p ./build")
    os.chdir("build")
    os.system('../make-common.sh lib_only; cmake -DBUILD_LIBS_ONLY=$BUILD_LIBS_ONLY -DLLVM_BUILD_32_BITS="$LLVM_BUILD_32_BITS" -DCMAKE_OSX_ARCHITECTURES="$ARCH" -DCMAKE_BUILD_TYPE=$BUILDTYPE -DBUILD_SHARED_LIBS=ON -DLLVM_TARGETS_TO_BUILD="all" -G "Unix Makefiles" ..; make -j' + str(jobs))
    os.system("make DESTDIR=$SECURITY_TRANSFORMS_HOME/lib install")
jdh8d's avatar
jdh8d committed
    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 " )
libPEBLISS=SConscript("third_party/SConscript.pebliss")
# setup libraries needed for linking
if "PEDI_HOME" in os.environ:
	Depends(pedi,libPEBLISS)
# 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]?!"
assert len(libcapstone_path) != 0, "No candidates 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"

# get the libkeystone.so.[version] file regardless of the version extension
libkeystone_path = Glob(os.environ['SECURITY_TRANSFORMS_HOME']+'/lib/usr/local/lib*/libkeystone.so.*')
assert len(libkeystone_path) <= 1, "More than one candidate for libkeystone.so.[version]?!"
assert len(libkeystone_path) != 0, "No candidates for libkeystone.so.[version]?!"

libkeystone_path = env.Install("$SECURITY_TRANSFORMS_HOME/lib/", libkeystone_path)

env.Command(os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libkeystone.so", libkeystone_path, "ln -s $SOURCE.abspath $TARGET.abspath")
libkeystone=os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libkeystone.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")
jdh8d's avatar
 
jdh8d committed

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')
jdh8d's avatar
jdh8d committed

	Default(libIRDBcore, libIRDBcfg, libIRDButil, libIRDBdeep, libIRDBcore, libehp,libtransform,libEXEIO,libMEDSannotation,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders)