mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-01-17 14:28:30 +01:00
2d03fb4b56
I got the escaping wrong so on windows, where the path to the script has characters that need to be escaped, the script wouldn't be found, leaving all dependents stale, triggering rebuilds of all resources.
46 lines
995 B
Python
46 lines
995 B
Python
import os
|
|
import sys
|
|
|
|
(
|
|
script,
|
|
output_cpp_path,
|
|
output_h_path,
|
|
output_dep_path,
|
|
input_path,
|
|
symbol_name,
|
|
) = sys.argv
|
|
|
|
script_path = os.path.realpath(__file__)
|
|
|
|
with open(input_path, 'rb') as input_f:
|
|
data = input_f.read()
|
|
data_size = len(data)
|
|
bytes_str = ', '.join([ str(ch) for ch in data ])
|
|
|
|
with open(output_cpp_path, 'w') as output_cpp_f:
|
|
output_cpp_f.write(f'''
|
|
#include "{output_h_path}"
|
|
const unsigned char {symbol_name}[] = {{ {bytes_str} }};
|
|
const unsigned int {symbol_name}_size = {data_size};
|
|
''')
|
|
|
|
with open(output_h_path, 'w') as output_h_f:
|
|
output_h_f.write(f'''
|
|
#pragma once
|
|
extern const unsigned char {symbol_name}[];
|
|
extern const unsigned int {symbol_name}_size;
|
|
''')
|
|
|
|
def dep_escape(s):
|
|
t = ''
|
|
for c in s:
|
|
if c in [ ' ', '\\', ':', '$' ]:
|
|
t += '\\'
|
|
t += c
|
|
return t
|
|
|
|
with open(output_dep_path, 'w') as output_dep_f:
|
|
output_dep_f.write(f'''
|
|
{dep_escape(output_cpp_path)} {dep_escape(output_h_path)}: {dep_escape(input_path)} {dep_escape(script_path)}
|
|
''')
|