compute-runtime/shared/offline_compiler/source/ocloc_concat.h

57 lines
1.6 KiB
C++

/*
* Copyright (C) 2022-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/utilities/arrayref.h"
#include "shared/source/utilities/const_stringref.h"
#include <cstdint>
#include <string>
#include <vector>
namespace AOT {
enum PRODUCT_CONFIG : uint32_t;
}
class OclocArgHelper;
namespace NEO {
namespace Ar {
struct Ar;
}
class OclocConcat {
public:
using ErrorCode = uint32_t;
OclocConcat() = delete;
OclocConcat(const OclocConcat &) = delete;
OclocConcat &operator=(const OclocConcat &) = delete;
OclocConcat(OclocArgHelper *argHelper) : argHelper(argHelper){};
ErrorCode initialize(const std::vector<std::string> &args);
ErrorCode concatenate();
void printHelp();
static constexpr ConstStringRef commandStr = "concat";
static constexpr ConstStringRef helpMessage = R"===(
ocloc concat - concatenates fat binary files
Usage: ocloc concat <fat binary> <fat binary> ... [-out <concatenated fat binary file name>]
)===";
protected:
ErrorCode checkIfFatBinariesExist();
MOCKABLE_VIRTUAL Ar::Ar decodeAr(ArrayRef<const uint8_t> arFile, std::string &outErrors, std::string &outWarnings);
AOT::PRODUCT_CONFIG getAOTProductConfigFromBinary(ArrayRef<const uint8_t> binary, std::string &outErrors);
ErrorCode parseArguments(const std::vector<std::string> &args);
void printMsg(ConstStringRef fileName, const std::string &message);
OclocArgHelper *argHelper;
std::vector<std::string> fileNamesToConcat;
std::string fatBinaryName = "concat.ar";
};
} // namespace NEO