You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
#!/usr/bin/python3
|
|
# ./generate_from_libwebp.py /path/to/clean/libwebp/src/
|
|
import glob
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
FILE_KEYS = {}
|
|
|
|
def fix_headers(libwebp_dir, code_text):
|
|
out = ''
|
|
for line in code_text:
|
|
# Special config.h
|
|
if 'src/webp/config.h' in line:
|
|
out += '#include "config.h"\n'
|
|
continue
|
|
line = line.replace('#include "src/', '#include "' + libwebp_dir + '/')
|
|
header_file = re.match('#include\s+["]([^"]+)["].*', line)
|
|
# regex to search for <, > too
|
|
#header_file = re.match('#include\s+[<"]([^>"]+)[>"].*', line)
|
|
if header_file:
|
|
header = header_file.groups()[0]
|
|
abs_header = os.path.abspath(header)
|
|
header_exists = os.path.exists(abs_header)
|
|
if header_exists and abs_header in FILE_KEYS:
|
|
out += '#include "' + FILE_KEYS[abs_header] + '"\n'
|
|
else:
|
|
out += line + '\n'
|
|
else:
|
|
out += line + '\n'
|
|
return out
|
|
|
|
if len(sys.argv) != 2:
|
|
print('usage: ./generate_from_libwebp.py /path/to/clean/libwebp/src/')
|
|
os._exit(1)
|
|
|
|
code = ['.c', '.s', '.S', '.sx', 'cc', 'cpp', 'cpp' ]
|
|
header = ['.h', '.hh', '.hpp', '.hxx' ]
|
|
|
|
# Remove old files
|
|
files = os.listdir('.')
|
|
for file in files:
|
|
if file.endswith(tuple(code)) or file.endswith(tuple(header)):
|
|
os.remove(os.path.join('.', file))
|
|
|
|
path = sys.argv[1]
|
|
|
|
for file in glob.iglob(path + '/**', recursive=True):
|
|
if file.endswith(tuple(code)) or file.endswith(tuple(header)):
|
|
key = os.path.abspath(file)
|
|
val = file.replace(path, '').replace('/', '_')
|
|
FILE_KEYS[key] = val
|
|
|
|
root_dir = os.path.abspath('.')
|
|
libwebp_dir = os.path.abspath(path)
|
|
for full_path, local in FILE_KEYS.items():
|
|
os.chdir(os.path.dirname(full_path))
|
|
with open(full_path) as code:
|
|
code_text = code.read().splitlines()
|
|
code.close()
|
|
fixed = fix_headers(libwebp_dir, code_text)
|
|
os.chdir(root_dir)
|
|
local_file = open(local, "w")
|
|
local_file.write(fixed)
|
|
local_file.close()
|
|
|
|
# Write config.h
|
|
config = '#ifndef WEBANIMATION_HPP\n#define WEBANIMATION_HPP\n'
|
|
config += '#define WEBP_USE_THREAD\n'
|
|
config += '#endif\n'
|
|
config_file = open('config.h', "w")
|
|
config_file.write(config)
|
|
config_file.close()
|