mirror of
				https://github.com/hedge-dev/XenonRecomp.git
				synced 2025-10-30 07:11:38 +00:00 
			
		
		
		
	Remove bin2c, load the PPC context header by path.
This commit is contained in:
		
							parent
							
								
									ca39a3b992
								
							
						
					
					
						commit
						2cd41adf42
					
				
					 8 changed files with 19 additions and 100 deletions
				
			
		|  | @ -13,8 +13,6 @@ endif() | ||||||
| 
 | 
 | ||||||
| set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") | set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") | ||||||
| 
 | 
 | ||||||
| include("cmake/bin2h.cmake") |  | ||||||
| 
 |  | ||||||
| add_subdirectory(${THIRDPARTY_ROOT}) | add_subdirectory(${THIRDPARTY_ROOT}) | ||||||
| set(POWERANALYSE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/PowerAnalyse) | set(POWERANALYSE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/PowerAnalyse) | ||||||
| set(POWERUTILS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/PowerUtils) | set(POWERUTILS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/PowerUtils) | ||||||
|  |  | ||||||
|  | @ -2,12 +2,6 @@ cmake_minimum_required (VERSION 3.8) | ||||||
| 
 | 
 | ||||||
| project("PowerRecomp") | project("PowerRecomp") | ||||||
| 
 | 
 | ||||||
| BIN2H(SOURCE_FILE  |  | ||||||
|     ${POWERUTILS_ROOT}/ppc_context.h  |  | ||||||
|     HEADER_FILE "generated/ppc_context.gen.h"  |  | ||||||
|     ARRAY_TYPE "char" |  | ||||||
|     VARIABLE_NAME "g_PPCContextText") |  | ||||||
| 
 |  | ||||||
