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

Side by Side Diff: fusl/BUILD.gn

Issue 1649133002: Start to fusl toolchain (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Actually works 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 unified diff | Download patch
« no previous file with comments | « build/toolchain/fusl/BUILD.gn ('k') | fusl/test/empty_main.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 # Define the sysroot directory.
6 sysroot = "$root_out_dir/sysroot"
7
5 config("fusl_config") { 8 config("fusl_config") {
6 cflags = [ 9 cflags = [
7 # Flags from musl 10 # Flags from musl
8 "-std=c99", 11 "-std=c99",
9 "-ffreestanding", 12 "-ffreestanding",
10 "-nostdinc", 13 "-nostdinc",
11 14
12 "-D_XOPEN_SOURCE=700", 15 "-D_XOPEN_SOURCE=700",
13 16
14 "-Wa,--noexecstack", 17 "-Wa,--noexecstack",
(...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 "src/unistd/unlinkat.c", 1463 "src/unistd/unlinkat.c",
1461 "src/unistd/usleep.c", 1464 "src/unistd/usleep.c",
1462 "src/unistd/write.c", 1465 "src/unistd/write.c",
1463 "src/unistd/writev.c", 1466 "src/unistd/writev.c",
1464 ] 1467 ]
1465 1468
1466 # Arch specific sources. 1469 # Arch specific sources.
1467 deps += [ ":libc_${current_cpu}" ] 1470 deps += [ ":libc_${current_cpu}" ]
1468 } 1471 }
1469 1472
1470 # Build a sysroot. 1473 static_library("libm") {
1471 sysroot = "${target_out_dir}/sysroot/" 1474 complete_static_lib = true
1472 sysroot_lib_dir = "${sysroot}/usr/lib" 1475 }
1473 sysroot_include_dir = "${sysroot}/usr/include"
1474 1476
1475 template("copy_objects") { 1477 template("copy_objects") {
1476 assert(defined(invoker.input_dir), "input_dir must be defined") 1478 assert(defined(invoker.input_dir), "input_dir must be defined")
1477 assert(defined(invoker.output_dir), "output_dir must be defined") 1479 assert(defined(invoker.output_dir), "output_dir must be defined")
1478 object_prefix = "" 1480 object_prefix = ""
1479 if (defined(invoker.object_prefix)) { 1481 if (defined(invoker.object_prefix)) {
1480 object_prefix = invoker.object_prefix 1482 object_prefix = invoker.object_prefix
1481 } 1483 }
1482 foreach(file, invoker.sources) { 1484 foreach(file, invoker.sources) {
1483 copy("copy_${file}") { 1485 copy("copy_${file}") {
(...skipping 13 matching lines...) Expand all
1497 group(target_name) { 1499 group(target_name) {
1498 deps = [ 1500 deps = [
1499 ":crt", 1501 ":crt",
1500 ] 1502 ]
1501 foreach(file, invoker.sources) { 1503 foreach(file, invoker.sources) {
1502 deps += [ ":copy_$file" ] 1504 deps += [ ":copy_$file" ]
1503 } 1505 }
1504 } 1506 }
1505 } 1507 }
1506 1508
1509 sysroot_lib_dir = "${sysroot}/usr/lib"
1510 sysroot_include_dir = "${sysroot}/usr/include"
1511
1507 copy_objects("copy_crt_objects") { 1512 copy_objects("copy_crt_objects") {
1508 sources = [ 1513 sources = [
1509 "Scrt1.o", 1514 "Scrt1.o",
1510 "crt1.o", 1515 "crt1.o",
1511 "rcrt1.o", 1516 "rcrt1.o",
1512 ] 1517 ]
1513 object_prefix = "crt." 1518 object_prefix = "crt."
1514 input_dir = "crt" 1519 input_dir = "crt"
1515 output_dir = "${sysroot_lib_dir}" 1520 output_dir = "${sysroot_lib_dir}"
1516 } 1521 }
(...skipping 24 matching lines...) Expand all
1541 if (current_cpu == "x64") { 1546 if (current_cpu == "x64") {
1542 sources = [ 1547 sources = [
1543 "arch/x86_64/bits", 1548 "arch/x86_64/bits",
1544 ] 1549 ]
1545 } 1550 }
1546 outputs = [ 1551 outputs = [
1547 "${sysroot_include_dir}/{{source_name_part}}", 1552 "${sysroot_include_dir}/{{source_name_part}}",
1548 ] 1553 ]
1549 } 1554 }
1550 1555
1551 copy("copy_libc") { 1556 copy("copy_libs") {
1552 deps = [ 1557 deps = [
1553 ":libc", 1558 ":libc",
1559 ":libm",
1554 ] 1560 ]
1555 sources = [ 1561 sources = [
1556 "${target_out_dir}/libc.a", 1562 "${target_out_dir}/libc.a",
1563 "${target_out_dir}/libm.a",
1557 ] 1564 ]
1558 outputs = [ 1565 outputs = [
1559 "${sysroot_lib_dir}/libc.a", 1566 "${sysroot_lib_dir}/{{source_name_part}}.a",
1560 ] 1567 ]
1561 } 1568 }
1562 1569
1563 group("sysroot") { 1570 group("copy_sysroot") {
1564 deps = [ 1571 deps = [
1565 ":copy_crt_objects", 1572 ":copy_crt_objects",
1566 ":copy_include", 1573 ":copy_include",
1567 ":copy_include_bits", 1574 ":copy_include_bits",
1568 ":copy_libc", 1575 ":copy_libs",
1569 ] 1576 ]
1570 if (current_cpu == "x64") { 1577 if (current_cpu == "x64") {
1571 deps += [ ":copy_crt_x64_objects" ] 1578 deps += [ ":copy_crt_x64_objects" ]
1572 } 1579 }
1573 } 1580 }
1574 1581
1575 group("fusl") { 1582 # Everything that is using the fusl sysroot has a build time
1583 # dependency against it. However, taking an explicit dependency
1584 # against it will cause crt1.o and friends to be explicitly linked
1585 # in. This is problematic, as linkers will already by default link in
1586 # the correct bits of the C runtime. By adding this no-op action, we
1587 # preserve all the build time dependencies, but prevent crt1.o
1588 # etc. from ending up in downstream targets' linker response files.
Petr Hosek 2016/01/30 00:02:56 That's what data_deps is for, no need for Python s
kulakowski 2016/01/30 00:04:45 There was some discussion in the mojo irc about th
1589 action("sysroot") {
1576 deps = [ 1590 deps = [
1577 ":crt", 1591 ":copy_sysroot",
1578 ":libc", 1592 ]
1593
1594 script = "tools/sysroot_nothing.py"
1595
1596 stamp = "$target_gen_dir/sysroot_nothing.stamp"
1597
1598 args = [ rebase_path(stamp) ]
1599
1600 outputs = [
1601 stamp,
1602 ]
1603 }
1604
1605 config("sysroot_config") {
1606 rebased_sysroot = rebase_path(sysroot)
1607
1608 cflags = [
1609 "--sysroot=$rebased_sysroot",
1610 "-fPIC",
1611 "-static",
1612 ]
1613
1614 ldflags = [ "--sysroot=$rebased_sysroot" ]
1615 }
1616
1617 executable("empty_main") {
1618 configs = []
1619 configs += [ ":sysroot_config" ]
1620
1621 sources = [
1622 "test/empty_main.c",
1623 ]
1624
1625 deps = [
1579 ":sysroot", 1626 ":sysroot",
1580 ] 1627 ]
1581 } 1628 }
1629
1630 group("fusl") {
1631 deps = [
1632 ":crt(//build/toolchain/fusl:fusl_$current_cpu)",
1633 ":empty_main(//build/toolchain/fusl:fusl_$current_cpu)",
1634 ":libc(//build/toolchain/fusl:fusl_$current_cpu)",
1635 ":sysroot(//build/toolchain/fusl:fusl_$current_cpu)",
1636 ]
1637 }
OLDNEW
« no previous file with comments | « build/toolchain/fusl/BUILD.gn ('k') | fusl/test/empty_main.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698