--- a/scripts/build_dependencies/build_step_cmake.js
+++ b/scripts/build_dependencies/build_step_cmake.js
@@ -9,6 +9,45 @@ const path = require("path");
 const utils = require('./build_utils');
 const getCRuntime = require("../cruntime")
 
+const execSync = require('child_process').execSync;
+const CMAKE_SYSTEM_NAME = process.env.CMAKE_SYSTEM_NAME;
+const CMAKE_SYSTEM_VERSION = process.env.CMAKE_SYSTEM_VERSION;
+const CMAKE_SYSTEM_PROCESSOR = process.env.CMAKE_SYSTEM_PROCESSOR;
+const CMAKE_BUILD_TYPE = process.env.CMAKE_BUILD_TYPE;
+const CMAKE_C_FLAGS_RELEASE = process.env.CMAKE_C_FLAGS_RELEASE;
+const CMAKE_CXX_FLAGS_RELEASE = process.env.CMAKE_CXX_FLAGS_RELEASE;
+const CMAKE_C_COMPILER_LAUNCHER = process.env.CMAKE_C_COMPILER_LAUNCHER;
+const CMAKE_C_COMPILER = process.env.CMAKE_C_COMPILER;
+const CMAKE_C_COMPILER_ARG1 = process.env.CMAKE_C_COMPILER_ARG1;
+const CMAKE_CXX_COMPILER_LAUNCHER = process.env.CMAKE_CXX_COMPILER_LAUNCHER;
+const CMAKE_CXX_COMPILER = process.env.CMAKE_CXX_COMPILER;
+const CMAKE_CXX_COMPILER_ARG1 = process.env.CMAKE_CXX_COMPILER_ARG1;
+const CMAKE_ASM_COMPILER = process.env.CMAKE_ASM_COMPILER;
+const CMAKE_EXE_LINKER_FLAGS = process.env.CMAKE_EXE_LINKER_FLAGS;
+const CMAKE_MODULE_LINKER_FLAGS = process.env.CMAKE_MODULE_LINKER_FLAGS;
+const CMAKE_SHARED_LINKER_FLAGS = process.env.CMAKE_SHARED_LINKER_FLAGS;
+const CMAKE_AR = process.env.CMAKE_AR;
+const CMAKE_NM = process.env.CMAKE_NM;
+const CMAKE_RANLIB = process.env.CMAKE_RANLIB;
+const CMAKE_FIND_ROOT_PATH = process.env.CMAKE_FIND_ROOT_PATH;
+const CMAKE_FIND_ROOT_PATH_MODE_PROGRAM = process.env.CMAKE_FIND_ROOT_PATH_MODE_PROGRAM;
+const CMAKE_FIND_ROOT_PATH_MODE_LIBRARY = process.env.CMAKE_FIND_ROOT_PATH_MODE_LIBRARY;
+const CMAKE_FIND_ROOT_PATH_MODE_INCLUDE = process.env.CMAKE_FIND_ROOT_PATH_MODE_INCLUDE;
+const CMAKE_STRIP = process.env.CMAKE_STRIP;
+const CMAKE_INSTALL_PREFIX = process.env.CMAKE_INSTALL_PREFIX;
+const DL_LIBRARY = process.env.DL_LIBRARY;
+const CMAKE_PREFIX_PATH = process.env.CMAKE_PREFIX_PATH;
+const CMAKE_SKIP_RPATH = process.env.CMAKE_SKIP_RPATH;
+const CMAKE_EXPORT_PACKAGE_REGISTRY = process.env.CMAKE_EXPORT_PACKAGE_REGISTRY;
+const CMAKE_EXPORT_NO_PACKAGE_REGISTRY = process.env.CMAKE_EXPORT_NO_PACKAGE_REGISTRY;
+const CMAKE_FIND_USE_PACKAGE_REGISTRY = process.env.CMAKE_FIND_USE_PACKAGE_REGISTRY;
+const CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY = process.env.CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY;
+const CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY = process.env.CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY;
+const CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY = process.env.CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY;
+const CMAKE_SYSROOT = process.env.CMAKE_SYSROOT;
+const CROSS_COMPILE = process.env.CROSS_COMPILE;
+const TARGET_CROSS = process.env.TARGET_CROSS;
+
 module.exports = {
     cmake: null,
     cmake_version: require("../../package.json").devDependencies['cmake-js'].replace("^", ""),
@@ -81,6 +120,42 @@ module.exports = {
                 CMAKE_EXPORT_COMPILE_COMMANDS: true,
                 CMAKE_JS_PLATFORM: platform,
                 BUILD_TESTING: 'OFF',
+                CMAKE_CROSSCOMPILING: true,
+                CMAKE_SYSTEM_NAME: `${CMAKE_SYSTEM_NAME}`,
+                CMAKE_SYSTEM_VERSION: `${CMAKE_SYSTEM_VERSION}`,
+                CMAKE_SYSTEM_PROCESSOR: `${CMAKE_SYSTEM_PROCESSOR}`,
+                CMAKE_BUILD_TYPE: `${CMAKE_BUILD_TYPE}`,
+                CMAKE_C_FLAGS_RELEASE: `${CMAKE_C_FLAGS_RELEASE}`,
+                CMAKE_CXX_FLAGS_RELEASE: `${CMAKE_CXX_FLAGS_RELEASE}`,
+                CMAKE_C_COMPILER_LAUNCHER: `${CMAKE_C_COMPILER_LAUNCHER}`,
+                CMAKE_C_COMPILER: `${CMAKE_C_COMPILER}`,
+                CMAKE_C_COMPILER_ARG1: `${CMAKE_C_COMPILER_ARG1}`,
+                CMAKE_CXX_COMPILER_LAUNCHER: `${CMAKE_CXX_COMPILER_LAUNCHER}`,
+                CMAKE_CXX_COMPILER: `${CMAKE_CXX_COMPILER}`,
+                CMAKE_CXX_COMPILER_ARG1: `${CMAKE_CXX_COMPILER_ARG1}`,
+                CMAKE_ASM_COMPILER: `${CMAKE_ASM_COMPILER}`,
+                CMAKE_EXE_LINKER_FLAGS: `${CMAKE_EXE_LINKER_FLAGS}`,
+                CMAKE_MODULE_LINKER_FLAGS: `${CMAKE_MODULE_LINKER_FLAGS}`,
+                CMAKE_SHARED_LINKER_FLAGS: `${CMAKE_SHARED_LINKER_FLAGS}`,
+                CMAKE_AR: `${CMAKE_AR}`,
+                CMAKE_NM: `${CMAKE_NM}`,
+                CMAKE_RANLIB: `${CMAKE_RANLIB}`,
+                CMAKE_FIND_ROOT_PATH: `${CMAKE_FIND_ROOT_PATH}`,
+                CMAKE_FIND_ROOT_PATH_MODE_PROGRAM: `${CMAKE_FIND_ROOT_PATH_MODE_PROGRAM}`,
+                CMAKE_FIND_ROOT_PATH_MODE_LIBRARY: `${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY}`,
+                CMAKE_FIND_ROOT_PATH_MODE_INCLUDE: `${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}`,
+                DL_LIBRARY: `${DL_LIBRARY}`,
+                CMAKE_SKIP_RPATH: `${CMAKE_SKIP_RPATH}`,
+                CMAKE_EXPORT_PACKAGE_REGISTRY: `${CMAKE_EXPORT_PACKAGE_REGISTRY}`,
+                CMAKE_EXPORT_NO_PACKAGE_REGISTRY: `${CMAKE_EXPORT_NO_PACKAGE_REGISTRY}`,
+                CMAKE_FIND_USE_PACKAGE_REGISTRY: `${CMAKE_FIND_USE_PACKAGE_REGISTRY}`,
+                CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY: `${CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY}`,
+                CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY: `${CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY}`,
+                CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY: `${CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY}`,
+                CMAKE_SYSROOT: `${CMAKE_SYSROOT}`,
+                CROSS_COMPILE: `${CROSS_COMPILE}`,
+                CMAKE_OBJCOPY: `${TARGET_CROSS}objcopy`,
+                CMAKE_STRIP: `${TARGET_CROSS}strip`,
                 CMAKE_INSTALL_PREFIX: 'crt/install',
                 CMAKE_PREFIX_PATH: 'crt/install',
             }
@@ -109,6 +184,18 @@ module.exports = {
         // Enable parallel build (ignored by cmake older than 3.12)
         process.env.CMAKE_BUILD_PARALLEL_LEVEL = `${Math.max(os.cpus().length, 1)}`;
 
+        // Bad technique (for OpenWrt)
+        execSync("find ./crt  \\( -name CMakeLists.txt -or -name *.mk -or -name *.cmake \\) -exec sed -i -e 's| -Werror||g' {} +", (error, stdout, stderr) => {
+            console.log(error, stdout, stderr);
+        });
+        execSync("find ./crt  \\( -name CMakeLists.txt -or -name *.mk -or -name *.cmake \\) -exec sed -i -e 's|-D_FORTIFY_SOURCE=2||g' {} +", (error, stdout, stderr) => {
+            console.log(error, stdout, stderr);
+        });
+
+        execSync("sed -i '35d' ./crt/aws-c-common/cmake/AwsSharedLibSetup.cmake", (error, stdout, stderr) => {
+            console.log(error, stdout, stderr);
+        });
+
         // Run the build
         var buildSystem = new this.cmake.BuildSystem(options);
         return buildSystem.build();
