mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-10 05:27:01 +03:00
httpd implementation - wip
This commit is contained in:
112
eclipse_make_wrapper.py
Normal file
112
eclipse_make_wrapper.py
Normal file
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Wrapper to run make and preprocess any paths in the output from MSYS Unix-style paths
|
||||
# to Windows paths, for Eclipse
|
||||
from __future__ import print_function, division
|
||||
import sys
|
||||
import subprocess
|
||||
import os.path
|
||||
import os
|
||||
import re
|
||||
import glob
|
||||
from test import test_cmd_line
|
||||
|
||||
#UNIX_PATH_RE = re.compile(r'(([a-zA-Z]{1}[:]{1}){0,1}[/\\][^\s\'\"\t\[\(]+)+')
|
||||
UNIX_PATH_RE = re.compile(r'(([a-zA-Z]{1}[:]{1}){0,1}[/\\][^\s\'\"\t\[\(]+(?![^\\/]*$)[/\\]?)')
|
||||
INCLUDE_PATH_RE = re.compile(r'-I[\s"]{0,}(.+?)["]{0,}(?=\s-\S)')
|
||||
INCLUDE_PATH_ADJ_RE = re.compile(r'^([/]opt[/]esp-idf[/]){1}(.*)')
|
||||
INCLUDE_PATH_ADJ2_RE = re.compile(r'^([/]c[/]){1}(.*)')
|
||||
|
||||
paths = {}
|
||||
names = []
|
||||
idf_path= os.environ.get('IDF_PATH').replace("/", "\\")
|
||||
cwd_path= os.environ.get('CWD')
|
||||
pwd_path= os.environ.get('PWD')
|
||||
|
||||
def check_path(path):
|
||||
try:
|
||||
return paths[path]
|
||||
except KeyError:
|
||||
pass
|
||||
paths[path] = path
|
||||
winpath =path
|
||||
if not os.path.exists(winpath):
|
||||
# cache as failed, replace with success if it works
|
||||
if re.match(INCLUDE_PATH_ADJ2_RE, path) is not None:
|
||||
winpath = INCLUDE_PATH_ADJ2_RE.sub(r'c:/\2',path) #replace /c/
|
||||
try:
|
||||
winpath = subprocess.check_output(["cygpath", "-w", winpath]).strip()
|
||||
except subprocess.CalledProcessError:
|
||||
return path # something went wrong running cygpath, assume this is not a path!
|
||||
if not os.path.exists(winpath):
|
||||
if not os.path.exists(winpath):
|
||||
winpath=idf_path + '\\' + re.sub(r'^[/\\]opt[/\\](esp-idf[/\\]){0,}', '', path, 1)
|
||||
try:
|
||||
winpath = subprocess.check_output(["cygpath", "-w", winpath]).strip()
|
||||
except subprocess.CalledProcessError:
|
||||
return path # something went wrong running cygpath, assume this is not a path!
|
||||
if not os.path.exists(winpath):
|
||||
return path # not actually a valid path
|
||||
|
||||
winpath = winpath.replace("/", "\\") # make consistent with forward-slashes used elsewhere
|
||||
paths[path] = winpath
|
||||
|
||||
|
||||
#print("In path: {0}, out path: {1}".format(path,winpath) )
|
||||
return winpath
|
||||
def fix_paths(filename):
|
||||
if re.match(r'.*[\\](.*$)',filename) is not None:
|
||||
filename = re.findall(r'.*[\\](.*$)',filename)[0].replace("\\", "/")
|
||||
|
||||
return filename.rstrip()
|
||||
|
||||
def print_paths(path_list, file_name, source_file):
|
||||
|
||||
new_path_list = list(set(path_list))
|
||||
new_path_list.sort()
|
||||
last_n = ''
|
||||
cmd_line='xtensa-esp32-elf-gcc '
|
||||
for n in new_path_list:
|
||||
if re.match(INCLUDE_PATH_ADJ_RE, n) is not None:
|
||||
n = INCLUDE_PATH_ADJ_RE.sub(idf_path+r"\2",n )
|
||||
if re.match(INCLUDE_PATH_ADJ2_RE, n) is not None:
|
||||
n = INCLUDE_PATH_ADJ2_RE.sub(r'c:/\2',n)
|
||||
if last_n != n:
|
||||
cmd_line = cmd_line + ' -I ' + n.rstrip()
|
||||
last_n = n
|
||||
if source_file:
|
||||
cmd_line = cmd_line + ' -c ' + fix_paths(source_file)
|
||||
cmd_line = cmd_line + ' -o ' + fix_paths(file_name)
|
||||
print(cmd_line)
|
||||
def extract_includes():
|
||||
|
||||
for filename in [y for x in os.walk('build') for y in glob.glob(os.path.join(x[0], '*.d'))]:
|
||||
lines = []
|
||||
source=''
|
||||
with open(filename) as file_in:
|
||||
for line in file_in:
|
||||
if re.match(r'\S*(?=/[^/]*\.[h][p]?)',line) is not None:
|
||||
lines.extend(re.findall(r'\S*(?=/[^/]*\.[h][p]?)/',line))
|
||||
if re.match(r'\S*(?=\.[cC][pP]{0,})[^\\\s]*',line) is not None:
|
||||
source = re.findall(r'\S*(?=\.[cC][pP]{0,})[^\\\s]*',line)[0]
|
||||
|
||||
print_paths(lines,filename,source )
|
||||
|
||||
def main():
|
||||
cwd_path=check_path(os.getcwd())
|
||||
os.environ['CWD']= cwd_path
|
||||
os.environ['PWD']= cwd_path
|
||||
idf_path= os.environ.get('IDF_PATH').replace("/", "\\")
|
||||
cwd_path= os.environ.get('CWD')
|
||||
pwd_path= os.environ.get('PWD')
|
||||
print('Running custom script make in {}, IDF_PATH={}, CWD={}, PWD={}'.format(cwd_path,idf_path,cwd_path,pwd_path))
|
||||
|
||||
make = subprocess.Popen(["make"] + sys.argv[1:] + ["BATCH_BUILD=1"], stdout=subprocess.PIPE)
|
||||
for line in iter(make.stdout.readline, ''):
|
||||
line = re.sub(UNIX_PATH_RE, lambda m: check_path(m.group(0)), line)
|
||||
names.extend(INCLUDE_PATH_RE.findall(line))
|
||||
print(line.rstrip())
|
||||
sys.exit(make.wait())
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user