Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions system/lib/update_common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import os
import sys
import shutil

script_dir = os.path.abspath(os.path.dirname(__file__))
emscripten_root = os.path.dirname(os.path.dirname(script_dir))
default_llvm_dir = os.path.join(os.path.dirname(emscripten_root), 'llvm-project')


def get_llvm_dir():
if len(sys.argv) > 1:
llvm_dir = os.path.abspath(sys.argv[1])
else:
llvm_dir = default_llvm_dir
if not os.path.isdir(llvm_dir):
print(f'LLVM directory not found: {llvm_dir}', file=sys.stderr)
print(f'Usage: {sys.argv[0]} [llvm_dir]', file=sys.stderr)
sys.exit(1)
return llvm_dir


def clean_dir(dirname, preserve_files=()):
Comment thread
sbc100 marked this conversation as resolved.
if not os.path.exists(dirname):
return
for f in os.listdir(dirname):
if f in preserve_files or 'emscripten' in f:
continue
full = os.path.join(dirname, f)
if os.path.isdir(full):
shutil.rmtree(full)
else:
os.remove(full)


def copy_tree(upstream_dir, local_dir, excludes=()):
if not os.path.exists(local_dir):
os.makedirs(local_dir)
for f in os.listdir(upstream_dir):
full = os.path.join(upstream_dir, f)
if os.path.isdir(full):
shutil.copytree(full, os.path.join(local_dir, f))
elif f not in excludes:
shutil.copy2(full, os.path.join(local_dir, f))
if excludes:
for root, dirs, files in os.walk(local_dir):
for f in files:
if f in excludes:
full = os.path.join(root, f)
os.remove(full)
27 changes: 4 additions & 23 deletions system/lib/update_compiler_rt.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@
import sys
import shutil

script_dir = os.path.abspath(os.path.dirname(__file__))
emscripten_root = os.path.dirname(os.path.dirname(script_dir))
default_llvm_dir = os.path.join(os.path.dirname(emscripten_root), 'llvm-project')
from update_common import *

local_src = os.path.join(script_dir, 'compiler-rt')

copy_dirs = [
Expand All @@ -30,26 +29,8 @@
preserve_files = ('readme.txt',)


def clear(dirname):
for f in os.listdir(dirname):
if f in preserve_files or 'emscripten' in f:
continue
full = os.path.join(dirname, f)
if os.path.isdir(full):
shutil.rmtree(full)
else:
os.remove(full)


def main():
if len(sys.argv) > 1:
llvm_dir = os.path.join(os.path.abspath(sys.argv[1]))
else:
llvm_dir = default_llvm_dir
if not os.path.isdir(llvm_dir):
print(f'LLVM directory not found: {llvm_dir}', file=sys.stderr)
print(f'Usage: {sys.argv[0]} [llvm_dir]', file=sys.stderr)
sys.exit(1)
llvm_dir = get_llvm_dir()
upstream_dir = os.path.join(llvm_dir, 'compiler-rt')
assert os.path.exists(upstream_dir)
upstream_src = os.path.join(upstream_dir, 'lib', 'builtins')
Expand All @@ -61,7 +42,7 @@ def main():
srcdir = os.path.join(upstream_dir, *dirname)
assert os.path.exists(srcdir)
dest = os.path.join(local_src, *dirname)
clear(dest)
clean_dir(dest, preserve_files)
for name in os.listdir(srcdir):
if name in ('.clang-format', 'CMakeLists.txt', 'README.txt', 'weak_symbols.txt'):
continue
Expand Down
60 changes: 12 additions & 48 deletions system/lib/update_libcxx.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
import shutil
import subprocess

script_dir = os.path.abspath(os.path.dirname(__file__))
emscripten_root = os.path.dirname(os.path.dirname(script_dir))
default_llvm_dir = os.path.join(os.path.dirname(emscripten_root), 'llvm-project')
from update_common import *

local_root = os.path.join(script_dir, 'libcxx')
local_src = os.path.join(local_root, 'src')
local_inc = os.path.join(local_root, 'include')
Expand All @@ -30,34 +29,6 @@
'config',
]

