diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2019-11-25 16:34:35 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2019-11-25 16:48:32 +0000 |
| commit | 13a9ae2a88d1cef3787215b5ff5966ce60b5cedd (patch) | |
| tree | 254c67f9742241fba9a3c75aa7b8b23b8e526ef5 /BuildTools/File2Include | |
| parent | CMake: updated Diligent-ValidateFormatting target to run every time (diff) | |
| download | DiligentCore-13a9ae2a88d1cef3787215b5ff5966ce60b5cedd.tar.gz DiligentCore-13a9ae2a88d1cef3787215b5ff5966ce60b5cedd.zip | |
Renamed Utilities folder to BuildTools
Diffstat (limited to 'BuildTools/File2Include')
| -rw-r--r-- | BuildTools/File2Include/.gitignore | 1 | ||||
| -rw-r--r-- | BuildTools/File2Include/CMakeLists.txt | 60 | ||||
| -rw-r--r-- | BuildTools/File2Include/File2String.cpp | 63 | ||||
| -rw-r--r-- | BuildTools/File2Include/bin/Linux/File2String | bin | 0 -> 12856 bytes | |||
| -rw-r--r-- | BuildTools/File2Include/bin/MacOS/File2String | bin | 0 -> 13068 bytes | |||
| -rw-r--r-- | BuildTools/File2Include/bin/Win32/x32/File2String.exe | bin | 0 -> 120832 bytes | |||
| -rw-r--r-- | BuildTools/File2Include/bin/Win32/x64/File2String.exe | bin | 0 -> 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 Binary files differnew file mode 100644 index 00000000..e6e677f6 --- /dev/null +++ b/BuildTools/File2Include/bin/Linux/File2String diff --git a/BuildTools/File2Include/bin/MacOS/File2String b/BuildTools/File2Include/bin/MacOS/File2String Binary files differnew file mode 100644 index 00000000..93e4e168 --- /dev/null +++ b/BuildTools/File2Include/bin/MacOS/File2String diff --git a/BuildTools/File2Include/bin/Win32/x32/File2String.exe b/BuildTools/File2Include/bin/Win32/x32/File2String.exe Binary files differnew file mode 100644 index 00000000..575caac6 --- /dev/null +++ b/BuildTools/File2Include/bin/Win32/x32/File2String.exe diff --git a/BuildTools/File2Include/bin/Win32/x64/File2String.exe b/BuildTools/File2Include/bin/Win32/x64/File2String.exe Binary files differnew file mode 100644 index 00000000..f24e2ffc --- /dev/null +++ b/BuildTools/File2Include/bin/Win32/x64/File2String.exe |
