import os

from SCons import Environment


env = Environment.Environment(tools=["cc", "c++", "ar", "link", "textfile", "zip"])

env["ENV"] = os.environ

env["CC"] = "emcc"
env["CXX"] = "em++"

env["AR"] = "emar"
env["RANLIB"] = "emranlib"

# Use TempFileMunge since some AR invocations are too long for cmd.exe.
# Use POSIX-style paths, required with TempFileMunge.
env["ARCOM_POSIX"] = env["ARCOM"].replace("$TARGET", "$TARGET.posix").replace("$SOURCES", "$SOURCES.posix")
env["ARCOM"] = "${TEMPFILE('$ARCOM_POSIX','$ARCOMSTR')}"

# All intermediate files are just object files.
env["OBJPREFIX"] = ""
env["OBJSUFFIX"] = ".o"
env["PROGPREFIX"] = ""
# Program() output consists of multiple files, so specify suffixes manually at builder.
env["PROGSUFFIX"] = ""
env["LIBPREFIX"] = "lib"
env["LIBSUFFIX"] = ".a"
env["LIBPREFIXES"] = ["$LIBPREFIX"]
env["LIBSUFFIXES"] = ["$LIBSUFFIX"]

env.Append(CPPFLAGS=["-sUSE_PTHREADS=1"])
env.Append(LINKFLAGS=["-sUSE_PTHREADS=1"])
env.Append(LINKFLAGS=["-sPTHREAD_POOL_SIZE=8"])
env.Append(CPPFLAGS=["-sSHARED_MEMORY=1"])
env.Append(LINKFLAGS=["-sSHARED_MEMORY=1"])

env.Append(CPPFLAGS=["--std=c++17"])
env.Append(LINKFLAGS=["--std=c++17"])

env.Program(["index.html", "index.js", "index.wasm"], ["main.cpp"])
