/* * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/offline_compiler/source/decoder/binary_decoder.h" #include "shared/offline_compiler/source/decoder/binary_encoder.h" #include "shared/offline_compiler/source/offline_compiler.h" #include "shared/offline_compiler/source/utilities/get_current_dir.h" #include "shared/offline_compiler/source/utilities/safety_caller.h" #include "shared/source/os_interface/os_library.h" #include #include #include namespace NEO { class MultiCommand { public: MultiCommand &operator=(const MultiCommand &) = delete; MultiCommand(const MultiCommand &) = delete; MOCKABLE_VIRTUAL ~MultiCommand() = default; static MultiCommand *create(const std::vector &args, int &retVal, OclocArgHelper *helper); std::string outDirForBuilds; std::string outputFileList; protected: MultiCommand() = default; int initialize(const std::vector &args); int splitLineInSeparateArgs(std::vector &qargs, const std::string &command, size_t numberOfBuild); int showResults(); MOCKABLE_VIRTUAL int singleBuild(const std::vector &args); void addAdditionalOptionsToSingleCommandLine(std::vector &, size_t buildId); void printHelp(); void runBuilds(const std::string &argZero); OclocArgHelper *argHelper = nullptr; std::vector retValues; std::vector lines; std::string outFileName; std::string pathToCommandFile; std::stringstream outputFile; bool quiet = false; }; } // namespace NEO