summaryrefslogtreecommitdiffstats
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp39
1 files changed, 25 insertions, 14 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index ab1b0e489..6632f2fa3 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -3041,21 +3041,14 @@ SLANG_API void spSetDefaultModuleName(
frontEndReq->m_defaultModuleName = namePool->getName(defaultModuleName);
}
-
-SLANG_API SlangResult spAddLibraryReference(
- SlangCompileRequest* request,
- const void* libData,
- size_t libDataSize)
+namespace Slang
+{
+SlangResult _addLibraryReference(EndToEndCompileRequest* req, Stream* stream)
{
- using namespace Slang;
- auto req = Slang::asInternal(request);
-
- // We need to deserialize and add the modules
- MemoryStreamBase fileStream(FileAccess::Read, libData, libDataSize);
-
// Read all of the contained modules
List<RefPtr<IRModule>> irModules;
- if (SLANG_FAILED(IRSerialReader::readStreamModules(&fileStream, req->getSession(), req->getFrontEndReq()->getSourceManager(), irModules)))
+ List<FrontEndCompileRequest::ExtraEntryPointInfo> entryPointMangledNames;
+ if (SLANG_FAILED(IRSerialReader::readStreamModules(stream, req->getSession(), req->getFrontEndReq()->getSourceManager(), irModules, entryPointMangledNames)))
{
req->getSink()->diagnose(SourceLoc(), Diagnostics::unableToAddReferenceToModuleContainer);
return SLANG_FAIL;
@@ -3064,10 +3057,28 @@ SLANG_API SlangResult spAddLibraryReference(
// TODO(JS): May be better to have a ITypeComponent that encapsulates a collection of modules
// For now just add to the linkage
auto linkage = req->getLinkage();
- linkage->m_libModules.addRange(irModules.getBuffer(), irModules.getCount());
+ linkage->m_libModules.addRange(irModules);
+
+ req->getFrontEndReq()->m_extraEntryPoints.addRange(entryPointMangledNames);
return SLANG_OK;
}
+}
+
+
+SLANG_API SlangResult spAddLibraryReference(
+ SlangCompileRequest* request,
+ const void* libData,
+ size_t libDataSize)
+{
+ using namespace Slang;
+ auto req = Slang::asInternal(request);
+
+ // We need to deserialize and add the modules
+ MemoryStreamBase fileStream(FileAccess::Read, libData, libDataSize);
+
+ return _addLibraryReference(req, &fileStream);
+}
SLANG_API void spTranslationUnit_addPreprocessorDefine(
SlangCompileRequest* request,
@@ -3417,7 +3428,7 @@ SLANG_API void const* spGetEntryPointCode(
if(entryPointIndex < 0) return nullptr;
- if(Index(entryPointIndex) >= req->entryPoints.getCount()) return nullptr;
+ if(Index(entryPointIndex) >= program->getEntryPointCount()) return nullptr;
auto entryPoint = program->getEntryPoint(entryPointIndex);
auto targetProgram = program->getTargetProgram(targetReq);