Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(656)

Unified Diff: fusl/BUILD.gn

Issue 1596483004: [fusl] Build libcxx atop fusl (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: rebase Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/toolchain/fusl/BUILD.gn ('k') | fusl/test/vector.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: fusl/BUILD.gn
diff --git a/fusl/BUILD.gn b/fusl/BUILD.gn
index 268f30f8b018d803974e7ce34fece1463b8242a5..f154cca8429aad75b227ecb996c0745ea2309ae3 100644
--- a/fusl/BUILD.gn
+++ b/fusl/BUILD.gn
@@ -1630,7 +1630,7 @@ action("finish_sysroot") {
outputs = [
"$target/crtbegin.o",
- "$target/crtbeginSo.o",
+ "$target/crtbeginS.o",
"$target/crtbeginT.o",
"$target/crtend.o",
"$target/crtendS.o",
@@ -1645,7 +1645,182 @@ action("finish_sysroot") {
]
}
-config("sysroot_config") {
+copy("copy_libcxx") {
+ sources = [
+ "${target_out_dir}/../third_party/libcxx/libcxx.a",
+ ]
+ outputs = [
+ "${sysroot_lib_dir}/libc++.a",
+ ]
+ deps = [
+ "//third_party/libcxx:libcxx",
+ ]
+}
+
+action("copy_libcxx_headers") {
+ script = "tools/copy_libcxx_headers.py"
+
+ deps = [
+ ":copy_sysroot",
+ ]
+
+ source_dir = "//third_party/libcxx/libcxx/include"
+
+ # Annoyingly, this has to be ".../c++/v1" for clang to automatically
+ # add it to the includes.
+ target_dir = "${sysroot_include_dir}/c++/v1"
+
+ args = [
+ rebase_path(source_dir),
+ rebase_path(target_dir),
+ ]
+
+ outputs = [
+ "${target_dir}/__bit_reference",
+ "${target_dir}/__config",
+ "${target_dir}/__config_site.in",
+ "${target_dir}/__debug",
+ "${target_dir}/__functional_03",
+ "${target_dir}/__functional_base",
+ "${target_dir}/__functional_base_03",
+ "${target_dir}/__hash_table",
+ "${target_dir}/__locale",
+ "${target_dir}/__mutex_base",
+ "${target_dir}/__nullptr",
+ "${target_dir}/__refstring",
+ "${target_dir}/__split_buffer",
+ "${target_dir}/__sso_allocator",
+ "${target_dir}/__std_stream",
+ "${target_dir}/__tree",
+ "${target_dir}/__tuple",
+ "${target_dir}/__undef___deallocate",
+ "${target_dir}/__undef_min_max",
+ "${target_dir}/algorithm",
+ "${target_dir}/array",
+ "${target_dir}/atomic",
+ "${target_dir}/bitset",
+ "${target_dir}/cassert",
+ "${target_dir}/ccomplex",
+ "${target_dir}/cctype",
+ "${target_dir}/cerrno",
+ "${target_dir}/cfenv",
+ "${target_dir}/cfloat",
+ "${target_dir}/chrono",
+ "${target_dir}/cinttypes",
+ "${target_dir}/ciso646",
+ "${target_dir}/climits",
+ "${target_dir}/clocale",
+ "${target_dir}/cmath",
+ "${target_dir}/codecvt",
+ "${target_dir}/complex",
+ "${target_dir}/complex.h",
+ "${target_dir}/condition_variable",
+ "${target_dir}/csetjmp",
+ "${target_dir}/csignal",
+ "${target_dir}/cstdarg",
+ "${target_dir}/cstdbool",
+ "${target_dir}/cstddef",
+ "${target_dir}/cstdint",
+ "${target_dir}/cstdio",
+ "${target_dir}/cstdlib",
+ "${target_dir}/cstring",
+ "${target_dir}/ctgmath",
+ "${target_dir}/ctime",
+ "${target_dir}/ctype.h",
+ "${target_dir}/cwchar",
+ "${target_dir}/cwctype",
+ "${target_dir}/deque",
+ "${target_dir}/errno.h",
+ "${target_dir}/exception",
+ "${target_dir}/experimental/__config",
+ "${target_dir}/experimental/algorithm",
+ "${target_dir}/experimental/any",
+ "${target_dir}/experimental/chrono",
+ "${target_dir}/experimental/dynarray",
+ "${target_dir}/experimental/functional",
+ "${target_dir}/experimental/optional",
+ "${target_dir}/experimental/ratio",
+ "${target_dir}/experimental/string_view",
+ "${target_dir}/experimental/system_error",
+ "${target_dir}/experimental/tuple",
+ "${target_dir}/experimental/type_traits",
+ "${target_dir}/experimental/utility",
+ "${target_dir}/ext/__hash",
+ "${target_dir}/ext/hash_map",
+ "${target_dir}/ext/hash_set",
+ "${target_dir}/float.h",
+ "${target_dir}/forward_list",
+ "${target_dir}/fstream",
+ "${target_dir}/functional",
+ "${target_dir}/future",
+ "${target_dir}/initializer_list",
+ "${target_dir}/inttypes.h",
+ "${target_dir}/iomanip",
+ "${target_dir}/ios",
+ "${target_dir}/iosfwd",
+ "${target_dir}/iostream",
+ "${target_dir}/istream",
+ "${target_dir}/iterator",
+ "${target_dir}/limits",
+ "${target_dir}/list",
+ "${target_dir}/locale",
+ "${target_dir}/map",
+ "${target_dir}/math.h",
+ "${target_dir}/memory",
+ "${target_dir}/module.modulemap",
+ "${target_dir}/mutex",
+ "${target_dir}/new",
+ "${target_dir}/numeric",
+ "${target_dir}/ostream",
+ "${target_dir}/queue",
+ "${target_dir}/random",
+ "${target_dir}/ratio",
+ "${target_dir}/regex",
+ "${target_dir}/scoped_allocator",
+ "${target_dir}/set",
+ "${target_dir}/setjmp.h",
+ "${target_dir}/shared_mutex",
+ "${target_dir}/sstream",
+ "${target_dir}/stack",
+ "${target_dir}/stddef.h",
+ "${target_dir}/stdexcept",
+ "${target_dir}/stdio.h",
+ "${target_dir}/stdlib.h",
+ "${target_dir}/streambuf",
+ "${target_dir}/string",
+ "${target_dir}/strstream",
+ "${target_dir}/support/android/locale_bionic.h",
+ "${target_dir}/support/ibm/limits.h",
+ "${target_dir}/support/ibm/support.h",
+ "${target_dir}/support/ibm/xlocale.h",
+ "${target_dir}/support/musl/xlocale.h",
+ "${target_dir}/support/newlib/xlocale.h",
+ "${target_dir}/support/solaris/floatingpoint.h",
+ "${target_dir}/support/solaris/wchar.h",
+ "${target_dir}/support/solaris/xlocale.h",
+ "${target_dir}/support/win32/limits_win32.h",
+ "${target_dir}/support/win32/locale_win32.h",
+ "${target_dir}/support/win32/math_win32.h",
+ "${target_dir}/support/win32/support.h",
+ "${target_dir}/support/xlocale/xlocale.h",
+ "${target_dir}/system_error",
+ "${target_dir}/tgmath.h",
+ "${target_dir}/thread",
+ "${target_dir}/tuple",
+ "${target_dir}/type_traits",
+ "${target_dir}/typeindex",
+ "${target_dir}/typeinfo",
+ "${target_dir}/unordered_map",
+ "${target_dir}/unordered_set",
+ "${target_dir}/utility",
+ "${target_dir}/valarray",
+ "${target_dir}/vector",
+ "${target_dir}/wchar.h",
+ "${target_dir}/wctype.h",
+ ]
+}
+
+config("fusl_sysroot_config") {
rebased_sysroot = rebase_path(sysroot)
cflags = [
@@ -1654,15 +1829,41 @@ config("sysroot_config") {
"-static",
]
+ cflags_c = [ "-std=c11" ]
+
+ cflags_cc = [
+ "-std=c++11",
+
+ # Make everyone using our libc++ headers use musl paths rather
+ # than glibc ones.
+ "-D_LIBCPP_HAS_MUSL_LIBC",
+
+ # This is necessary for clang to get the header search paths right.
+ "-stdlib=libc++",
+ ]
+
ldflags = [
"--sysroot=$rebased_sysroot",
"-static",
+ "-stdlib=libc++",
+ ]
+}
+
+config("fusl_sysroot_config_c") {
+ ldflags = [
+ # Using clang++ as the linker driver is necessary for libc++
+ # resolution to work.
+ "-nodefaultlibs",
kulakowski 2016/02/08 21:14:26 So gn really wasn't built to create C executables,
+ "-lc",
]
}
executable("empty_main") {
configs = []
- configs += [ ":sysroot_config" ]
+ configs += [
+ ":fusl_sysroot_config",
+ ":fusl_sysroot_config_c",
+ ]
sources = [
"test/empty_main.c",
@@ -1673,11 +1874,33 @@ executable("empty_main") {
]
}
+executable("vector") {
+ configs = []
+ configs += [ ":fusl_sysroot_config" ]
+
+ sources = [
+ "test/vector.cc",
+ ]
+
+ deps = [
+ ":copy_libcxx",
+ ":copy_libcxx_headers",
+ ]
+}
+
+group("fusl_pre_toolchain") {
+ deps = [
+ ":crt",
+ ":empty_main",
+ ":finish_sysroot",
+ ":libc",
+ ":vector",
+ "//third_party/libcxx:libcxx",
+ ]
+}
+
group("fusl") {
deps = [
- ":crt(//build/toolchain/fusl:fusl_$current_cpu)",
- ":empty_main(//build/toolchain/fusl:fusl_$current_cpu)",
- ":finish_sysroot(//build/toolchain/fusl:fusl_$current_cpu)",
- ":libc(//build/toolchain/fusl:fusl_$current_cpu)",
+ ":fusl_pre_toolchain(//build/toolchain/fusl:fusl_$current_cpu)",
]
}
« no previous file with comments | « build/toolchain/fusl/BUILD.gn ('k') | fusl/test/vector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698