From 4337338ed2d9525b4638f32c6b91ef61b69e41cd Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Thu, 10 Dec 2020 14:04:29 -0500 Subject: Building with embedded stdlib (#1634) * #include an absolute path didn't work - because paths were taken to always be relative. * Move reflection to reflection-api. * Slight reorg to pull out potentially Slang internal functions from the reflection API impls. * Remove visual studio projects * Fix for slang-binaries copy. * Add the visual studio projects in build/visual-studio * Remove miniz project. * Differentiate the linePath from the filePath. * Improve comment in premake5.lua + to kick of CI. * Kick CI. * Use COM compile request for calls to functions inside api-less-slang. Add static-slang project. * Fix const typo issue. * Don't include 'core' link in 'api-less-slang' * Removed static-slang lib causes problems on linux with linking. Embed Slang stdlib Added StaticBlob Added dumpSourceBytes Use ConstArrayView for the archive. At startup allow loading of zip with stdlib. Made -save-stdlib -load-stdlib take a name Added '-save-stdlib-bin-source' to save out serialized stdlib as source. * Ability enable/disable stdlib embedding. * Fix problem with moduleDecl not having module pointer set when serialized in. * Set of debugdir for slang-test and examples. * Add slang-stdlib-api.cpp * Update slang filters for VS. * Try to use pic, and -mcmodel=medium * Some more efforts ot make premake work. * WIP premake5.lua from previously working version. * Remove api-less-slang project. * Disable dllexport on gcc/clang. * Embed via slangc-bootstrap. * Fix slang-profile. Always compiles without stdlib. * Use pic "On" * Remove slangc-bootstrap and embed-stdlib-generator if embedding not required. Make bootstrap run the generators. * Improve comments in premake5.lua. Kick off another CI build. * Remove generation of stdlib source from std-lib-serialize.slang --- source/slang/slang-api.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'source/slang/slang-api.cpp') diff --git a/source/slang/slang-api.cpp b/source/slang/slang-api.cpp index ea6c7820b..c8b932306 100644 --- a/source/slang/slang-api.cpp +++ b/source/slang/slang-api.cpp @@ -4,8 +4,6 @@ #include "slang-repro.h" -#include "../../slang-tag-version.h" - // implementation of C interface SLANG_API SlangSession* spCreateSession(const char*) @@ -25,7 +23,18 @@ SLANG_API SlangResult slang_createGlobalSession( { Slang::ComPtr globalSession; SLANG_RETURN_ON_FAIL(slang_createGlobalSessionWithoutStdLib(apiVersion, globalSession.writeRef())); - SLANG_RETURN_ON_FAIL(globalSession->compileStdLib()); + + // If we have the embedded stdlib, load from that, else compile it + ISlangBlob* stdLibBlob = slang_getEmbeddedStdLib(); + if (stdLibBlob) + { + SLANG_RETURN_ON_FAIL(globalSession->loadStdLib(stdLibBlob->getBufferPointer(), stdLibBlob->getBufferSize())); + } + else + { + SLANG_RETURN_ON_FAIL(globalSession->compileStdLib()); + } + *outGlobalSession = globalSession.detach(); return SLANG_OK; } @@ -64,7 +73,7 @@ SLANG_API void spDestroySession( SLANG_API const char* spGetBuildTagString() { - return SLANG_TAG_VERSION; + return Slang::getBuildTagString(); } SLANG_API void spAddBuiltins( -- cgit v1.2.3