import os def lwip_inject_patcher(env): # ignore when building with lwip2 if "lwip_gcc" not in env["LIBS"]: return platform = env.PioPlatform() framework_dir = platform.get_package_dir("framework-arduinoespressif8266") toolchain_prefix = os.path.join( platform.get_package_dir("toolchain-xtensa"), "bin", "xtensa-lx106-elf-" ) patch_action = env.VerboseAction( " ".join( [ "-patch", "-u", "-N", "-d", os.path.join(framework_dir, "tools", "sdk", "lwip"), os.path.join("src", "core", "tcp_out.c"), env.subst( os.path.join( "$PROJECT_DIR", "..", "dist", "patches", "lwip_mtu_issue_1610.patch", ) ), ] ), "Patching lwip source", ) build_action = env.VerboseAction( " ".join( [ "make", "-C", os.path.join(framework_dir, "tools", "sdk", "lwip", "src"), "install", "TOOLS_PATH={}".format(toolchain_prefix), "LWIP_LIB=liblwip_gcc.a", ] ), "Rebuilding lwip", ) patcher = env.Alias("patch-lwip", None, patch_action) builder = env.Alias("build-lwip", patcher, build_action) if os.environ.get("ESPURNA_PIO_PATCH_ISSUE_1610"): env.Depends("$BUILD_DIR/${PROGNAME}.elf", builder) env.AlwaysBuild(patcher) env.AlwaysBuild(builder)