From 14d6a48a169ae347b11b4c609f907965624fc491 Mon Sep 17 00:00:00 2001 From: Jukka Jylanki Date: Wed, 3 May 2017 16:16:45 +0300 Subject: [PATCH] Add support for LLVM_CMAKE_ARGS environment variable to customize which flags are passed to CMake. --- README.md | 2 ++ emsdk | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/README.md b/README.md index 29cf6a3..fb69e13 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ To build one of the tagged releases from source, run the following steps: To build one of the Github branches, `emsdk install` one of the targets `sdk-incoming-64bit` or `sdk-master-64bit`. +Building Emscripten involves building LLVM with Clang from source. LLVM build configuration allows specifying a number of extra configuration fields, see here: http://llvm.org/docs/CMake.html. To build the SDK with a specific set of custom CMake parameters, run the emsdk build script with the environment variable LLVM_CMAKE_ARGS="param1=value1,param2=value2,...". For example, to use the gold linker to link the final Clang executable and to enable assertions, run the installation with the command `LLVM_CMAKE_ARGS="-DLLVM_USE_LINKER=gold,-DLLVM_ENABLE_ASSERTIONS=ON" ./emsdk install sdk-incoming-64bit`. + ### Installing emsdk directly from GitHub If you want to bootstrap to the development version of emsdk instead of the stable releases, you can do so by installing emsdk directly from github. Functionally this behaves identical to the Portable SDK. As a prerequisite on Windows, you must first manually download and install [Python](https://www.python.org) to bootstrap, and after that, run: diff --git a/emsdk b/emsdk index 59e5454..617e03c 100755 --- a/emsdk +++ b/emsdk @@ -747,6 +747,10 @@ def build_fastcomp_tool(tool): args = ['-DLLVM_TARGETS_TO_BUILD=X86;JSBackend', '-DLLVM_INCLUDE_EXAMPLES=OFF', '-DCLANG_INCLUDE_EXAMPLES=OFF', '-DLLVM_INCLUDE_TESTS=' + tests_arg, '-DCLANG_INCLUDE_TESTS=' + tests_arg, '-DLLVM_ENABLE_ASSERTIONS=' + ('ON' if enable_assertions else 'OFF')] if ENABLE_WASM: args += ['-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly'] + if os.environ.get('LLVM_CMAKE_ARGS'): + extra_args = os.environ['LLVM_CMAKE_ARGS'].split(',') + print('Passing the following extra arguments to LLVM CMake configuration: ' + str(extra_args)) + args += extra_args success = cmake_configure(cmake_generator, build_root, fastcomp_src_root, build_type, args) if not success: return False @@ -1883,6 +1887,12 @@ def main(): --enable-wasm: Enable WebAssembly support in the installed components. + To pass custom CMake directives when configuring + LLVM build, specify the environment variable + LLVM_CMAKE_ARGS="param1=value1,param2=value2" + in the environment where the build is invoked. + See README.md for details. + emsdk uninstall - Removes the given tool or SDK from disk.''') if WINDOWS: