import os Import('argenv', 'STARS_CCFLAGS') Import('argenv', 'STARS_LDFLAGS') 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 \ -Werror \ --short-enums \ -m32 \ -Wno-unused-variable \ -Wno-unused-local-typedefs \ -Wno-unused-but-set-variable \ -DSTARS_IDA_INTERFACE \ -D__PLUGIN__ \ -D__IDP__ \ '''+STARS_CCFLAGS unused_flags=''' -Wno-attributes \ -Wno-parentheses \ -Wno-strict-aliasing \ -Wno-sign-compare \ -Wmaybe-uninitialized \ -Winit-self \ ''' IDA_LDFLAGS=''' -m32 --shared -L$IDAROOT -lida \ -Wl,--version-script=$SMPSA_HOME/scripts/plugin.script \ '''+STARS_LDFLAGS # 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") Depends(lib,"$SMPSA_HOME/libehp/lib/libehp.a") 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')