diff options
author | Bartosz Taudul <wolf.pld@gmail.com> | 2019-12-16 01:28:19 +0300 |
---|---|---|
committer | Bartosz Taudul <wolf.pld@gmail.com> | 2019-12-16 01:28:19 +0300 |
commit | 333f8a0da0e9f2907ad92bd4d82cd4130f7b72b8 (patch) | |
tree | e7a9b347749dcca8f12783d72e029564aa06c68e /import-chrome | |
parent | 4eaa3d90dd60639c8f8172675e60512d71786db9 (diff) |
Copy update utility to import-chrome.
Diffstat (limited to 'import-chrome')
-rw-r--r-- | import-chrome/build/unix/Makefile | 12 | ||||
-rw-r--r-- | import-chrome/build/unix/build.mk | 60 | ||||
-rw-r--r-- | import-chrome/build/unix/debug.mk | 11 | ||||
-rw-r--r-- | import-chrome/build/unix/release.mk | 11 | ||||
-rw-r--r-- | import-chrome/build/win32/import-chrome.sln | 25 | ||||
-rw-r--r-- | import-chrome/build/win32/import-chrome.vcxproj | 170 | ||||
-rw-r--r-- | import-chrome/build/win32/import-chrome.vcxproj.filters | 114 | ||||
-rw-r--r-- | import-chrome/src/import-chrome.cpp | 122 |
8 files changed, 525 insertions, 0 deletions
diff --git a/import-chrome/build/unix/Makefile b/import-chrome/build/unix/Makefile new file mode 100644 index 00000000..3b50301c --- /dev/null +++ b/import-chrome/build/unix/Makefile @@ -0,0 +1,12 @@ +all: debug + +debug: + @+make -f debug.mk all + +release: + @+make -f release.mk all + +clean: + @+make -f build.mk clean + +.PHONY: all clean debug release diff --git a/import-chrome/build/unix/build.mk b/import-chrome/build/unix/build.mk new file mode 100644 index 00000000..78ec38ba --- /dev/null +++ b/import-chrome/build/unix/build.mk @@ -0,0 +1,60 @@ +CFLAGS += +CXXFLAGS := $(CFLAGS) -std=gnu++17 +DEFINES += -DTRACY_NO_STATISTICS +INCLUDES := +LIBS := -lpthread +PROJECT := import-chrome +IMAGE := $(PROJECT)-$(BUILD) + +FILTER := + +BASE := $(shell egrep 'ClCompile.*cpp"' ../win32/$(PROJECT).vcxproj | sed -e 's/.*\"\(.*\)\".*/\1/' | sed -e 's@\\@/@g') +BASE2 := $(shell egrep 'ClCompile.*c"' ../win32/$(PROJECT).vcxproj | sed -e 's/.*\"\(.*\)\".*/\1/' | sed -e 's@\\@/@g') + +SRC := $(filter-out $(FILTER),$(BASE)) +SRC2 := $(filter-out $(FILTER),$(BASE2)) + +TBB := $(shell ld -ltbb -o /dev/null 2>/dev/null; echo $$?) +ifeq ($(TBB),0) + LIBS += -ltbb +endif + +OBJDIRBASE := obj/$(BUILD) +OBJDIR := $(OBJDIRBASE)/o/o/o + +OBJ := $(addprefix $(OBJDIR)/,$(SRC:%.cpp=%.o)) +OBJ2 := $(addprefix $(OBJDIR)/,$(SRC2:%.c=%.o)) + +all: $(IMAGE) + +$(OBJDIR)/%.o: %.cpp + $(CXX) -c $(INCLUDES) $(CXXFLAGS) $(DEFINES) $< -o $@ + +$(OBJDIR)/%.d : %.cpp + @echo Resolving dependencies of $< + @mkdir -p $(@D) + @$(CXX) -MM $(INCLUDES) $(CXXFLAGS) $(DEFINES) $< > $@.$$$$; \ + sed 's,.*\.o[ :]*,$(OBJDIR)/$(<:.cpp=.o) $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ + +$(OBJDIR)/%.o: %.c + $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ + +$(OBJDIR)/%.d : %.c + @echo Resolving dependencies of $< + @mkdir -p $(@D) + @$(CC) -MM $(INCLUDES) $(CFLAGS) $(DEFINES) $< > $@.$$$$; \ + sed 's,.*\.o[ :]*,$(OBJDIR)/$(<:.c=.o) $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ + +$(IMAGE): $(OBJ) $(OBJ2) + $(CXX) $(CXXFLAGS) $(DEFINES) $(OBJ) $(OBJ2) $(LIBS) -o $@ + +ifneq "$(MAKECMDGOALS)" "clean" +-include $(addprefix $(OBJDIR)/,$(SRC:.cpp=.d)) %(addprefix $(OBJDIR)/,$(SRC2:.c=.d)) +endif + +clean: + rm -rf $(OBJDIRBASE) $(IMAGE)* + +.PHONY: clean all diff --git a/import-chrome/build/unix/debug.mk b/import-chrome/build/unix/debug.mk new file mode 100644 index 00000000..04d925a6 --- /dev/null +++ b/import-chrome/build/unix/debug.mk @@ -0,0 +1,11 @@ +ARCH := $(shell uname -m) + +CFLAGS := -g3 -Wall +DEFINES := -DDEBUG +BUILD := debug + +ifeq ($(ARCH),x86_64) +CFLAGS += -msse4.1 +endif + +include build.mk diff --git a/import-chrome/build/unix/release.mk b/import-chrome/build/unix/release.mk new file mode 100644 index 00000000..030063e3 --- /dev/null +++ b/import-chrome/build/unix/release.mk @@ -0,0 +1,11 @@ +ARCH := $(shell uname -m) + +CFLAGS := -O3 -s -fomit-frame-pointer +DEFINES := -DNDEBUG +BUILD := release + +ifeq ($(ARCH),x86_64) +CFLAGS += -msse4.1 +endif + +include build.mk diff --git a/import-chrome/build/win32/import-chrome.sln b/import-chrome/build/win32/import-chrome.sln new file mode 100644 index 00000000..2971a376 --- /dev/null +++ b/import-chrome/build/win32/import-chrome.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2002 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "import-chrome", "import-chrome.vcxproj", "{447D58BF-94CD-4469-BB90-549C05D03E00}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {447D58BF-94CD-4469-BB90-549C05D03E00}.Debug|x64.ActiveCfg = Debug|x64 + {447D58BF-94CD-4469-BB90-549C05D03E00}.Debug|x64.Build.0 = Debug|x64 + {447D58BF-94CD-4469-BB90-549C05D03E00}.Release|x64.ActiveCfg = Release|x64 + {447D58BF-94CD-4469-BB90-549C05D03E00}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3E51386C-43EA-44AC-9F24-AFAFE4D63ADE} + EndGlobalSection +EndGlobal diff --git a/import-chrome/build/win32/import-chrome.vcxproj b/import-chrome/build/win32/import-chrome.vcxproj new file mode 100644 index 00000000..afac50cb --- /dev/null +++ b/import-chrome/build/win32/import-chrome.vcxproj @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <VCProjectVersion>15.0</VCProjectVersion> + <ProjectGuid>{447D58BF-94CD-4469-BB90-549C05D03E00}</ProjectGuid> + <RootNamespace>import-chrome</RootNamespace> + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v142</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <PreprocessorDefinitions>TRACY_NO_STATISTICS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;_USE_MATH_DEFINES;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> + <LanguageStandard>stdcpplatest</LanguageStandard> + </ClCompile> + <Link> + <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <SubSystem>Console</SubSystem> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <ConformanceMode>true</ConformanceMode> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <PreprocessorDefinitions>TRACY_NO_STATISTICS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;_USE_MATH_DEFINES;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> + <LanguageStandard>stdcpplatest</LanguageStandard> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalDependencies>ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <SubSystem>Console</SubSystem> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\..\common\TracySocket.cpp" /> + <ClCompile Include="..\..\..\common\TracySystem.cpp" /> + <ClCompile Include="..\..\..\common\tracy_lz4.cpp" /> + <ClCompile Include="..\..\..\common\tracy_lz4hc.cpp" /> + <ClCompile Include="..\..\..\server\TracyMemory.cpp" /> + <ClCompile Include="..\..\..\server\TracyTaskDispatch.cpp" /> + <ClCompile Include="..\..\..\server\TracyThreadCompress.cpp" /> + <ClCompile Include="..\..\..\server\TracyWorker.cpp" /> + <ClCompile Include="..\..\src\import-chrome.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\..\common\TracyAlign.hpp" /> + <ClInclude Include="..\..\..\common\TracyAlloc.hpp" /> + <ClInclude Include="..\..\..\common\TracyColor.hpp" /> + <ClInclude Include="..\..\..\common\TracyForceInline.hpp" /> + <ClInclude Include="..\..\..\common\TracyProtocol.hpp" /> + <ClInclude Include="..\..\..\common\TracyQueue.hpp" /> + <ClInclude Include="..\..\..\common\TracySocket.hpp" /> + <ClInclude Include="..\..\..\common\TracySystem.hpp" /> + <ClInclude Include="..\..\..\common\tracy_benaphore.h" /> + <ClInclude Include="..\..\..\common\tracy_lz4.hpp" /> + <ClInclude Include="..\..\..\common\tracy_lz4hc.hpp" /> + <ClInclude Include="..\..\..\common\tracy_sema.h" /> + <ClInclude Include="..\..\..\server\TracyCharUtil.hpp" /> + <ClInclude Include="..\..\..\server\TracyEvent.hpp" /> + <ClInclude Include="..\..\..\server\TracyFileWrite.hpp" /> + <ClInclude Include="..\..\..\server\TracyMemory.hpp" /> + <ClInclude Include="..\..\..\server\TracyPopcnt.hpp" /> + <ClInclude Include="..\..\..\server\TracySlab.hpp" /> + <ClInclude Include="..\..\..\server\TracyTaskDispatch.hpp" /> + <ClInclude Include="..\..\..\server\TracyThreadCompress.hpp" /> + <ClInclude Include="..\..\..\server\TracyVector.hpp" /> + <ClInclude Include="..\..\..\server\TracyWorker.hpp" /> + <ClInclude Include="..\..\..\server\tracy_flat_hash_map.hpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> diff --git a/import-chrome/build/win32/import-chrome.vcxproj.filters b/import-chrome/build/win32/import-chrome.vcxproj.filters new file mode 100644 index 00000000..13967783 --- /dev/null +++ b/import-chrome/build/win32/import-chrome.vcxproj.filters @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="src"> + <UniqueIdentifier>{729c80ee-4d26-4a5e-8f1f-6c075783eb56}</UniqueIdentifier> + </Filter> + <Filter Include="server"> + <UniqueIdentifier>{cf23ef7b-7694-4154-830b-00cf053350ea}</UniqueIdentifier> + </Filter> + <Filter Include="common"> + <UniqueIdentifier>{e39d3623-47cd-4752-8da9-3ea324f964c1}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\..\common\tracy_lz4.cpp"> + <Filter>common</Filter> + </ClCompile> + <ClCompile Include="..\..\..\common\TracySocket.cpp"> + <Filter>common</Filter> + </ClCompile> + <ClCompile Include="..\..\..\common\TracySystem.cpp"> + <Filter>common</Filter> + </ClCompile> + <ClCompile Include="..\..\..\server\TracyMemory.cpp"> + <Filter>server</Filter> + </ClCompile> + <ClCompile Include="..\..\..\server\TracyWorker.cpp"> + <Filter>server</Filter> + </ClCompile> + <ClCompile Include="..\..\src\import-chrome.cpp"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\..\..\common\tracy_lz4hc.cpp"> + <Filter>common</Filter> + </ClCompile> + <ClCompile Include="..\..\..\server\TracyThreadCompress.cpp"> + <Filter>server</Filter> + </ClCompile> + <ClCompile Include="..\..\..\server\TracyTaskDispatch.cpp"> + <Filter>server</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\..\common\tracy_lz4.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracyAlloc.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracyColor.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracyForceInline.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracyProtocol.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracyQueue.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracySocket.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracySystem.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\tracy_flat_hash_map.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyCharUtil.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyEvent.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyFileWrite.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyMemory.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyPopcnt.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracySlab.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyVector.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyWorker.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\TracyAlign.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\tracy_benaphore.h"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\tracy_sema.h"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\common\tracy_lz4hc.hpp"> + <Filter>common</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyThreadCompress.hpp"> + <Filter>server</Filter> + </ClInclude> + <ClInclude Include="..\..\..\server\TracyTaskDispatch.hpp"> + <Filter>server</Filter> + </ClInclude> + </ItemGroup> +</Project> diff --git a/import-chrome/src/import-chrome.cpp b/import-chrome/src/import-chrome.cpp new file mode 100644 index 00000000..87ffe6bd --- /dev/null +++ b/import-chrome/src/import-chrome.cpp @@ -0,0 +1,122 @@ +#ifdef _WIN32 +# include <windows.h> +#endif + +#include <chrono> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> + +#include "../../server/TracyFileRead.hpp" +#include "../../server/TracyFileWrite.hpp" +#include "../../server/TracyVersion.hpp" +#include "../../server/TracyWorker.hpp" + +#ifdef __CYGWIN__ +# define ftello64(x) ftello(x) +#elif defined _WIN32 +# define ftello64(x) _ftelli64(x) +#endif + +void Usage() +{ + printf( "Usage: update [--hc|--extreme] input.tracy output.tracy\n\n" ); + printf( " --hc: enable LZ4HC compression\n" ); + printf( " --extreme: enable extreme LZ4HC compression (very slow)\n" ); + exit( 1 ); +} + +int main( int argc, char** argv ) +{ +#ifdef _WIN32 + if( !AttachConsole( ATTACH_PARENT_PROCESS ) ) + { + AllocConsole(); + SetConsoleMode( GetStdHandle( STD_OUTPUT_HANDLE ), 0x07 ); + } +#endif + + tracy::FileWrite::Compression clev = tracy::FileWrite::Compression::Fast; + + if( argc != 3 && argc != 4 ) Usage(); + if( argc == 4 ) + { + if( strcmp( argv[1], "--hc" ) == 0 ) + { + clev = tracy::FileWrite::Compression::Slow; + } + else if( strcmp( argv[1], "--extreme" ) == 0 ) + { + clev = tracy::FileWrite::Compression::Extreme; + } + else + { + Usage(); + } + argv++; + } + + const char* input = argv[1]; + const char* output = argv[2]; + + printf( "Loading...\r" ); + fflush( stdout ); + auto f = std::unique_ptr<tracy::FileRead>( tracy::FileRead::Open( input ) ); + if( !f ) + { + fprintf( stderr, "Cannot open input file!\n" ); + exit( 1 ); + } + + try + { + int inVer; + { + tracy::Worker worker( *f, tracy::EventType::All, false ); + +#ifndef TRACY_NO_STATISTICS + while( !worker.AreSourceLocationZonesReady() ) std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) ); +#endif + + auto w = std::unique_ptr<tracy::FileWrite>( tracy::FileWrite::Open( output, clev ) ); + if( !w ) + { + fprintf( stderr, "Cannot open output file!\n" ); + exit( 1 ); + } + printf( "Saving... \r" ); + fflush( stdout ); + worker.Write( *w ); + inVer = worker.GetTraceVersion(); + } + + FILE* in = fopen( input, "rb" ); + fseek( in, 0, SEEK_END ); + const auto inSize = ftello64( in ); + fclose( in ); + + FILE* out = fopen( output, "rb" ); + fseek( out, 0, SEEK_END ); + const auto outSize = ftello64( out ); + fclose( out ); + + printf( "%s (%i.%i.%i) {%zu KB} -> %s (%i.%i.%i) {%zu KB} %.2f%% size change\n", input, inVer >> 16, ( inVer >> 8 ) & 0xFF, inVer & 0xFF, size_t( inSize / 1024 ), output, tracy::Version::Major, tracy::Version::Minor, tracy::Version::Patch, size_t( outSize / 1024 ), float( outSize ) / inSize * 100 ); + } + catch( const tracy::UnsupportedVersion& e ) + { + fprintf( stderr, "The file you are trying to open is from the future version.\n" ); + exit( 1 ); + } + catch( const tracy::NotTracyDump& e ) + { + fprintf( stderr, "The file you are trying to open is not a tracy dump.\n" ); + exit( 1 ); + } + catch( const tracy::LegacyVersion& e ) + { + fprintf( stderr, "The file you are trying to open is from a legacy version.\n" ); + exit( 1 ); + } + + return 0; +} |