Import('env')

env.core_sources=[]


gd_call=""
gd_inc=""

for x in env.global_defaults:
	env.core_sources.append("#platform/"+x+"/globals/global_defaults.cpp")
	gd_inc+='#include "platform/'+x+'/globals/global_defaults.h"\n'
	gd_call+="\tregister_"+x+"_global_defaults();\n"

gd_cpp='#include "globals.h"\n'
gd_cpp+=gd_inc
gd_cpp+="void Globals::register_global_defaults() {\n"+gd_call+"\n}\n"

f = open("global_defaults.cpp","wb")
f.write(gd_cpp)
f.close()

import os
txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0"
if ("SCRIPT_AES256_ENCRYPTION_KEY" in os.environ):
	e=os.environ["SCRIPT_AES256_ENCRYPTION_KEY"]
	txt = ""
	ec_valid=True
	if (len(e)!=64):
		ec_valid=False
	else:

		for i in range(len(e)>>1):
			if (i>0):
				txt+=","
			txts="0x"+e[i*2:i*2+2]
			try:
				int(txts,16)
			except:
				ec_valid=False
			txt+=txts
	if (not ec_valid):
		txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0"
		print("Invalid AES256 encryption key, not 64 bits hex: "+e)

f = open("script_encryption_key.cpp", "wb")
f.write("#include \"globals.h\"\nuint8_t script_encryption_key[32]={" + txt + "};\n")
f.close()


env.add_source_files(env.core_sources,"*.cpp")


Export('env')

import make_binders
env.Command(['method_bind.inc','method_bind_ext.inc'], 'make_binders.py', make_binders.run)

SConscript('os/SCsub');
SConscript('math/SCsub');
SConscript('io/SCsub');
SConscript('bind/SCsub');

lib = env.Library("core",env.core_sources)

env.Prepend(LIBS=[lib])