From 13a9ae2a88d1cef3787215b5ff5966ce60b5cedd Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Mon, 25 Nov 2019 08:34:35 -0800 Subject: Renamed Utilities folder to BuildTools --- BuildTools/File2Include/.gitignore | 1 + BuildTools/File2Include/CMakeLists.txt | 60 ++++++++++++++++++++ BuildTools/File2Include/File2String.cpp | 63 +++++++++++++++++++++ BuildTools/File2Include/bin/Linux/File2String | Bin 0 -> 12856 bytes BuildTools/File2Include/bin/MacOS/File2String | Bin 0 -> 13068 bytes .../File2Include/bin/Win32/x32/File2String.exe | Bin 0 -> 120832 bytes .../File2Include/bin/Win32/x64/File2String.exe | Bin 0 -> 143872 bytes 7 files changed, 124 insertions(+) create mode 100644 BuildTools/File2Include/.gitignore create mode 100644 BuildTools/File2Include/CMakeLists.txt create mode 100644 BuildTools/File2Include/File2String.cpp create mode 100644 BuildTools/File2Include/bin/Linux/File2String create mode 100644 BuildTools/File2Include/bin/MacOS/File2String create mode 100644 BuildTools/File2Include/bin/Win32/x32/File2String.exe create mode 100644 BuildTools/File2Include/bin/Win32/x64/File2String.exe (limited to 'BuildTools/File2Include') 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 "$<$:${MSVC_DBG_COMPILE_OPTIONS}>") + endforeach() + + foreach(REL_CONFIG ${RELEASE_CONFIGURATIONS}) + target_compile_options(File2String PRIVATE "$<$:${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 + "\"$\"" + # In release build, copy to the destination folder + # In all other configurations, do nothing by copying to the same target folder + $,${DST_DIR},$> + ) +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 +#include + +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 Binary files /dev/null and b/BuildTools/File2Include/bin/Linux/File2String differ diff --git a/BuildTools/File2Include/bin/MacOS/File2String b/BuildTools/File2Include/bin/MacOS/File2String new file mode 100644 index 00000000..93e4e168 Binary files /dev/null and b/BuildTools/File2Include/bin/MacOS/File2String 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 Binary files /dev/null and b/BuildTools/File2Include/bin/Win32/x32/File2String.exe 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 Binary files /dev/null and b/BuildTools/File2Include/bin/Win32/x64/File2String.exe differ -- cgit v1.2.3