Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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("libgcc_s") { |
|
viettrungluu
2016/02/01 21:15:55
What's this for?
kulakowski
2016/02/01 21:29:29
Will add comment.
| |
| 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" | 1476 |
| 1477 static_library("libm") { | |
|
viettrungluu
2016/02/01 21:15:55
I assume this is so "-lm" works? Could you add a c
kulakowski
2016/02/01 21:29:29
Ditto.
| |
| 1478 complete_static_lib = true | |
| 1479 } | |
| 1474 | 1480 |
| 1475 template("copy_objects") { | 1481 template("copy_objects") { |
| 1476 assert(defined(invoker.input_dir), "input_dir must be defined") | 1482 assert(defined(invoker.input_dir), "input_dir must be defined") |
| 1477 assert(defined(invoker.output_dir), "output_dir must be defined") | 1483 assert(defined(invoker.output_dir), "output_dir must be defined") |
| 1478 object_prefix = "" | 1484 object_prefix = "" |
| 1479 if (defined(invoker.object_prefix)) { | 1485 if (defined(invoker.object_prefix)) { |
| 1480 object_prefix = invoker.object_prefix | 1486 object_prefix = invoker.object_prefix |
| 1481 } | 1487 } |
| 1482 foreach(file, invoker.sources) { | 1488 foreach(file, invoker.sources) { |
| 1483 copy("copy_${file}") { | 1489 copy("copy_${file}") { |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 1497 group(target_name) { | 1503 group(target_name) { |
| 1498 deps = [ | 1504 deps = [ |
| 1499 ":crt", | 1505 ":crt", |
| 1500 ] | 1506 ] |
| 1501 foreach(file, invoker.sources) { | 1507 foreach(file, invoker.sources) { |
| 1502 deps += [ ":copy_$file" ] | 1508 deps += [ ":copy_$file" ] |
| 1503 } | 1509 } |
| 1504 } | 1510 } |
| 1505 } | 1511 } |
| 1506 | 1512 |
| 1513 sysroot_lib_dir = "${sysroot}/usr/lib" | |
| 1514 sysroot_include_dir = "${sysroot}/usr/include" | |
| 1515 | |
| 1507 copy_objects("copy_crt_objects") { | 1516 copy_objects("copy_crt_objects") { |
| 1508 sources = [ | 1517 sources = [ |
| 1509 "Scrt1.o", | 1518 "Scrt1.o", |
| 1510 "crt1.o", | 1519 "crt1.o", |
| 1511 "rcrt1.o", | 1520 "rcrt1.o", |
| 1512 ] | 1521 ] |
| 1513 object_prefix = "crt." | 1522 object_prefix = "crt." |
| 1514 input_dir = "crt" | 1523 input_dir = "crt" |
| 1515 output_dir = "${sysroot_lib_dir}" | 1524 output_dir = "${sysroot_lib_dir}" |
| 1516 } | 1525 } |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 1541 if (current_cpu == "x64") { | 1550 if (current_cpu == "x64") { |
| 1542 sources = [ | 1551 sources = [ |
| 1543 "arch/x86_64/bits", | 1552 "arch/x86_64/bits", |
| 1544 ] | 1553 ] |
| 1545 } | 1554 } |
| 1546 outputs = [ | 1555 outputs = [ |
| 1547 "${sysroot_include_dir}/{{source_name_part}}", | 1556 "${sysroot_include_dir}/{{source_name_part}}", |
| 1548 ] | 1557 ] |
| 1549 } | 1558 } |
| 1550 | 1559 |
| 1551 copy("copy_libc") { | 1560 copy("copy_libs") { |
| 1552 deps = [ | 1561 deps = [ |
| 1553 ":libc", | 1562 ":libc", |
| 1563 ":libgcc_s", | |
| 1564 ":libm", | |
| 1554 ] | 1565 ] |
| 1555 sources = [ | 1566 sources = [ |
| 1556 "${target_out_dir}/libc.a", | 1567 "${target_out_dir}/libc.a", |
| 1568 "${target_out_dir}/libgcc_s.a", | |
| 1569 "${target_out_dir}/libm.a", | |
| 1557 ] | 1570 ] |
| 1558 outputs = [ | 1571 outputs = [ |
| 1559 "${sysroot_lib_dir}/libc.a", | 1572 "${sysroot_lib_dir}/{{source_name_part}}.a", |
| 1560 ] | 1573 ] |
| 1561 } | 1574 } |
| 1562 | 1575 |
| 1563 group("sysroot") { | 1576 group("copy_sysroot") { |
| 1564 deps = [ | 1577 deps = [ |
| 1565 ":copy_crt_objects", | 1578 ":copy_crt_objects", |
| 1566 ":copy_include", | 1579 ":copy_include", |
| 1567 ":copy_include_bits", | 1580 ":copy_include_bits", |
| 1568 ":copy_libc", | 1581 ":copy_libs", |
| 1569 ] | 1582 ] |
| 1570 if (current_cpu == "x64") { | 1583 if (current_cpu == "x64") { |
| 1571 deps += [ ":copy_crt_x64_objects" ] | 1584 deps += [ ":copy_crt_x64_objects" ] |
| 1572 } | 1585 } |
| 1573 } | 1586 } |
| 1574 | 1587 |
| 1588 action("finish_sysroot") { | |
| 1589 script = "tools/populate_crt.py" | |
| 1590 | |
| 1591 clang = "//third_party/llvm-build/Release+Asserts/bin/clang" | |
| 1592 target = "$sysroot/usr/lib" | |
| 1593 | |
| 1594 args = [ | |
| 1595 rebase_path(clang), | |
| 1596 rebase_path(target), | |
| 1597 ] | |
| 1598 | |
| 1599 outputs = [ | |
| 1600 "$target/crtbegin.o", | |
| 1601 "$target/crtend.o", | |
| 1602 "$target/libgcc.a", | |
| 1603 ] | |
| 1604 | |
| 1605 deps = [ | |
| 1606 ":copy_sysroot", | |
| 1607 ] | |
| 1608 } | |
| 1609 | |
| 1610 config("sysroot_config") { | |
| 1611 rebased_sysroot = rebase_path(sysroot) | |
| 1612 | |
| 1613 cflags = [ | |
| 1614 "--sysroot=$rebased_sysroot", | |
| 1615 "-fPIC", | |
| 1616 "-static", | |
| 1617 ] | |
| 1618 | |
| 1619 ldflags = [ "--sysroot=$rebased_sysroot" ] | |
| 1620 } | |
| 1621 | |
| 1622 executable("empty_main") { | |
| 1623 configs = [] | |
| 1624 configs += [ ":sysroot_config" ] | |
| 1625 | |
| 1626 sources = [ | |
| 1627 "test/empty_main.c", | |
| 1628 ] | |
| 1629 | |
| 1630 deps = [ | |
| 1631 ":finish_sysroot", | |
| 1632 ] | |
| 1633 } | |
| 1634 | |
| 1575 group("fusl") { | 1635 group("fusl") { |
| 1576 deps = [ | 1636 deps = [ |
| 1577 ":crt", | 1637 ":crt(//build/toolchain/fusl:fusl_$current_cpu)", |
| 1578 ":libc", | 1638 ":empty_main(//build/toolchain/fusl:fusl_$current_cpu)", |
| 1579 ":sysroot", | 1639 ":finish_sysroot(//build/toolchain/fusl:fusl_$current_cpu)", |
| 1640 ":libc(//build/toolchain/fusl:fusl_$current_cpu)", | |
| 1580 ] | 1641 ] |
| 1581 } | 1642 } |
| OLD | NEW |