import os import buildscripts.utils basicFiles = [ "jsapi.c" , "jsarena.c" , "jsarray.c" , "jsatom.c" , "jsbool.c" , "jscntxt.c" , "jsdate.c" , "jsdbgapi.c" , "jsdhash.c" , "jsdtoa.c" , "jsemit.c" , "jsexn.c" , "jsfun.c" , "jsgc.c" , "jshash.c" , "jsiter.c" , "jsinterp.c" , "jslock.c" , "jslog2.c" , "jslong.c" , "jsmath.c" , "jsnum.c" , "jsobj.c" , "jsopcode.c" , "jsparse.c" , "jsprf.c" , "jsregexp.c" , "jsscan.c" , "jsscope.c" , "jsscript.c" , "jsstr.c" , "jsutil.c" , "jsxdrapi.c" , "jsxml.c" , "prmjtime.c" ] root = "third_party/js-1.7" def r(x): return "%s/%s" % ( root , x ) def configureBasics( env , fileLists , options ): if options["windows"]: env.Append( CPPDEFINES=[ "XP_WIN" ] ) else: env.Append( CPPDEFINES=[ "XP_UNIX" ] ) def configure( env , fileLists , options ): if not options["usesm"]: return configureBasics( env , fileLists , options ) env.Prepend( CPPPATH=[root] ) myenv = env.Clone() myenv.Append( CPPDEFINES=[ "JSFILE" , "EXPORT_JS_API" , "JS_C_STRINGS_ARE_UTF8" ] ) myenv["CPPFLAGS"] = myenv["CPPFLAGS"].replace( "-Werror" , "" ) if options["windows"]: myenv["CPPFLAGS"] = myenv["CPPFLAGS"].replace( "/TP" , "" ) myenv["CPPFLAGS"] = myenv["CPPFLAGS"].replace( "/O2" , "" ) myenv["CPPFLAGS"] = myenv["CPPFLAGS"].replace( "/Gy" , "" ) myenv.Append( CPPFLAGS=" /wd4748 " ) if "NDEBUG" in myenv["CPPDEFINES"]: myenv["CPPDEFINES"].remove( "NDEBUG" ) if os.sys.platform.startswith( "linux" ) or os.sys.platform == "darwin": myenv["CPPDEFINES"] += [ "HAVE_VA_COPY" , "VA_COPY=va_copy" ] elif "sunos5" == os.sys.platform: myenv.Append( CPPDEFINES=[ "SOLARIS" , "HAVE_VA_LIST_AS_ARRAY" , "SVR4" , "SYSV" , "HAVE_LOCALTIME_R" ] ) fileLists["scriptingFiles"] += [ myenv.Object(root + "/" + f) for f in basicFiles ] jskwgen = str( myenv.Program( r("jskwgen") , [ r("jskwgen.c") ] )[0] ) jscpucfg = str( myenv.Program( r("jscpucfg") , [ r("jscpucfg.c") ] )[0] ) def buildAutoFile( target , source , env ): outFile = str( target[0] ) cmd = str( source[0] ) if options["nix"]: cmd = "./" + cmd output = buildscripts.utils.execsys( cmd )[0] output = output.replace( '\r' , '\n' ) out = open( outFile , 'w' ) out.write( output ) return None autoBuilder = myenv.Builder( action = buildAutoFile , suffix = '.h') myenv.Append( BUILDERS={ 'Auto' : autoBuilder } ) myenv.Auto( r("jsautokw.h") , [ jskwgen ] ) myenv.Auto( r("jsautocfg.h") , [ jscpucfg ] ) myenv.Depends( r("jsscan.c") , r("jsautokw.h") ) def configureSystem( env , fileLists , options ): if not options["usesm"]: return configureBasics( env , fileLists , options ) env.Append( LIBS=[ "js" ] )