import os Import('argenv', 'STARS_CCFLAGS') idaenv=argenv.Clone() dirs=''' src/base src/interfaces src/interfaces/abstract src/interfaces/idapro src/drivers/idapro ''' dirs=Split(dirs) cpppath=''' \ $SMPSA_HOME/include \ $SMPSA_HOME/include/base \ $SMPSA_HOME/include/interfaces \ $SMPSA_HOME/include/interfaces/abstract \ $IDASDK/include \ $SMPSA_HOME/include/interfaces/idapro \ ''' IDA_CCFLAGS=''' -std=c++0x \ -D__LINUX__ -Wall -Wno-unused-variable -Wno-attributes \ -Wno-unused-local-typedefs -Wno-parentheses \ -Wno-strict-aliasing -Wno-sign-compare \ -Wno-unused-but-set-variable --short-enums -m32 \ -DSTARS_IDA_INTERFACE -Wmaybe-uninitialized -Winit-self \ -D__PLUGIN__ \ -D__IDP__ \ '''+STARS_CCFLAGS IDA_LDFLAGS="-m32 --shared -L$IDAROOT -lida \ -Wl,--version-script=$SMPSA_HOME/scripts/plugin.script" # find files #print 'dirs: ',dirs files=[] for dir in dirs: files=files+Glob(os.path.join(dir,"*.cpp")) # set suffix properly if int(idaenv['do_64bit_analysis']) == 1: SHLIBSUF=".plx64" else: SHLIBSUF=".plx" idaenv=idaenv.Clone(CCFLAGS=IDA_CCFLAGS, SHLINKFLAGS=IDA_LDFLAGS, SHLIBSUFFIX=SHLIBSUF, SHLIBPREFIX="", CPPPATH=Split(cpppath)); lib=idaenv.SharedLibrary('SMPStaticAnalyzer', files, LIBPATH="$IDAROOT", libs="ida") install=idaenv.Install("$IDAROOT/idc/", "$SMPSA_HOME/scripts/SMP.idc") Default(install) install=idaenv.Install("$SMPSA_HOME/install/", "$SMPSA_HOME/scripts/SMP.idc") Default(install) install=idaenv.Install("$SMPSA_HOME/install/", lib) Default(install) install=idaenv.Install("$IDAROOT/plugins/", lib) Default(install) Return('install')