def install_native_tools(ctx, clean=False): if not exists(FAASM_INSTALL_DIR): makedirs(FAASM_INSTALL_DIR) build_dir = join(PROJ_ROOT, "build", "native_tools") clean_dir(build_dir, clean) build_cmd = [ "cmake", "-DFAASM_BUILD_TYPE=native-tools", "-DFAASM_AWS_SUPPORT=OFF", "-DFAASM_STATIC_LIBS=OFF", "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_INSTALL_PREFIX={}".format(FAASM_INSTALL_DIR), PROJ_ROOT, ] build_cmd_str = " ".join(build_cmd) print(build_cmd_str) res = call(build_cmd_str, shell=True, cwd=build_dir) if res != 0: raise RuntimeError("Failed to build native tools") res = call("make -j", shell=True, cwd=build_dir) if res != 0: raise RuntimeError("Failed to make native tools") call("sudo make install", shell=True, cwd=build_dir)
def _build_faasm_lib(dir_name, clean, verbose): work_dir = join(PROJ_ROOT, "libs", dir_name) build_dir = join(PROJ_ROOT, "build", dir_name) clean_dir(build_dir, clean) verbose_str = "VERBOSE=1" if verbose else "" build_cmd = [ verbose_str, "cmake", "-DFAASM_BUILD_TYPE=wasm", "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_TOOLCHAIN_FILE={}".format(FAASM_TOOLCHAIN_FILE), work_dir, ] build_cmd_str = " ".join(build_cmd) print(build_cmd_str) res = call(build_cmd_str, shell=True, cwd=build_dir) if res != 0: exit(1) res = call("{} make".format(verbose_str), shell=True, cwd=build_dir) if res != 0: exit(1) res = call("make install", shell=True, cwd=build_dir) if res != 0: exit(1)
def compile_malloc(ctx, clean=False): work_dir = join(PROJ_ROOT, "third-party", "malloc") build_dir = join(PROJ_ROOT, "build", "malloc") clean_dir(build_dir, clean) build_cmd = [ "cmake", "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_TOOLCHAIN_FILE={}".format(FAASM_TOOLCHAIN_FILE), work_dir, ] build_cmd_str = " ".join(build_cmd) print(build_cmd_str) call(build_cmd_str, shell=True, cwd=build_dir) call("make", shell=True, cwd=build_dir) call("make install", shell=True, cwd=build_dir)
def fake(ctx, clean=False): """ Compile and install the fake library used for testing """ work_dir = join(PROJ_ROOT, "func", "dynlink") build_dir = join(PROJ_ROOT, "build", "libfake") clean_dir(build_dir, clean) build_cmd = [ "cmake", "-DFAASM_BUILD_TYPE=wasm", "-DCMAKE_TOOLCHAIN_FILE={}".format(FAASM_TOOLCHAIN_FILE), "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_INSTALL_PREFIX={}".format(SYSROOT_INSTALL_PREFIX), work_dir, ] call(" ".join(build_cmd), shell=True, cwd=build_dir) call("make VERBOSE=1 ", shell=True, cwd=build_dir) call("make install", shell=True, cwd=build_dir) # Copy shared object into place sysroot_files = join(SYSROOT_INSTALL_PREFIX, "lib", "wasm32-wasi", "libfake*.so") runtime_lib_dir = join(FAASM_RUNTIME_ROOT, "lib") if not exists(runtime_lib_dir): makedirs(runtime_lib_dir) call("cp {} {}".format(sysroot_files, runtime_lib_dir), shell=True) # Run codegen shared_objs = [ join(FAASM_RUNTIME_ROOT, "lib", "libfakeLibA.so"), join(FAASM_RUNTIME_ROOT, "lib", "libfakeLibB.so"), ] binary = find_codegen_shared_lib() for so in shared_objs: print("Running codegen for {}".format(so)) check_output("{} {}".format(binary, so), shell=True)
def _build_faasm_lib(dir_name, clean): work_dir = join(PROJ_ROOT, dir_name) build_dir = join(PROJ_ROOT, "build", dir_name) clean_dir(build_dir, clean) build_cmd = [ "cmake", "-DFAASM_BUILD_TYPE=wasm", "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_TOOLCHAIN_FILE={}".format(FAASM_TOOLCHAIN_FILE), work_dir, ] build_cmd_str = " ".join(build_cmd) print(build_cmd_str) call(build_cmd_str, shell=True, cwd=build_dir) call("make", shell=True, cwd=build_dir) call("make install", shell=True, cwd=build_dir)