# component2/SConscript
Import("env")
import os

with open(env["PROJECT_TOOL_S"]) as f:
    exec(f.read())

if "CONFIG_SIMDJSON_COMPENENT_ENABLED" in os.environ:
    check_component("simdjson")
    SRCS = []
    INCLUDE = []
    PRIVATE_INCLUDE = []
    REQUIREMENTS = []
    STATIC_LIB = []
    DYNAMIC_LIB = []
    DEFINITIONS = []
    DEFINITIONS_PRIVATE = []
    LDFLAGS = []
    LINK_SEARCH_PATH = []
    DEFINITIONS += ['-std=c++17']
    COMPONENT_PATH = os.path.join(os.environ["GIT_REPO_PATH"], "simdjson")
    SRCS += [os.path.join(COMPONENT_PATH, "src/simdjson.cpp")]

    gcc_dumpmachine = env["GCC_DUMPMACHINE"].split("-")
    if "x86_64" in gcc_dumpmachine and "linux" in gcc_dumpmachine:
        DEFINITIONS_PRIVATE += [
            "-mno-avx256-split-unaligned-load",
            "-mno-avx256-split-unaligned-store",
        ]
    DEFINITIONS_PRIVATE += [
        "-DSIMDJSON_AVX512_ALLOWED=1",
        "-DSIMDJSON_THREADS_ENABLED=1",
        "-DSIMDJSON_UTF8VALIDATION=1",
    ]
    INCLUDE.append(os.path.join(COMPONENT_PATH, "include"))
    PRIVATE_INCLUDE.append(os.path.join(COMPONENT_PATH, "src"))

    env["COMPONENTS"].append(
        {
            "target": os.path.basename(env["component_dir"]),
            "SRCS": SRCS,
            "INCLUDE": INCLUDE,
            "PRIVATE_INCLUDE": PRIVATE_INCLUDE,
            "REQUIREMENTS": REQUIREMENTS,
            "STATIC_LIB": STATIC_LIB,
            "DYNAMIC_LIB": DYNAMIC_LIB,
            "DEFINITIONS": DEFINITIONS,
            "DEFINITIONS_PRIVATE": DEFINITIONS_PRIVATE,
            "LDFLAGS": LDFLAGS,
            "LINK_SEARCH_PATH": LINK_SEARCH_PATH,
            "REGISTER": "shared" if "CONFIG_LNNG_DYNAMIC" in os.environ else "static",
        }
    )