def clean_dir(dirname):
if not os.path.exists(dirname):
return
for f in os.listdir(dirname):
if f in preserve_files or 'emscripten' in f:
continue
full = os.path.join(dirname, f)
if os.path.isdir(full):
shutil.rmtree(full)
else:
os.remove(full)


def copy_tree(upstream_dir, local_dir):
if not os.path.exists(local_dir):
os.makedirs(local_dir)
for f in os.listdir(upstream_dir):
full = os.path.join(upstream_dir, f)
if os.path.isdir(full):
shutil.copytree(full, os.path.join(local_dir, f))
elif f not in excludes:
shutil.copy2(full, os.path.join(local_dir, f))
for root, dirs, files in os.walk(local_dir):
for f in files:
if f in excludes:
full = os.path.join(root, f)
os.remove(full)


def generate_modules(cmake_version: str):
dst = os.path.join(local_modules, 'prebuilt')
Expand All @@ -68,7 +39,7 @@ def generate_modules(cmake_version: str):
binary_dir = f'{build_dir}/out'
dist = f'{binary_dir}/dist/'

clean_dir(build_dir)
clean_dir(build_dir, preserve_files)
os.makedirs(build_dir, exist_ok=True)
with open(f'{build_dir}/CMakeLists.txt', 'x', encoding='utf-8') as CMakeLists:
CMakeLists.write(f'''\
Expand Down Expand Up @@ -101,14 +72,7 @@ def main():

cmake_version = re.search(r'^cmake version (\d+(?:\.\d+)*)', output).group(1)

if len(sys.argv) > 1:
llvm_dir = os.path.abspath(sys.argv[1])
else:
llvm_dir = default_llvm_dir
if not os.path.isdir(llvm_dir):
print(f'LLVM directory not found: {llvm_dir}', file=sys.stderr)
print(f'Usage: {sys.argv[0]} [llvm_dir]', file=sys.stderr)
sys.exit(1)
llvm_dir = get_llvm_dir()
libcxx_dir = os.path.join(llvm_dir, 'libcxx')
upstream_src = os.path.join(libcxx_dir, 'src')
upstream_inc = os.path.join(libcxx_dir, 'include')
Expand All @@ -118,13 +82,13 @@ def main():
assert os.path.exists(upstream_modules)

# Remove old version
clean_dir(local_src)
clean_dir(local_inc)
clean_dir(local_modules)
clean_dir(local_src, preserve_files)
clean_dir(local_inc, preserve_files)
clean_dir(local_modules, preserve_files)

copy_tree(upstream_src, local_src)
copy_tree(upstream_inc, local_inc)
copy_tree(upstream_modules, local_modules)
copy_tree(upstream_src, local_src, excludes)
copy_tree(upstream_inc, local_inc, excludes)
copy_tree(upstream_modules, local_modules, excludes)
generate_modules(cmake_version)

shutil.copy2(os.path.join(libcxx_dir, 'CREDITS.TXT'), local_root)
Expand All @@ -140,12 +104,12 @@ def main():

for dirname in libc_copy_dirs:
local_dir = os.path.join(libc_local_dir, dirname)
clean_dir(local_dir)
clean_dir(local_dir, preserve_files)

for dirname in libc_copy_dirs:
upstream_dir = os.path.join(libc_upstream_dir, dirname)
local_dir = os.path.join(libc_local_dir, dirname)
copy_tree(upstream_dir, local_dir)
copy_tree(upstream_dir, local_dir, excludes)

shutil.copy2(os.path.join(libc_upstream_dir, 'LICENSE.TXT'), libc_local_dir)

Expand Down
42 changes: 7 additions & 35 deletions system/lib/update_libcxxabi.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
import sys
import shutil

script_dir = os.path.abspath(os.path.dirname(__file__))
emscripten_root = os.path.dirname(os.path.dirname(script_dir))
default_llvm_dir = os.path.join(os.path.dirname(emscripten_root), 'llvm-project')
from update_common import *

local_root = os.path.join(script_dir, 'libcxxabi')
local_src = os.path.join(local_root, 'src')
local_inc = os.path.join(local_root, 'include')
Expand All @@ -19,47 +18,20 @@
preserve_files = ('cxa_exception_js_utils.cpp', '__cpp_exception.S')


def clean_dir(dirname):
for f in os.listdir(dirname):
if f in preserve_files or 'emscripten' in f:
continue
full = os.path.join(dirname, f)
if os.path.isdir(full):
shutil.rmtree(full)
else:
os.remove(full)


def copy_tree(upstream_dir, local_dir):
for f in os.listdir(upstream_dir):
full = os.path.join(upstream_dir, f)
if os.path.isdir(full):
shutil.copytree(full, os.path.join(local_dir, f))
elif f not in excludes:
shutil.copy2(full, os.path.join(local_dir, f))


def main():
if len(sys.argv) > 1:
llvm_dir = os.path.join(os.path.abspath(sys.argv[1]))
else:
llvm_dir = default_llvm_dir
if not os.path.isdir(llvm_dir):
print(f'LLVM directory not found: {llvm_dir}', file=sys.stderr)
print(f'Usage: {sys.argv[0]} [llvm_dir]', file=sys.stderr)
sys.exit(1)
llvm_dir = get_llvm_dir()
upstream_root = os.path.join(llvm_dir, 'libcxxabi')
upstream_src = os.path.join(upstream_root, 'src')
upstream_inc = os.path.join(upstream_root, 'include')
assert os.path.exists(upstream_inc)
assert os.path.exists(upstream_src)

# Remove old version
clean_dir(local_src)
clean_dir(local_inc)
clean_dir(local_src, preserve_files)
clean_dir(local_inc, preserve_files)

copy_tree(upstream_src, local_src)
copy_tree(upstream_inc, local_inc)
copy_tree(upstream_src, local_src, excludes)
copy_tree(upstream_inc, local_inc, excludes)
shutil.copy2(os.path.join(upstream_root, 'CREDITS.TXT'), local_root)
shutil.copy2(os.path.join(upstream_root, 'LICENSE.TXT'), local_root)

Expand Down
42 changes: 7 additions & 35 deletions system/lib/update_libunwind.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
import sys
import shutil

script_dir = os.path.abspath(os.path.dirname(__file__))
emscripten_root = os.path.dirname(os.path.dirname(script_dir))
default_llvm_dir = os.path.join(os.path.dirname(emscripten_root), 'llvm-project')
from update_common import *

local_root = os.path.join(script_dir, 'libunwind')
local_src = os.path.join(local_root, 'src')
local_inc = os.path.join(local_root, 'include')
Expand All @@ -19,47 +18,20 @@
preserve_files = ()


def clean_dir(dirname):
for f in os.listdir(dirname):
if f in preserve_files or 'emscripten' in f:
continue
full = os.path.join(dirname, f)
if os.path.isdir(full):
shutil.rmtree(full)
else:
os.remove(full)


def copy_tree(upstream_dir, local_dir):
for f in os.listdir(upstream_dir):
full = os.path.join(upstream_dir, f)
if os.path.isdir(full):
shutil.copytree(full, os.path.join(local_dir, f))
elif f not in excludes:
shutil.copy2(full, os.path.join(local_dir, f))


def main():
if len(sys.argv) > 1:
llvm_dir = os.path.join(os.path.abspath(sys.argv[1]))
else:
llvm_dir = default_llvm_dir
if not os.path.isdir(llvm_dir):
print(f'LLVM directory not found: {llvm_dir}', file=sys.stderr)
print(f'Usage: {sys.argv[0]} [llvm_dir]', file=sys.stderr)
sys.exit(1)
llvm_dir = get_llvm_dir()
upstream_root = os.path.join(llvm_dir, 'libunwind')
upstream_src = os.path.join(upstream_root, 'src')
upstream_inc = os.path.join(upstream_root, 'include')
assert os.path.exists(upstream_inc)
assert os.path.exists(upstream_src)

# Remove old version
clean_dir(local_src)
clean_dir(local_inc)
clean_dir(local_src, preserve_files)
clean_dir(local_inc, preserve_files)

copy_tree(upstream_src, local_src)
copy_tree(upstream_inc, local_inc)
copy_tree(upstream_src, local_src, excludes)
copy_tree(upstream_inc, local_inc, excludes)
shutil.copy2(os.path.join(upstream_root, 'LICENSE.TXT'), local_root)


Expand Down
Loading