Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -80,6 +80,14 @@ set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS}) #=============================================================================== +# Cross compiling options +#=============================================================================== +if (LIBCXX_CROSSCOMPILING) + option(LIBCXX_SYSROOT "Sysroot for cross compiling.") + option(LIBCXX_GCC_TOOLCHAIN "GCC toolchain for cross compiling.") +endif () + +#=============================================================================== # Configure System #=============================================================================== @@ -277,6 +285,13 @@ endif() endif() +# Configure cross compiling options. +append_if(LIBCXX_CXX_FLAGS LIBCXX_SYSROOT "--sysroot ${LIBCXX_SYSROOT}") +append_if(LIBCXX_CXX_FLAGS LIBCXX_GCC_TOOLCHAIN + "-gcc-toolchain ${LIBCXX_GCC_TOOLCHAIN}") +append_if(LIBCXX_CXX_FLAGS LIBCXX_CROSSCOMPILING + "-target ${LIBCXX_TARGET_TRIPLE}") + string(REPLACE ";" " " LIBCXX_CXX_FLAGS "${LIBCXX_CXX_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXX_CXX_FLAGS}") Index: test/CMakeLists.txt =================================================================== --- test/CMakeLists.txt +++ test/CMakeLists.txt @@ -23,6 +23,9 @@ set(LIT_ARGS "${LLVM_LIT_ARGS}") separate_arguments(LIT_ARGS) + option(LIBCXX_LIT_VARIANT "Configuration variant to use for LIT." "libcxx") + + pythonize_bool(LIBCXX_CROSSCOMPILING) pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS) pythonize_bool(LIBCXX_ENABLE_RTTI) pythonize_bool(LIBCXX_ENABLE_SHARED) Index: test/libcxx/test/config.py =================================================================== --- test/libcxx/test/config.py +++ test/libcxx/test/config.py @@ -296,6 +296,14 @@ # Configure extra compile flags. compile_flags_str = self.get_lit_conf('compile_flags', '') self.compile_flags += shlex.split(compile_flags_str) + if self.get_lit_conf('crosscompiling', False): + sysroot = self.get_lit_conf('sysroot') + if sysroot: + self.compile_flags += ['--sysroot', sysroot] + gcc_toolchain = self.get_lit_conf('gcc_toolchain') + if gcc_toolchain: + self.compile_flags += ['-gcc-toolchain', gcc_toolchain] + self.compile_flags += ['-target', self.config.target_triple] def configure_compile_flags_header_includes(self): self.compile_flags += ['-I' + self.libcxx_src_root + '/test/support'] Index: test/lit.site.cfg.in =================================================================== --- test/lit.site.cfg.in +++ test/lit.site.cfg.in @@ -13,6 +13,13 @@ config.cxx_abi = "@LIBCXX_CXX_ABI_LIBNAME@" config.use_sanitizer = "@LLVM_USE_SANITIZER@" config.abi_library_path = "@LIBCXX_CXX_ABI_LIBRARY_PATH@" +config.target_triple = "@LIBCXX_TARGET_TRIPLE@" +config.configuration_variant = "@LIBCXX_LIT_VARIANT@" + +config.crosscompiling = @LIBCXX_CROSSCOMPILING@ +if config.crosscompiling: + config.sysroot = "@LIBCXX_SYSROOT@" + config.gcc_toolchain = "@LIBCXX_GCC_TOOLCHAIN@" # Let the main config do the real work. lit_config.load_config(config, "@LIBCXX_SOURCE_DIR@/test/lit.cfg")