From 749634a2a6e03acf435c39f78b933a01b90a7440 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Wed, 17 Jul 2019 10:26:37 -0400 Subject: Slang -> C++ -> SharedLibrary -> Test (#999) * WIP: Adding support for C/C++ compilation to slang API. * Removed BackEndType in test harness -> use SlangPassThrough to identify backends Only require stage for targets that require it. Detection of all different backends. * Windows/Unix create temporary filename. * WIP: Output CPU binaries. * Added a pass-through c/c++ test. * Compile C++/C and store in temporary file. * Read the binary back into memory. * Set debug info and optimization flags for C/C++. Make the CPPCompiler debug/optimization levels match slangs. * Handling of include paths and math precision. * Dumping c++/c source and exe/shared library. * Put hex dump into own util. * End to end pass through c compilation test. * WIP: Simple execute test working on Linux/Unix. * Fix typo on linux. * WIP: To compile slang to cpp shared library. Report backend compiler errors. * Compiles slang -> cpp and loads as shared library. * Fix problem on c-cross-compile test because prelude is now included with <> quotes. * Run slang generated cpp code - using hard coded data. * Added cpp-execute-simple, and test output. * Fix warning that broke win32 build. * Fix compilation problem on osx. --- source/core/slang-writer.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'source/core/slang-writer.cpp') diff --git a/source/core/slang-writer.cpp b/source/core/slang-writer.cpp index 5b643fff8..2f694aeec 100644 --- a/source/core/slang-writer.cpp +++ b/source/core/slang-writer.cpp @@ -1,3 +1,5 @@ +#define _CRT_SECURE_NO_WARNINGS + #include "slang-writer.h" #include "slang-platform.h" @@ -166,6 +168,21 @@ SlangResult FileWriter::setMode(SlangWriterMode mode) return SLANG_FAIL; } +/* static */SlangResult FileWriter::create(const char* filePath, const char* writeOptions, WriterFlags flags, ComPtr& outWriter) +{ + flags &= ~WriterFlag::IsUnowned; + + FILE* file = fopen(filePath, writeOptions); + if (!file) + { + return SLANG_E_CANNOT_OPEN; + } + + outWriter = new FileWriter(file, flags); + return SLANG_OK; +} + + /* !!!!!!!!!!!!!!!!!!!!!!!!! StringWriter !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ SLANG_NO_THROW char* SLANG_MCALL StringWriter::beginAppendBuffer(size_t maxNumChars) -- cgit v1.2.3