| add_executable(PowerRecomp  | add_executable(PowerRecomp  | ||||||
|     "main.cpp"  |     "main.cpp"  | ||||||
|     "recompiler.cpp" |     "recompiler.cpp" | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								PowerRecomp/generated/.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								PowerRecomp/generated/.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -1,3 +0,0 @@ | ||||||
| * |  | ||||||
| 
 |  | ||||||
| !.gitignore |  | ||||||
|  | @ -23,7 +23,15 @@ int main(int argc, char* argv[]) | ||||||
|             entry->name = "_xstart"; |             entry->name = "_xstart"; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         recompiler.Recompile(); |         const char* headerFilePath = | ||||||
|  | #ifdef HEADER_FILE_PATH | ||||||
|  |             HEADER_FILE_PATH | ||||||
|  | #else | ||||||
|  |             argv[2] | ||||||
|  | #endif | ||||||
|  |             ; | ||||||
|  | 
 | ||||||
|  |         recompiler.Recompile(headerFilePath); | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -17,4 +17,3 @@ | ||||||
| #include <xxhash.h> | #include <xxhash.h> | ||||||
| #include <fmt/core.h> | #include <fmt/core.h> | ||||||
| #include <xmmintrin.h> | #include <xmmintrin.h> | ||||||
| #include "generated/ppc_context.gen.h" |  | ||||||
|  |  | ||||||
|  | @ -2361,7 +2361,7 @@ bool Recompiler::Recompile(const Function& fn) | ||||||
|     return allRecompiled; |     return allRecompiled; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Recompiler::Recompile() | void Recompiler::Recompile(const std::filesystem::path& headerFilePath) | ||||||
| { | { | ||||||
|     out.reserve(10 * 1024 * 1024); |     out.reserve(10 * 1024 * 1024); | ||||||
| 
 | 
 | ||||||
|  | @ -2403,7 +2403,14 @@ void Recompiler::Recompile() | ||||||
|         println("#pragma once"); |         println("#pragma once"); | ||||||
| 
 | 
 | ||||||
|         println("#include \"ppc_config.h\"\n"); |         println("#include \"ppc_config.h\"\n"); | ||||||
|         println("{}", std::string_view{g_PPCContextText, g_PPCContextText_size}); |          | ||||||
|  |         std::ifstream stream(headerFilePath); | ||||||
|  |         if (stream.good()) | ||||||
|  |         { | ||||||
|  |             std::stringstream ss; | ||||||
|  |             ss << stream.rdbuf(); | ||||||
|  |             out += ss.str(); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         SaveCurrentOutData("ppc_context.h"); |         SaveCurrentOutData("ppc_context.h"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ struct Recompiler | ||||||
| 
 | 
 | ||||||
|     bool Recompile(const Function& fn); |     bool Recompile(const Function& fn); | ||||||
| 
 | 
 | ||||||
|     void Recompile(); |     void Recompile(const std::filesystem::path& headerFilePath); | ||||||
| 
 | 
 | ||||||
|     void SaveCurrentOutData(const std::string_view& name = std::string_view()); |     void SaveCurrentOutData(const std::string_view& name = std::string_view()); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -1,84 +0,0 @@ | ||||||
| # https://github.com/sivachandran/cmake-bin2h |  | ||||||
| include(CMakeParseArguments) |  | ||||||
| 
 |  | ||||||
| # Function to wrap a given string into multiple lines at the given column position. |  | ||||||
| # Parameters: |  | ||||||
| #   VARIABLE    - The name of the CMake variable holding the string. |  | ||||||
| #   AT_COLUMN   - The column position at which string will be wrapped. |  | ||||||
| function(WRAP_STRING) |  | ||||||
|     set(oneValueArgs VARIABLE AT_COLUMN) |  | ||||||
|     cmake_parse_arguments(WRAP_STRING "${options}" "${oneValueArgs}" "" ${ARGN}) |  | ||||||
| 
 |  | ||||||
|     string(LENGTH ${${WRAP_STRING_VARIABLE}} stringLength) |  | ||||||
|     math(EXPR offset "0") |  | ||||||
| 
 |  | ||||||
|     while(stringLength GREATER 0) |  | ||||||
| 
 |  | ||||||
|         if(stringLength GREATER ${WRAP_STRING_AT_COLUMN}) |  | ||||||
|             math(EXPR length "${WRAP_STRING_AT_COLUMN}") |  | ||||||
|         else() |  | ||||||
|             math(EXPR length "${stringLength}") |  | ||||||
|         endif() |  | ||||||
| 
 |  | ||||||
|         string(SUBSTRING ${${WRAP_STRING_VARIABLE}} ${offset} ${length} line) |  | ||||||
|         set(lines "${lines}\n${line}") |  | ||||||
| 
 |  | ||||||
|         math(EXPR stringLength "${stringLength} - ${length}") |  | ||||||
|         math(EXPR offset "${offset} + ${length}") |  | ||||||
|     endwhile() |  | ||||||
| 
 |  | ||||||
|     set(${WRAP_STRING_VARIABLE} "${lines}" PARENT_SCOPE) |  | ||||||
| endfunction() |  | ||||||
| 
 |  | ||||||
| # Function to embed contents of a file as byte array in C/C++ header file(.h). The header file |  | ||||||
| # will contain a byte array and integer variable holding the size of the array. |  | ||||||
| # Parameters |  | ||||||
| #   SOURCE_FILE     - The path of source file whose contents will be embedded in the header file. |  | ||||||
| #   VARIABLE_NAME   - The name of the variable for the byte array. The string "_SIZE" will be append |  | ||||||
| #                     to this name and will be used a variable name for size variable. |  | ||||||
| #   HEADER_FILE     - The path of header file. |  | ||||||
| #   ARRAY_TYPE      - The type of each element of the array in the header file. |  | ||||||
| #   APPEND          - If specified appends to the header file instead of overwriting it |  | ||||||
| #   NULL_TERMINATE  - If specified a null byte(zero) will be append to the byte array. This will be |  | ||||||
| #                     useful if the source file is a text file and we want to use the file contents |  | ||||||
| #                     as string. But the size variable holds size of the byte array without this |  | ||||||
| #                     null byte. |  | ||||||
| # Usage: |  | ||||||
| #   bin2h(SOURCE_FILE "Logo.png" HEADER_FILE "Logo.h" ARRAY_TYPE "char" VARIABLE_NAME "LOGO_PNG") |  | ||||||
| function(BIN2H) |  | ||||||
|     set(options APPEND NULL_TERMINATE) |  | ||||||
|     set(oneValueArgs SOURCE_FILE VARIABLE_NAME HEADER_FILE ARRAY_TYPE) |  | ||||||
|     cmake_parse_arguments(BIN2H "${options}" "${oneValueArgs}" "" ${ARGN}) |  | ||||||
| 
 |  | ||||||
|     # reads source file contents as hex string |  | ||||||
|     file(READ ${BIN2H_SOURCE_FILE} hexString HEX) |  | ||||||
|     string(LENGTH ${hexString} hexStringLength) |  | ||||||
| 
 |  | ||||||
|     # appends null byte if asked |  | ||||||
|     if(BIN2H_NULL_TERMINATE) |  | ||||||
|         set(hexString "${hexString}00") |  | ||||||
|     endif() |  | ||||||
| 
 |  | ||||||
|     # wraps the hex string into multiple lines at column 32(i.e. 16 bytes per line) |  | ||||||
|     wrap_string(VARIABLE hexString AT_COLUMN 32) |  | ||||||
|     math(EXPR arraySize "${hexStringLength} / 2") |  | ||||||
| 
 |  | ||||||
|     # adds '0x' prefix and comma suffix before and after every byte respectively |  | ||||||
|     string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1, " arrayValues ${hexString}) |  | ||||||
|     # removes trailing comma |  | ||||||
|     string(REGEX REPLACE ", $" "" arrayValues ${arrayValues}) |  | ||||||
| 
 |  | ||||||
|     # converts the variable name into proper C identifier |  | ||||||
|     string(MAKE_C_IDENTIFIER "${BIN2H_VARIABLE_NAME}" BIN2H_VARIABLE_NAME) |  | ||||||
| 
 |  | ||||||
|     # declares byte array and the length variables |  | ||||||
|     set(arrayDefinition "const ${BIN2H_ARRAY_TYPE} ${BIN2H_VARIABLE_NAME}[] = { ${arrayValues} };") |  | ||||||
|     set(arraySizeDefinition "const size_t ${BIN2H_VARIABLE_NAME}_size = ${arraySize};") |  | ||||||
| 
 |  | ||||||
|     set(declarations "${arrayDefinition}\n\n${arraySizeDefinition}\n\n") |  | ||||||
|     if(BIN2H_APPEND) |  | ||||||
|         file(APPEND ${BIN2H_HEADER_FILE} "${declarations}") |  | ||||||
|     else() |  | ||||||
|         file(WRITE ${BIN2H_HEADER_FILE} "${declarations}") |  | ||||||
|     endif() |  | ||||||
| endfunction() |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Skyth
						Skyth