mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-17 21:10:43 +00:00
### Description <!-- Describe your changes. --> Setup usage of coremltools via dependencies instead of copying files. Pull in some changes from https://github.com/microsoft/onnxruntime/pull/19347 in preparation for supporting ML Program and enabling building the ML Model on all platforms to make development and testing of CoreML EP code easier. - Update to coremltools 7.1 - Add patch for changes required for cross platform build of ML Program related code - Generate coreml proto files on all platforms - mainly to test these changes work everywhere, as the proto files will be used on all platforms when #19347 is checked in - rename onnxruntime_coreml_proto target to coreml_proto as it contains purely coreml protobuf code with no ORT related chagnes ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Improve setup.
155 lines
5.2 KiB
Diff
155 lines
5.2 KiB
Diff
diff --git a/mlmodel/src/MILBlob/Blob/FileWriter.cpp b/mlmodel/src/MILBlob/Blob/FileWriter.cpp
|
|
index adc7bfcf..7b2bf9cc 100644
|
|
--- a/mlmodel/src/MILBlob/Blob/FileWriter.cpp
|
|
+++ b/mlmodel/src/MILBlob/Blob/FileWriter.cpp
|
|
@@ -8,8 +8,12 @@
|
|
|
|
#include <cstdio>
|
|
#include <stdexcept>
|
|
+
|
|
+// ORT_EDIT: Exclude mmap on Windows. Not used in this file anyway.
|
|
+#if !defined(_WIN32)
|
|
#include <sys/mman.h>
|
|
#include <sys/stat.h>
|
|
+#endif
|
|
|
|
using namespace MILBlob;
|
|
using namespace MILBlob::Blob;
|
|
diff --git a/mlmodel/src/MILBlob/Fp16.cpp b/mlmodel/src/MILBlob/Fp16.cpp
|
|
index ae1e71a1..77a7161f 100644
|
|
--- a/mlmodel/src/MILBlob/Fp16.cpp
|
|
+++ b/mlmodel/src/MILBlob/Fp16.cpp
|
|
@@ -5,6 +5,8 @@
|
|
|
|
#include "MILBlob/Fp16.hpp"
|
|
|
|
+// ORT_EDIT: Exclude clang specific pragmas from other builds
|
|
+#if defined(__clang__)
|
|
// fp16 lib code has some conversion warnings we don't want to globally ignore
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
|
|
@@ -12,6 +14,9 @@
|
|
#pragma clang diagnostic ignored "-Wconversion"
|
|
#include "fp16/fp16.h"
|
|
#pragma clang diagnostic pop
|
|
+#else
|
|
+#include "fp16/fp16.h"
|
|
+#endif
|
|
|
|
using namespace MILBlob;
|
|
|
|
diff --git a/modelpackage/src/ModelPackage.cpp b/modelpackage/src/ModelPackage.cpp
|
|
index 8fee56b9..99e0d8d6 100644
|
|
--- a/modelpackage/src/ModelPackage.cpp
|
|
+++ b/modelpackage/src/ModelPackage.cpp
|
|
@@ -26,7 +26,14 @@ namespace std {
|
|
#else
|
|
#error "missing required header <filesystem>"
|
|
#endif
|
|
+
|
|
+// ORT_EDIT: Use UuidCreate on Windows.
|
|
+#if defined(_WIN32)
|
|
+#pragma comment(lib, "rpcrt4.lib") // UuidCreate
|
|
+#include <windows.h>
|
|
+#else
|
|
#include <uuid/uuid.h>
|
|
+#endif
|
|
#include <vector>
|
|
|
|
#if defined(__cplusplus)
|
|
@@ -187,7 +194,10 @@ public:
|
|
ModelPackageItemInfo createFile(const std::string& name, const std::string& author, const std::string& description);
|
|
};
|
|
|
|
+// ORT_EDIT: pragma only available on APPLE platforms
|
|
+#if defined(__APPLE__)
|
|
#pragma mark ModelPackageImpl
|
|
+#endif
|
|
|
|
ModelPackageImpl::ModelPackageImpl(const std::filesystem::path& path, bool createIfNecessary, bool readOnly)
|
|
: m_packagePath(path),
|
|
@@ -372,6 +382,20 @@ std::filesystem::path ModelPackageImpl::getItemPath(const std::string& name, con
|
|
}
|
|
|
|
std::string ModelPackageImpl::generateIdentifier() const {
|
|
+// ORT_EDIT: Use built-in UUID generation on Windows
|
|
+#if defined(_WIN32)
|
|
+ UUID uuid;
|
|
+ UuidCreate(&uuid);
|
|
+
|
|
+ RPC_CSTR uuidStr;
|
|
+ UuidToStringA(&uuid, &uuidStr);
|
|
+
|
|
+ std::string uuidStrCpp(reinterpret_cast<char*>(uuidStr));
|
|
+
|
|
+ RpcStringFreeA(&uuidStr);
|
|
+
|
|
+ return uuidStrCpp;
|
|
+#else
|
|
uuid_t uuid;
|
|
|
|
// uuid_unparse generates a 36-character null-terminated string (37 bytes).
|
|
@@ -383,6 +407,7 @@ std::string ModelPackageImpl::generateIdentifier() const {
|
|
uuid_unparse(uuid, buf);
|
|
|
|
return std::string(buf);
|
|
+#endif
|
|
}
|
|
|
|
ModelPackageItemInfo ModelPackageImpl::createFile(const std::string& name, const std::string& author, const std::string& description) {
|
|
@@ -468,7 +493,13 @@ std::shared_ptr<ModelPackageItemInfo> ModelPackageImpl::findItem(const std::stri
|
|
auto author = itemInfoEntry->getString(kModelPackageItemInfoAuthorKey);
|
|
auto description = itemInfoEntry->getString(kModelPackageItemInfoDescriptionKey);
|
|
|
|
+// ORT_EDIT: need to use path.string() on Windows
|
|
+#if defined(_WIN32)
|
|
+ return std::make_shared<ModelPackageItemInfo>(std::make_shared<ModelPackageItemInfoImpl>(identifier, path.string(), name, author, description));
|
|
+
|
|
+#else
|
|
return std::make_shared<ModelPackageItemInfo>(std::make_shared<ModelPackageItemInfoImpl>(identifier, path, name, author, description));
|
|
+#endif
|
|
}
|
|
|
|
std::shared_ptr<ModelPackageItemInfo> ModelPackageImpl::findItem(const std::string& name, const std::string& author) const
|
|
@@ -514,7 +545,9 @@ void ModelPackageImpl::removeItem(const std::string& identifier)
|
|
}
|
|
|
|
auto path = m_packageDataDirPath / itemInfoEntry->getString(kModelPackageItemInfoPathKey);
|
|
- if (0 != std::remove(path.c_str())) {
|
|
+ // ORT_EDIT: std::remove doesn't work on Windows. Use std::filesystem::remove instead.
|
|
+ // if (0 != std::remove(path.c_str())) {
|
|
+ if (!std::filesystem::remove(path)) {
|
|
throw std::runtime_error("Failed to remove file at path: " + path.string());
|
|
}
|
|
|
|
@@ -525,13 +558,16 @@ bool ModelPackageImpl::isValid(const std::filesystem::path& path)
|
|
{
|
|
try {
|
|
ModelPackageImpl(path, false, true);
|
|
- } catch (std::runtime_error& e) {
|
|
+ } catch (std::runtime_error& /*e*/) { // ORT_EDIT: comment out unused variable
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
+// ORT_EDIT: pragma only available on APPLE platforms
|
|
+#if defined(__APPLE__)
|
|
#pragma mark ModelPackage
|
|
+#endif
|
|
|
|
ModelPackage::ModelPackage(const std::string& packagePath, bool createIfNecessary, bool readOnly)
|
|
: m_modelPackageImpl(std::make_shared<ModelPackageImpl>(packagePath, createIfNecessary, readOnly))
|
|
@@ -544,7 +580,12 @@ ModelPackage::~ModelPackage()
|
|
|
|
std::string ModelPackage::path() const
|
|
{
|
|
+// ORT_EDIT: Windows doesn't automatically convert to std::string as the native format could be char or wchar.
|
|
+#if defined(_WIN32)
|
|
+ return m_modelPackageImpl->path().string();
|
|
+#else
|
|
return m_modelPackageImpl->path();
|
|
+#endif
|
|
}
|
|
|
|
std::string ModelPackage::setRootModel(const std::string& path, const std::string& name, const std::string& author, const std::string& description)
|