summaryrefslogtreecommitdiffstats
path: root/BuildTools/File2Include
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-11-25 16:34:35 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-11-25 16:48:32 +0000
commit13a9ae2a88d1cef3787215b5ff5966ce60b5cedd (patch)
tree254c67f9742241fba9a3c75aa7b8b23b8e526ef5 /BuildTools/File2Include
parentCMake: updated Diligent-ValidateFormatting target to run every time (diff)
downloadDiligentCore-13a9ae2a88d1cef3787215b5ff5966ce60b5cedd.tar.gz
DiligentCore-13a9ae2a88d1cef3787215b5ff5966ce60b5cedd.zip
Renamed Utilities folder to BuildTools
Diffstat (limited to 'BuildTools/File2Include')
-rw-r--r--BuildTools/File2Include/.gitignore1
-rw-r--r--BuildTools/File2Include/CMakeLists.txt60
-rw-r--r--BuildTools/File2Include/File2String.cpp63
-rw-r--r--BuildTools/File2Include/bin/Linux/File2Stringbin0 -> 12856 bytes
-rw-r--r--BuildTools/File2Include/bin/MacOS/File2Stringbin0 -> 13068 bytes
-rw-r--r--BuildTools/File2Include/bin/Win32/x32/File2String.exebin0 -> 120832 bytes
-rw-r--r--BuildTools/File2Include/bin/Win32/x64/File2String.exebin0 -> 143872 bytes
7 files changed, 124 insertions, 0 deletions
diff --git a/BuildTools/File2Include/.gitignore b/BuildTools/File2Include/.gitignore
new file mode 100644
index 00000000..f5135fa6
--- /dev/null
+++ b/BuildTools/File2Include/.gitignore
@@ -0,0 +1 @@
+!bin \ No newline at end of file
diff --git a/BuildTools/File2Include/CMakeLists.txt b/BuildTools/File2Include/CMakeLists.txt
new file mode 100644
index 00000000..8bf6e8c9
--- /dev/null
+++ b/BuildTools/File2Include/CMakeLists.txt
@@ -0,0 +1,60 @@
+cmake_minimum_required (VERSION 3.6)
+
+if(PLATFORM_WIN32 OR PLATFORM_LINUX OR PLATFORM_MACOS)
+ project(File2Include)
+
+ set(SOURCE
+ File2String.cpp
+ )
+
+ add_executable(File2String ${SOURCE})
+ target_compile_features(File2String PRIVATE cxx_std_11)
+
+ if(PLATFORM_WIN32)
+ if(MSVC)
+ set(MSVC_DBG_COMPILE_OPTIONS /MTd)
+ set(MSVC_REL_COMPILE_OPTIONS /MT)
+ target_compile_options(File2String PRIVATE /wd4996)
+ foreach(DBG_CONFIG ${DEBUG_CONFIGURATIONS})
+ target_compile_options(File2String PRIVATE "$<$<CONFIG:${DBG_CONFIG}>:${MSVC_DBG_COMPILE_OPTIONS}>")
+ endforeach()
+
+ foreach(REL_CONFIG ${RELEASE_CONFIGURATIONS})
+ target_compile_options(File2String PRIVATE "$<$<CONFIG:${REL_CONFIG}>:${MSVC_REL_COMPILE_OPTIONS}>")
+ endforeach()
+ endif()
+ set(DST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/Win32/x${ARCH}/")
+ elseif(PLATFORM_LINUX)
+ set(DST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/Linux/")
+ elseif(PLATFORM_MACOS)
+ set(DST_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/MacOS/")
+ endif()
+ source_group("source" FILES ${SOURCE})
+
+ set_target_properties(File2String PROPERTIES
+ FOLDER DiligentCore/BuildTools
+ )
+
+ # When setting RUNTIME_OUTPUT_DIRECTORY_RELEASE to DST_DIR,
+ # the executable is deleted by the clean build command
+ add_custom_command(TARGET File2String POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ "\"$<TARGET_FILE:File2String>\""
+ # In release build, copy to the destination folder
+ # In all other configurations, do nothing by copying to the same target folder
+ $<IF:$<CONFIG:RELEASE>,${DST_DIR},$<TARGET_FILE_DIR:File2String>>
+ )
+endif()
+
+if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+ # Use prebuilt 32-bit version
+ set(FILE2STRING_PATH "${CMAKE_CURRENT_SOURCE_DIR}/bin/Win32/x32/File2String.exe" CACHE INTERNAL "File2String utility")
+elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
+ # Use prebuilt version
+ set(FILE2STRING_PATH "${CMAKE_CURRENT_SOURCE_DIR}/bin/Linux/File2String" CACHE INTERNAL "File2String utility")
+elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
+ # Use prebuilt version
+ set(FILE2STRING_PATH "${CMAKE_CURRENT_SOURCE_DIR}/bin/MacOS/File2String" CACHE INTERNAL "File2String utility")
+else()
+ set(FILE2STRING_PATH "" CACHE INTERNAL "File2String utility unavailable on this host system")
+endif()
diff --git a/BuildTools/File2Include/File2String.cpp b/BuildTools/File2Include/File2String.cpp
new file mode 100644
index 00000000..04463a1b
--- /dev/null
+++ b/BuildTools/File2Include/File2String.cpp
@@ -0,0 +1,63 @@
+// File2Include.cpp : Defines the entry point for the console application.
+//
+
+#include <stdio.h>
+#include <string.h>
+
+int main(int argc, char* argv[])
+{
+ if( argc < 3 )
+ {
+ printf( "Incorrect number of command line arguments. Expected arguments: src file, dst file\n");
+ return -1;
+ }
+ auto SrcFile = argv[1];
+ auto DstFile = argv[2];
+ if (strcmp(SrcFile, DstFile) == 0)
+ {
+ printf( "Source and destination files must be different\n");
+ return -1;
+ }
+
+ FILE *pSrcFile = fopen( SrcFile, "r" );
+ if( pSrcFile == nullptr )
+ {
+ printf( "Failed to open source file %s\n", SrcFile );
+ return -1;
+ }
+
+ FILE *pDstFile = fopen( DstFile, "w" );
+ if( pDstFile == nullptr )
+ {
+ printf( "Failed to open destination file %s\n", DstFile );
+ fclose(pSrcFile);
+ return -1;
+ }
+
+
+ char Buff[2048];
+ char SpecialChars[] = "\'\"\\";
+ while( !feof( pSrcFile ) )
+ {
+ auto* Line = fgets( Buff, sizeof( Buff )/sizeof(Buff[0]) , pSrcFile );
+ if( Line == nullptr )
+ break;
+ fputc( '\"', pDstFile );
+ auto* CurrChar = Line;
+ while( *CurrChar != 0 && *CurrChar != '\n' && *CurrChar != '\r' )
+ {
+ if( strchr( SpecialChars, *CurrChar) )
+ fputc( '\\', pDstFile );
+ fputc( *CurrChar, pDstFile );
+ ++CurrChar;
+ }
+ fputs( "\\n\"\n", pDstFile );
+ }
+
+ fclose(pDstFile);
+ fclose(pSrcFile);
+
+ printf( "File2String: sucessfully converted %s to %s\n", SrcFile, DstFile );
+
+ return 0;
+}
diff --git a/BuildTools/File2Include/bin/Linux/File2String b/BuildTools/File2Include/bin/Linux/File2String
new file mode 100644
index 00000000..e6e677f6
--- /dev/null
+++ b/BuildTools/File2Include/bin/Linux/File2String
Binary files differ
diff --git a/BuildTools/File2Include/bin/MacOS/File2String b/BuildTools/File2Include/bin/MacOS/File2String
new file mode 100644
index 00000000..93e4e168
--- /dev/null
+++ b/BuildTools/File2Include/bin/MacOS/File2String
Binary files differ
diff --git a/BuildTools/File2Include/bin/Win32/x32/File2String.exe b/BuildTools/File2Include/bin/Win32/x32/File2String.exe
new file mode 100644
index 00000000..575caac6
--- /dev/null
+++ b/BuildTools/File2Include/bin/Win32/x32/File2String.exe
Binary files differ
diff --git a/BuildTools/File2Include/bin/Win32/x64/File2String.exe b/BuildTools/File2Include/bin/Win32/x64/File2String.exe
new file mode 100644
index 00000000..f24e2ffc
--- /dev/null
+++ b/BuildTools/File2Include/bin/Win32/x64/File2String.exe
Binary files differ